Entprellen mittels Hardware
Der Vorteil von Entprellung mittels Hardware ist ganz klar, dass man den Button, im Programm, wie bisher gewohnt über digitalRead(button) auslesen kann. Um einen Button zu entprellen verwendet man einen Kondensator.
Der Kondensator sollte eine Kapazität von ca. 10 Mikrofarad haben. Wenn er zu groß ist, bleibt der Button auch, nachdem man ihn losgelassen hat, kurze Zeit auf LOW, und wenn er zu klein ist, ist der Entprelleffekt sehr gering. Der Nachteil vom Entprellen mittels eines Kondensators ist logischerweise, dass man für jeden Button zusätzlich einen Kondensator benötigt. Aus diesem Grund wird Hardware Entprellung eigentlich nur verwendet, wenn Software Entprellung nicht möglich ist.
Entprellen mittels Software
Beim Entprellen mittels Software wird im wesentlichen bei jeder Änderung des Status des Buttons nach einer gewissen Zeit wieder überprüft, ob er immer noch den selben Status hat. Wenn der Button also für länger, als eine definierte Zeit x, LOW oder HIGH war, so wird das als aktueller Status des Buttons übernommen und die gewünschten Befehle ausgeführt.
Wenn der Button also für länger als eine definierte Zeit x, LOW oder HIGH war, so wird das als aktueller Status des Buttons übernommen und die gewünschten Befehle ausgeführt.
Wie man sieht, erfordert das Entprellen von Buttons mittels Software einen wesentlich komplizierteren Code, als das digitalRead() bei der Hardware Entprellung.
Eine "light Variante" wäre es immer den Status des Buttons überprüfen zu lassen und sobald er sich ändert über delay(60); zu warten und ihn danach nochmal zu prüfen. Der Nachteil hierbei wäre jedoch, dass man delay() benutzt, was das Programm an sich aufhält. Außerdem kann man delay nicht in Interrupts verwenden.
Wenn der Button also für länger als eine definierte Zeit x, LOW oder HIGH war, so wird das als aktueller Status des Buttons übernommen und die gewünschten Befehle ausgeführt.
Wie man sieht, erfordert das Entprellen von Buttons mittels Software einen wesentlich komplizierteren Code, als das digitalRead() bei der Hardware Entprellung.
Eine "light Variante" wäre es immer den Status des Buttons überprüfen zu lassen und sobald er sich ändert über delay(60); zu warten und ihn danach nochmal zu prüfen. Der Nachteil hierbei wäre jedoch, dass man delay() benutzt, was das Programm an sich aufhält. Außerdem kann man delay nicht in Interrupts verwenden.
Keine Kommentare:
Kommentar veröffentlichen
Mit dem Veröffentlichen eines Kommentars erklären Sie sich mit unserer Datenschutzerklärung einverstanden.
https://michaelsarduino.blogspot.de/p/datenschutzerklarung.html