/*********************************************************
*************** Taster mit Entprellung **************
******* Unterscheidung kurz oder lang gedrückt **********
**********************************************************/
unsigned long taster0millis =0;
bool taster0read = false; // Taster auslesen
bool taster0onKurz = false; // Taster kurz gedrückt
bool taster0onLong = false; // Taster Lang gedrückt
bool switch0Kurz = false; // Ausführen wenn kurz gedrückt
bool switch0Long =false; // Ausführen wenn lang gedrückt
void setup() {
pinMode(6,INPUT_PULLUP); //Taster
pinMode(7, OUTPUT); //LED1 (rot)
pinMode(8, OUTPUT); //LED2 (blau)
}
void loop() {
taster0read = digitalRead(6); //taster0read ist false wenn gedrückt (Pin6 gegen GND)
if (taster0read == true) { //solange taster nicht gedrückt wird sind Millis immer taster-millis
taster0millis = millis(); // bei dedrückt bleiben taster-millis stehen
}
// tasterOn wird true wenn taster gedrückt & tasterOn false & mindestens 20mSek vergangen sind
if (taster0read == false && taster0onKurz == false && taster0onLong ==false && millis() - taster0millis > 20) {
taster0onKurz = true;
}
if (taster0read == false && taster0onLong == false && millis() - taster0millis > 500) {
taster0onLong = true;
taster0onKurz = false;
}
// wenn die taste losgelassen wird & tasterOn true ist wird switch0 umgeschaltet - true/false
if (taster0read == true && taster0onKurz == true) {
taster0onKurz = false;
switch0Kurz = !switch0Kurz; // beim loslassen vom Taster wird der zustand vom relais gewechselt
} //ende If Taster true
if (taster0read == true && taster0onLong == true) {
taster0onLong = false;
switch0Long = !switch0Long; // beim loslassen vom Taster wird der zustand vom relais gewechselt
}
if(switch0Kurz==true){
digitalWrite(7,true);
}else{digitalWrite(7,false);}
if(switch0Long==true){
digitalWrite(8,true);
}else{digitalWrite(8,false);}
}