Skocz do zawartości

Problem z przyciskami, które sam się wzbudzają


Pomocna odpowiedź

Napisano

Siemanderko,

Słuchajcie mam taki problem z RPI gdyż :

Mam podłączone 6 przycisków typu "reset" do maliny na zwarcie do masy ale jest jeden cholerny problem gdyż mi się one same wzubudzają tzn, nawet jak dotknę gołą ręką pinu na GPIO to soft wykrywa jak naciśnięcie przycisku, dodatkowo niedaleko tych przewodów od przycisków przechodzi przewód od głośnika który także powoduje wzbudzanie przycisków mimo tego że przewody oraz kabel głośnikowy owinąłem już folia aluminiową. Walczę z tym od tygodnia i nie mogę zwalczyć .... próbowałem już różnych rozwiązań , dodawałem rezystory między masą a przyciskiem od 100 ohm do 100K i dalej reaguje , nawet jak dotykam przez rezystor pinu gpio wykrywa jak naciśnięcie .... może pomożecie ?

Pozdro
AG
 

@adamgl witam na forum 🙂 Dla formalności dopytam - robiłeś poprawny rezystor pull-up, czyli dodawałeś opornik między GPIO, a Vcc, a nie np. między przycisk, a Vcc (zostawiają GPIO wiszący w powietrzu)? To jakiś Twój program czy gotowiec?

1 minutę temu, Treker napisał:

@adamgl witam na forum 🙂 Dla formalności dopytam - robiłeś poprawny rezystor pull-up, czyli dodawałeś opornik między GPIO, a Vcc, a nie np. między przycisk, a Vcc (zostawiają GPIO wiszący w powietrzu)? To jakiś Twój program czy gotowiec?

Hej, mam jeden rezystor 10K podłączony do masy i przez niego wszystkie przyciski do GPIO ...  

rpi.jpg

@adamgl to nie jest pull-up 😞 Podłącz przyciski bezpośrednio do masy, a osobne rezystory (np. 10k) wepnij między GPIO, a Vcc. Tutaj znajdziesz przykładowy schemat rezystora pull-up. Oczywiście jest też szansa, że da się włączyć rezystory programowo, ale niestety, pomimo pytania, nic nie napisałeś o użytym programie, więc ciężko coś tu doradzić.

Hej, poniżej moje wypociny.

import RPi.GPIO as GPIO
import time
import os

GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(17,GPIO.IN)
S1_MP1 = 5
S2_MP2 = 6
S3_MP3 = 23
S4_MP4 = 24
S5_MP5 = 26
S6_MP6 = 16
S7_MP7 = 22

GPIO.setup(S1_MP1,GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(S2_MP2,GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(S3_MP3,GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(S4_MP4,GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(S5_MP5,GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(S6_MP6,GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
GPIO.setup(S7_MP7,GPIO.IN, pull_up_down=GPIO.PUD_DOWN)

countTrack1 = 1
countTrack2 = 1
countTrack3 = 1
countTrack4 = 1
countTrack5 = 1
countTrack6 = 1
countTrack7 = 1

os.system("sudo amixer set PCM -- 100%")

os.system("mpg123 /home/pi/MP3/welcome.mp3 &")

while True:
    if GPIO.input(S1_MP1):
        
        countTrack2 = 1
        countTrack3 = 1
    countTrack4 = 1
    countTrack5 = 1
    countTrack6 = 1
    countTrack7 = 1

        os.system("sudo kill -9 $(pgrep mpg123)")
        if countTrack1 == 1:
        countTrack1 += 1
        os.system("mpg123 /home/pi/MP3/PL/1.mp3 &")
        #print "track1 PL"
        time.sleep(0.5)
    elif countTrack1 == 2:
        countTrack1 += 1
                os.system("mpg123 /home/pi/MP3/EN/1.mp3 &")
        #print "track1 EN"
        time.sleep(0.5)
    elif countTrack1 == 3:
        countTrack1 += 1
                os.system("mpg123 /home/pi/MP3/DE/1.mp3 &")
        #print "track1 DE"
            time.sleep(0.5)
    if countTrack1 == 4:
        countTrack1 = 1
        time.sleep(0.15)
    if GPIO.input(S2_MP2):
        countTrack1 = 1
        countTrack3 = 1
        countTrack4 = 1
        countTrack5 = 1
        countTrack6 = 1
        countTrack7 = 1

        os.system("sudo kill -9 $(pgrep mpg123)")
        if countTrack2 == 1:
                countTrack2 += 1
                os.system("mpg123 /home/pi/MP3/PL/2.mp3 &")
                #print "track1 PL"
                time.sleep(0.5)
        elif countTrack2 == 2:
                countTrack2 += 1
                os.system("mpg123 /home/pi/MP3/EN/2.mp3 &")
                #print "track1 EN"
                time.sleep(0.5)
        elif countTrack2 == 3:
                countTrack2 += 1
                os.system("mpg123 /home/pi/MP3/DE/2.mp3 &")
                #print "track1 DE"
                time.sleep(0.5)
        if countTrack2 == 2:
                countTrack2 = 1
        time.sleep(0.5)
    if GPIO.input(S3_MP3):
        countTrack1 = 1
        countTrack2 = 1
        countTrack4 = 1
        countTrack5 = 1
        countTrack6 = 1
        countTrack7 = 1

        os.system("sudo kill -9 $(pgrep mpg123)")
        if countTrack3 == 1:
                countTrack3 += 1
                os.system("mpg123 /home/pi/MP3/PL/3.mp3 &")
                #print "track1 PL"
                time.sleep(0.5)
        elif countTrack3 == 2:
                countTrack3 += 1
                os.system("mpg123 /home/pi/MP3/EN/3.mp3 &")
                #print "track1 EN"
                time.sleep(0.5)
        elif countTrack3 == 3:
                countTrack3 += 1
                os.system("mpg123 /home/pi/MP3/DE/3.mp3 &")
                #print "track1 DE"
                time.sleep(0.5)
        if countTrack3 == 2:
                countTrack3 = 1
        time.sleep(0.5)
    if GPIO.input(S4_MP4):
        countTrack1 = 1
        countTrack2 = 1
        countTrack3 = 1
        countTrack5 = 1
        countTrack6 = 1
        countTrack7 = 1

        os.system("sudo kill -9 $(pgrep mpg123)")
        if countTrack4 == 1:
                countTrack4 += 1
                os.system("sudo mpg123 /home/pi/MP3/PL/4.mp3 &")
                #print "track1 PL"
                time.sleep(0.5)
        elif countTrack4 == 2:
                countTrack4 += 1
                os.system("sudo mpg123 /home/pi/MP3/EN/4.mp3 &")
                #print "track1 EN"
                time.sleep(0.5)
        elif countTrack4 == 3:
                countTrack4 += 1
                os.system("sudo mpg123 /home/pi/MP3/DE/4.mp3 &")
                #print "track1 DE"
                time.sleep(0.5)
        if countTrack4 == 2:
                countTrack4 = 1
        time.sleep(0.5)
    if GPIO.input(S5_MP5):
        countTrack1 = 1
        countTrack2 = 1
        countTrack3 = 1
        countTrack4 = 1
        countTrack6 = 1
        countTrack7 = 1

        os.system("sudo kill -9 $(pgrep mpg123)")
        if countTrack5 == 1:
                countTrack5 += 1
                os.system("sudo mpg123 /home/pi/MP3/PL/5.mp3 &")
                #print "track1 PL"
                time.sleep(0.5)
        elif countTrack5 == 2:
                countTrack5 += 1
                os.system("sudo mpg123 /home/pi/MP3/EN/5.mp3 &")
                #print "track1 EN"
                time.sleep(0.5)
        elif countTrack5 == 3:
                countTrack5 += 1
                os.system("sudo mpg123 /home/pi/MP3/DE/5.mp3 &")
                #print "track1 DE"
                time.sleep(0.5)
        if countTrack5 == 2:
                countTrack5 = 1
        time.sleep(0.5)
    if GPIO.input(S6_MP6):
        countTrack1 = 1
        countTrack2 = 1
        countTrack3 = 1
        countTrack4 = 1
        countTrack5 = 1
        countTrack7 = 1

        os.system("sudo kill -9 $(pgrep mpg123)")
        if countTrack6 == 1:
                countTrack6 += 1
                os.system("sudo mpg123 /home/pi/MP3/PL/6.mp3 &")
                #print "track1 PL"
                time.sleep(0.5)
        elif countTrack6 == 2:
                countTrack6 += 1
                os.system("sudo mpg123 /home/pi/MP3/EN/6.mp3 &")
                #print "track1 EN"
                time.sleep(0.5)
        elif countTrack6 == 3:
                countTrack6 += 1
                os.system("sudo mpg123 /home/pi/MP3/DE/6.mp3 &")
                #print "track1 DE"
                time.sleep(0.5)
        if countTrack6 == 2:
                countTrack6 = 1
        time.sleep(0.5)
    if GPIO.input(S7_MP7):
        countTrack1 = 1
        countTrack2 = 1
        countTrack3 = 1
        countTrack4 = 1
        countTrack5 = 1
        countTrack6 = 1

        os.system("sudo kill -9 $(pgrep mpg123)")
        if countTrack7 == 1:
                countTrack7 += 1
                os.system("sudo mpg123 /home/pi/MP3/PL/7.mp3 &")
                #print "track1 PL"
                time.sleep(0.5)
        elif countTrack7 == 2:
                countTrack7 += 1
                os.system("sudo mpg123 /home/pi/MP3/EN/7.mp3 &")
                #print "track1 EN"
                time.sleep(0.5)
        elif countTrack7 == 3:
                countTrack7 += 1
                os.system("sudo mpg123 /home/pi/MP3/DE/7.mp3 &")
                #print "track1 DE"
                time.sleep(0.5)
        if countTrack7 == 2:
                countTrack7 = 1
        time.sleep(0.5)

 

Dnia 30.01.2020 o 06:05, Treker napisał:

@adamgl w programie ustawiasz pull-down, zmień na pull-up i sprawdź czy działa poprawnie. Tutaj masz pokazane jak to zmienić i sprawdzić: https://sourceforge.net/p/raspberry-gpio-python/wiki/Inputs/

Więc niestety nic z tych rzeczy nie pomogło.

Jedyna dobra rzecz to transoptory 🙂 pomogło , Dzięki Sebastianowi 🙂

Więc jak komuś się będą wzbudzały przyciski np przez za długi przewód to tylko transoptory są rozwiązaniem.

@adamgl cieszę się, że zadziałało, ale to dość podejrzane, że jedynym rozwiązaniem są transoptory 🙂 Odpowiednio podłączony rezystor podciągający powinien zrobić swoje. 

1 godzinę temu, Treker napisał:

@adamgl cieszę się, że zadziałało, ale to dość podejrzane, że jedynym rozwiązaniem są transoptory 🙂 Odpowiednio podłączony rezystor podciągający powinien zrobić swoje. 

Dobierałem od 220 ohm do ponad 50K nic nie dawało ...  skrypt ustawiałem albo zwieranie na + albo na -  , oczywiście działało ale przy dłuższych przewodach lipa a w szczególności jak w jednym obok przewodów do przycisków szedł przewód od głośnika , wtedy już robiła się masakra ... wzbudzało za każdym razem jak było głośniej . Ekranowanie przewodu nawet nic nie dawało .... 

 

 

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...