Hallo zusammen,
ich habe einen Sketch erstellt, welcher zwei Eingaben möglichst schnell erfassen soll.
Einmal wird ein Bewegungsmelder, das andere mal ein Taster ausgelesen.
Alles erfolgt über interrupts, in welchen der entsprechende boolean gesetzt wird. Die eigentliche ISR wird dann in der loop-Schleife ausgeführt. Der Bewegungsmelder und der Taster sind beide durch einen eigenen 10k Ohm Pulldown-Widerstand auf GND geschalten.
Hier mein Problem:
Die ISR des Tasters wird zufällig mehrmals, in unregelmäßigen Abständen, ausgeführt. Die ISR des Bewegungsmelders ist auch total wirr. Nun frage ich mich, was hier der wahrscheinlichste Fehler ist, ich bin mit meinem Latein langsam am Ende. Vielen Dank für jede Hilfe!
Im englischen Teil des Forum müssen die Beiträge und Diskussionen in englischer Sprache verfasst werden. Deswegen wurde diese Diskussion in den deutschen Teil des Forums verschoben.
Der Taster wurde nie gedrückt, deswegen wundert much das mit dem Prelle ein wenig. Deswegen hab ich allem voran einen Delay von 5 Sekunden eingebaut. Hab mir erhofft, das so irgendwie umschiffen zu können.
Hallo Tommy,
meine beiden PullDown-Widerstände sind nach dem Taster auf GND geschalten. Der Schaltdraht läuft selbstverständlich auf den entsprechenden Pin.
Ein Bild sagt mehr als tausend Worte. Aus deinen Worten kann ich nicht entnehmen, was da wie angeschlossen ist. Zeichne bitte ein Schaltbild ( handschriftlich auf Papier und abfotografiert reicht ) wie Du deine Peripherie angeschlossen hast.
Sorry, unsauber formuliert...
Wenn ich die beiden Eingänge mit einem kleinen extra Sketch auslese und nur digitalRead() verwende, und über den seriellen Monitor auslese, dann scheint alles so zu funktionieren, wie es soll.
Teste ich das ganze dann allerdings ohne Rechner mit anderer Spannungsquelle geben mir die Ereignisse (in meinem Sketch Aktion 1 und Aktion 2) Anlass zu denken, dass hier scheinbar nicht alles in Ordnung ist. Die Aktionen prasseln unkontrolliert herein...
Meine Idee dahinter war, dass ich die Aktion nur einmal ausführen will, deswegen bin ich auf die Idee mit der steigenden Flanke gekommen. Also wenn man den Taster z.B. 5 Sekunden drückt, meine "Aktion 1" nicht wiederholt ausgeführt wird. Könnte man sowas mit einer neuen Variablen lösen, mit der man sozusagen nach einmaligem Betätigen einen Counter laufen lässt, der die Aktion dann für n Sekunden sperrt? Das würde dann vermutlich auch ein mögliches Prellproblem lösen, oder?