Hallo,
es ist ja schon angesprochen worden , du solltest dich noch mal mit dem Thema beschäftigen wie der Taster anzuschliessen ist. Es gibt da zwei Möglichkeiten. Bei beiden Varianten ist darauf zu achten das der Eingang nicht offen in der Luft rumhängt, sondern immer einen definierten Pegel hat. Da ein normaler Taster halt einen Kontakt hat ist der im nicht gedrückten Zustand ja geöffent.
1. Taster mit einem Bein an +5V , das andere Bein am Eingang. Dann ist ein zusätzlicher Pulldown Widerstand erforderlich,(2-10KOhm) Ein Bein ebenfalls am Eingang das andere an GND. Damit hat der Eingang bei offenem Taster 0V über den Widerstand anliegen und bei geschlossenen Taster +5V. Im Sketch dann pinMode(pin,INPUT) verwenden. siehe
link.
2. Taster mit einem Bein am Eingang , das andere Bein an GND angeschlossen. Damit der Pegel des Einganges bei offenen Taster nicht irgendwo in der Luft hängt ist ein Pullup Widerstand erforderlich. Dazu ist im Controller bereits einer eingebaut den man allerdings noch einschalten muß. Dazu im Sketch pinMode(pin,INPUT_PULLUP) verwenden. Bei dieser Variante ist dann allerdings die Funktion invertiert.Bei geöffnetem Taster ist der Eingang H, und bei gerücktem Taster ist der Eingang L. Damit die Logik dann wieder stimmt verwendet man eine Hilfsvariable und ließt den Eingang dann invertiert ein. siehe Beispiel.
Du verwendest in Deinem Sketch delay() um die Zeitverzögerung zu machen. Das kannst Du grundsätzlich machen. Allerdings solltest Du bedenken das bei einem delay() der Programmablauf eine Pause macht und da gewartet wird bist die Zeit abgelaufen ist. Damit passiert nichts mehr, Du kannst nicht mal erkennen ob inzwischen der Taster wieder offen wurde. Wenn Du dann z.B zwei Taster unabhängig voneinander bearbeiten willst , oder eine LED soll z.B blinken, geht das gar nicht auf diese Art. Man verwendet dazu besser millis().
Du solltst dir das Beispiel"BlinkWithoutDelay" ansehen und verstehen. Wenns mit dem Verstehen nicht gleich so klappen will dann suche nach "Nachtwächter".
So jetzt noch das Beispiel zu Thema Taster einlesen.
const byte butonpin=2; // Taster schaltet nach GND
const byte led=13;
bool butonstat; // Hilfsvariable
void setup() {
pinMode(butonpin,INPUT_PULLUP); // interner Pullup ein
pinMode(led,OUTPUT);
}
void loop() {
//butonstat=digitalRead(butonpin); // nicht invertiert
butonstat=!digitalRead(butonpin); // invertiert
digitalWrite(led,butonstat);
}