2. Es soll sowohl beim Drücken des Tasters, als auch beim Loslassen entprellt werden.
Warum ist dein Code nicht einfach symmetrisch?
1->0 behandelst du anders als 0->1
Und beim Einschalten ist endezeit irgendwas altes, was dafür sorgt, dass tastenspeicherstatus = 0 bleibt.
Das hab ich nicht verstanden.
3. Es soll jeweils genau der Zeitpunkt des Drückens, bzw. des Loslassens für das auslösen von Funktionen verwendet werden können.
Kurze Stör-Pulse oder Aussetzer willst du also nicht unterdrücken, die sollen auf die Entprellzeit verlängert werden. Das ist schon OK, sollte dir nur klar sein.
Zum Komprimieren: Mit nur einer unsigned long schaltzeit statt separater start- und endezeit brauchst du statt 10 byte RAM nur 6.
taster und led sind natürlich
const.
Und noch ein Tipp:
millis()>startzeit+10ist was anderes als
millis()-startzeit > 10(Zugegeben, nur ganz exotisch, wenn millis() gerade überläuft, und dann behebt sich das "Problem" bei dir kurze Zeit später von allein, aber man kann es sich ja gleich richtig angewöhnen )