Wenn der Taster beim Drücken auf Low gezogen wird und Du auf das Low reagieren willst, ist es auch sinnvoll, in den Funktionen
(mit X= 1..8 )Code:void btnX_Changed(int state)-Funktionen
auf LOW zu prüfen
Code:if (state == LOW)
Wenn der Taster beim Drücken auf Low gezogen wird und Du auf das Low reagieren willst, ist es auch sinnvoll, in den Funktionen
(mit X= 1..8 )Code:void btnX_Changed(int state)-Funktionen
auf LOW zu prüfen
Code:if (state == LOW)
Danke für die Antwort und Korrektur, werde das heute Nachmittag ausprobieren
In diesem Fall bleibt es bei den PullUp-Widerständen. Das heisst, es liegt im Ruhezustand der Schaltung über diese PullUp-Widerstände zunächst immer HIGH an den Eingängen des Arduino an. Mit if (state == LOW) reagiert der ATMEL bzw. der Sketch auf die fallende Flanke.
Frage für mich zum Verständnis: Würde es dasselbe Resultat ergeben, wenn ich den Sketch so belasse, wie er ursprünglich war if (state == HIGH) , dafür aber die Widerstände beschalte als PullDown? Dadurch würde an den Eingängen im Ruhezustand zunächst immer LOW, und erst bei Tasterbetätigung HIGH anliegen. Das würde dem ursprünglichen Sketch und meinem Anliegen auch entsprechen, oder?
Also entweder PullUp und if (state == LOW) , oder PullDown und if (state == HIGH) ?
Andi
Zuerst einmal, bitte Code immer in Codetags schreiben, so wie es bei Holomino ist. Dadurch wird der Post lesbarer/übersichtlicher.
Bei diesem Code reagierst du mit dem "if (state=...)" auf eine Flanke sondern auf einen Zustand.
Ich weiß nicht welche Funktion du gerne hättest.
Abfrage mit "if (state=...)" reagierst du auf einen Zustand. Bei jedem Durchlauf des Programms wird der Status geprüft und angesprungen.
Bedeutet das jedes mal bei einem Low (wenn auf state==low geprüft wird) den jeweiligen Ausgang setzt.
Wenn du auf eine Flanke reagieren möchtest, benötigst du den aktuellen und den letzten Zustand. Die Flanke dauert genau einen Programmdurchlauf.
Hier in Pseudocode:
Zu deiner FrageCode:if (Status_aktuell==low && Status_alt==high) { Programm wird ausgeführt wenn fallende Flanke } Status_alt = Status_aktuell
Du kannst im Programm das high gegen ein low oder den Widerstand und den Taster tauschen. Ich verwende häufig (eigentlich immer wenn nötig) die internen Widerstände. Dadruch prüfe ich auf Low-Zustand.
MfG Hannes
Danke für die Antwort.
Betreffs "...immer in Codetags schreiben..." Ich weiss nicht, wie das gemacht wird (sorry)
Andi
Das geht etwa so.
1) Code (z.B. copy&paste) in das Editor-Fenster einfügen.
......Bild hier
Text markieren (drüber streifen mit gedrückter Maustaste), dann auf den "Lattenzaun" oben in der Werkzeug(kiste)leiste klicken; siehe oben | Code einfügen [CODE] |
......Bild hier
Danach abspeichern - oder mal ansehen. Sieht so aus:
......Bild hier
OK ? War das verständlich ?
Ciao sagt der JoeamBerg
Danke für die Antwort. Mit "Lattenzaun" meinst Du sicher die Raute? #
Hab es getestet, funktioniert jetzt wie gewünscht. Vielen Dank nochmals an Holomino für den Hinweis/Korrektur!
Andi
Lesezeichen