Auf und abzählen mit Switch an GPIO

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Benutzeravatar
Dennis89
User
Beiträge: 1153
Registriert: Freitag 11. Dezember 2020, 15:13

Guten Morgen,

@Sirius3 sollte dein zweite 'elif' in der Dauerschleife nicht eher nach 'PIN_RESET' abfragen?


Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Ja genau. Hoffentlich liest der OP den Code auch so gründlich.
Danoo
User
Beiträge: 14
Registriert: Dienstag 12. April 2022, 12:50

Das habe ich auch schon vermutet, Dankeschön für den Lösungsvorschlag.
Macht ja auch so mehr sinn😅.

Momentan habe ich nur die Leitungen an den Raspberry angeschlossen und führe sie zusammen damit er hochzählt.
Also müsste ich ja nur den PIN 17 mit Ground antippen damit der LEFT_PLAYER hochzählt oder?
Leider klappt es immer noch nicht, ich weiß nicht ob das damit zusammenhängt, dass die PIN Abfrage Probleme macht.
Benutzeravatar
Dennis89
User
Beiträge: 1153
Registriert: Freitag 11. Dezember 2020, 15:13

Wenn an dem Pin keine Strom anliegt ist er auf 0, legst du dann Strom an, geht er von 0 auf 1 -> steigende Flanke.
Nimmst du den Strom wieder weg, geht er von 1 auf 0 -> fallende Flanke.

Es wäre sinnvoll wenn man das zählen abhängig von den Flanken macht, schau doch noch mal in den Code, dann müsstest du erkennen was zu tun ist, damit gezählt wird.

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Danoo
User
Beiträge: 14
Registriert: Dienstag 12. April 2022, 12:50

Habe ich tatsächlich schon ausprobiert, leider zählt er nicht.
Ist das Programm nicht so geschrieben das er so lange hochzählt mit den Eingängen bis man den Reset betätigt?
Ich hatte eigentlich vorgehabt ein Scoreboard zu programmieren was die zahlen speichert bis ich den Reset betätige um alles zurückzusetzen.

Leider bin ich noch nicht so vertraut mit dem Thema und versuche es noch zu lernen.
Benutzeravatar
Dennis89
User
Beiträge: 1153
Registriert: Freitag 11. Dezember 2020, 15:13

Hallo,

ich kann einfach nicht rauslesen, was du probiert hast.
Ich weis auch nicht, wie du was an die GPIO's angeschlossen hast.

Wenn du das Programm startest und dann dafür sorgst, dass der Pin 17 mit Strom versorgt wird und danach wieder den Strom wegnimmst, dann zählt das Progrmm eins hoch. Wenn du das wiederholst dann zählt es eins weiter hoch.
Immer bei einer fallenden Flanke wird hoch gezählt. Wenn das Programm nicht hochzählt, dann würde ich ehrlich gesagt, als erstes überprüfen, ob alles richtig angeschlossen ist.

Vielleicht kannst du uns mal zeigen, wie du das angeschlossen hast?

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Danoo
User
Beiträge: 14
Registriert: Dienstag 12. April 2022, 12:50

Moin,
danke das ihr mir helft.

im YT Video sieht man hoffentlich ganz gut was mein Problem ist.
Link: https://youtu.be/Ic87grRaWFI
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das sieht nach einem Hardware-Problem aus. Die internen Pullups mit 50-60K sind nicht besonders stark, aber *eigentlich* sollten die gut genug sein. Wenn du da aber mit dem Daumen solche Stoerungen erzeugen kannst, sieht das nicht so aus.

Ohne Oszi kann man das leider nicht besser analysieren, ich wuerde aber mal probieren, einen normalen Pullup mit etwa 10KOhm oder so anzuklemmen, und dann nochmal schauen, was das macht.
Danoo
User
Beiträge: 14
Registriert: Dienstag 12. April 2022, 12:50

Danke für die Antwort, aber was soll ich mit den Widerständen ermitteln?
habe jetzt mal probehalber einen 10K widerstand an den Pin gehalten und er hat hochgezählt.
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

Du sollst die fest verbauen. Nicht irgendwie ranrödeln, natürlich zählt der dann. Pullups eben. Den Begriff kannst du ja mal recherchieren.
Danoo
User
Beiträge: 14
Registriert: Dienstag 12. April 2022, 12:50

Und da habe ich wieder etwas dazugelernt Dankeschön, ich habe jetzt am GPIO-Eingang mit einen Pulldown-Widerstand 10K Ohm gearbeitet.

Jetzt bin ich nur noch am überlegen wie ich die das Problem mit dem Rücksetzten behebe, immer wenn ich den Pin 17 auf 1 setze dann schreibt er die letzte zahl neu.

z.B.

1:8
1:9
1:9 <----- Reset
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das wurde doch hier diskutiert, dass Sirius3 hier einen Fehler gemacht hat. Hast du das gelesen?
Benutzeravatar
Dennis89
User
Beiträge: 1153
Registriert: Freitag 11. Dezember 2020, 15:13

Hast du das gelesen?
Machte den Eindruck, als ob es gelesen und verstanden wurde:
Danoo hat geschrieben: Dienstag 19. April 2022, 11:03 Das habe ich auch schon vermutet, Dankeschön für den Lösungsvorschlag.
Macht ja auch so mehr sinn😅.
Wenn nicht, @Danoo schau dir den Code und meinen Beitrag danach an.

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Danoo
User
Beiträge: 14
Registriert: Dienstag 12. April 2022, 12:50

Ups, mein Fehler... hatte das alte Programm benutzt jetzt Funktioniert alles, Dankeschön an euch alle. 🤗
Antworten