30 Taster einlesen mit i2c oder shiftRegister?

Hallo,

entprellen muß man nur digitale Eingänge wo echte Taster o.ä. angeschlossen sind.

Digitale Signale von anderen digitalen Schaltungen muß man nicht entprellen.

Wobei Achtung. Hier geht es darum das echte Taster an Porterweiterungen angeschlossen sind. Wenn man die Eingänge der vorgelagerten Porterweiterung abfragt, wird das Kontaktprellen bis zum µC 1:1 durchgereicht. Also muß man wieder entprellen.
Bsp. man fragt die Porterweiterung in loop aller 1ms ab, oder noch schneller, was der µC gerade hergibt, und der Taster prellt 30ms nach, dann zählt man in der loop womöglich geschätze 20 Signaländerungen.
Kann man doch gedanklich nachvollziehen?

Mit entsprechender Variablenübergabe sollte die Bounce2 Lib auch mit Porterweiterungen funktionieren. Mußt nur vorher, wenn Du zum Bsp. die Eingänge Byte weise eingelesen bekommst, dass Byte in Bits zerlegen.

Wegen Bounce2 Lib oder auch nicht. Hab mir das nochmal überlegt. Vielleicht kommt man besser weg, wenn man sich die Entprellroutine selbst schreibt mit der üblichen millis Methode und darin sämtliche Statusvariablen der Taster einspeichert und vergleicht. Wird zwar auch eine hohe Schreibaufwand, aber vielleicht mit weniger RAM Verbrauch. Das Grundgerüst würde die Bounce2 Lib einem abnehmen und "verstecken".

Das einzigste Problem was ich sehe, wenn man nur eine Entprellzeit für alle Taster verwendet und diese ist sehr hoch, dann kann es passieren, wenn mehrere Leute im Haus auf irgendwelche Taster drücken, nur auf den ersten Taster der gedrückt wurde reagiert wird. Dann muß man warten bis die Entprellzeit abgelaufen ist, bevor man einen anderen Taster drücken kann. Wenn man deswegen wiederum für jeden Taster eine eigene Entprellzeit verwenden möchte oder gar muß, dann kommt man vom Aufwand her mit der Bounce2 sicherlich besser und schneller zum Ziel.

weiter machen ... :wink: