Skocz do zawartości

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


adamgl

Pomocna odpowiedź

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
 

Link do komentarza
Share on other sites

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

Link do komentarza
Share on other sites

@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ć.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

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)

 

Link do komentarza
Share on other sites

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.

Link do komentarza
Share on other sites

@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. 

Link do komentarza
Share on other sites

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 .... 

 

 

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.