Wie wäre dein Prinzip um meherer Kontakte gleichzeitig auf Zustandsänderung, Entprellung und neuem Zustand (ohne delay) zu überprüfen?

Hierbei wird bei jedem loop-Durchlauf,
1. auf Zustandsänderung geprüft; if((KontZustNeu = digitalRead(KontPin)) == EntprellStatus) return 3;
2. wenn sich der Kontaktzustand ändert, wird das bei jedem loop-Durchlauf neu geprüft
3. sollte sich der Kontaktzustand innerhalb von 5ms ändern, wird die Startzeit resetet
4. sollten dann >=5ms keine Zustandänderungen passieren, wird je nach Zustand 0(LOW) oder 1(HIGH) zurück gegeben.
5. und das für beliebig viele Kontakte und ohne delay()

PS: Entprellzeit = 5ms ist eine globale Variable und als Beispiel zu verstehen