// Einmal kurz drücken LM2576 in Betrieb nochmals kurz drücken LM2576 nicht in Betrieb
// Untere LED Programmwahl. Einmal doppeldrücken LED hell Kurvenfunktion wieder doppeldrücken
// dreimal drücken zweimal blinken
//Multifunktionanwendung Taste 1 und Taste 2 sollten unabhänging sein
int ledPinONOFF = 13;
int buttonPin = 3; //Taster "buttonPin" an Pin 2 angeschlossen
int ledPin = 12; //LED "ledPin" an Pin 13 angeschlossen
//Variablen des Zwischenspeichers:
int buttonPushCounter = 0; //Zählt Tastendrücke
int buttonPushCounterONOFF=0;
int buttonState = 0; //Aktueller Tastenstatus
int buttonStateONOFF = 0;
int lastButtonState = 0; //Vorheriger Tastenstatus
int lastButtonStateONOFF = 0;
unsigned long previousMillis = 0; //Speichert vergangene Zeit
const long interval = 500; //Intervall wo Tasterdrücke registriert wurden
int ledState=LOW;
int ledStateONOFF=LOW;
//**********************************************SETUP********************************************
void setup() {
pinMode(buttonPin, INPUT_PULLUP);
pinMode(ledPin, OUTPUT);
buttonState = digitalRead(buttonPin);
}
//******************************************LOOP***********************************************
void loop() {
//--------------------------------------------------------------------------------------
unsigned long currentMillis = millis(); //Zählt Millisekunden
buttonState = digitalRead(buttonPin); //Taster an buttonPin wird gelesen und in Zwischenspeicher buttonState gespeichert
//---------------------------------------------------------------------------------------
//*****-----*****************************************
lastButtonState=buttonState;
buttonState=digitalRead(buttonPin);
lastButtonStateONOFF=buttonStateONOFF;
//****------********************************************
//--------------------------------------------------------------------------------------
if (buttonState != lastButtonState) { //Wenn buttonState nicht gleich lastButtonState, dann...
if (buttonState == LOW) { //Wenn buttonState gleich gedrückt, dann...
buttonPushCounter ++; //buttonPushCounter +1
lastButtonState = buttonState; //Speichert buttonState in lastButtonState
previousMillis = currentMillis; //Speichere jetzige Millisekunden in previousMillis
delay(10);
}
else {
lastButtonState = buttonState;
}
}
if (buttonStateONOFF != lastButtonStateONOFF) { //Wenn buttonState nicht gleich lastButtonState, dann...
if (buttonStateONOFF == LOW) { //Wenn buttonState gleich gedrückt, dann...
buttonPushCounterONOFF ++; //buttonPushCounter +1
lastButtonStateONOFF = buttonStateONOFF; //Speichert buttonState in lastButtonState
previousMillis = currentMillis; //Speichere jetzige Millisekunden in previousMillis
delay(10);
}
else {
lastButtonStateONOFF = buttonStateONOFF;
}
}
if (currentMillis - previousMillis >= interval && buttonState == lastButtonState) { //Wenn gezählte Millisekunden minus vorherige Millisekunden (gespeicherte, vergangene Zeit) grösser/gleich interval ist und buttonState gleich lastButtonState ist, dann...
if(buttonPushCounter == 2){
ledStateONOFF=!ledStateONOFF;
digitalWrite(ledPinONOFF,ledStateONOFF);
delay(150);
}
//Taster wird 1 Mal gedrückt:
if (buttonPushCounter == 4 && ledStateONOFF==LOW ) { //Wenn buttonPushCounter gleich 1 und LM2576 geschaltet..
ledState=!ledState;
digitalWrite(ledPin,ledState);
delay(150);
//digitalWrite(ledPin, HIGH); //Schalte ledPin an. Nur Impuls
//delay(200);
//digitalWrite(ledPin, LOW);
}
//Taster wird 2 Mal gedrückt:
if (buttonPushCounter == 6) { //Wenn buttonPushCounter gleich 2, dann...
digitalWrite(ledPin, HIGH); //Schalte ledPin an
delay(200);
digitalWrite(ledPin, LOW);
delay(200);
digitalWrite(ledPin, HIGH);
delay(200);
digitalWrite(ledPin, LOW);
}
buttonPushCounter = 0; //Setze buttonPushCounter auf 0
}
//-------------------------------------------------------------------------------------------
}