const int Schalter = A1;
const int LED = 12;
#define ON LOW
#define OFF HIGH
void setup() {
pinMode(Schalter, INPUT);
pinMode(LED, OUTPUT);
digitalWrite(LED, OFF);
}
void loop() {
for(byte zaehler = 0;zaehler < 3;zaehler++){
while(!digitalRead(Schalter));// Warte, solange nicht gedrueckt
while(digitalRead(Schalter));// Warte, solange gedrueckt
}
BlinkZyklus();
digitalWrite(LED, OFF);
}
void BlinkZyklus() {
byte blinkZaehler = 1;
unsigned long jetzt;
while(true){
digitalWrite(LED, ON);
jetzt = millis(); // millis() gibt die Millisekunden seit dem Programmstart zurueck
while(millis() - jetzt < 50){ // solange die aktuelle Zeit minus die Zeit gerade (= seit dem jetzt = millis(); vergangene Zeit) nidrieger ist
if(digitalRead(Schalter)){ // fals der Schalter gedrückt ist
return; // beende die Funktion und gehe zurueck zum loop
}
}
digitalWrite(LED, OFF);
jetzt = millis(); // wieder das Gleiche
while(millis() - jetzt < blinkZaehler == 3 ? 500 : 50){ // falls dieses Mal das dritte Blinken ist, warte 500ms, sonst 50
if(digitalRead(Schalter)){
return;
}
}
blinkZaehler = blinkZaehler == 3 ? 0 : blinkZaehler + 1; // falls dieses Mal das dritte Blinken mit der langen Aus-zeit ist, ist das nächste wieder nummer eins, sonst das naechste
}
}
Jetzt habe ich mal LOW und HIGH umgekehrt - klappt es so und wenn nein, wieviel klappt?