/* Beispiel 3
zwei Led mit Taster auf/ ab faden
verwendet millis()
*/
const byte LedRot = 5; // Pin für LED
const byte LedGruen = 6;
const byte btnRot = 7; // taster schalten gegen OV
const byte btnGruen = 8;
byte hellRot, hellGruen;;
byte fadstep = 10;
uint32_t delaytime = 50;
uint32_t altzeitRot, altzeitGruen; // zeitspeicher letzte aktion
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(btnRot, INPUT_PULLUP);
pinMode(btnGruen, INPUT_PULLUP);
}
void loop() {
//---------- Teil für die Rote LED
if (digitalRead(btnRot) == 0) { // wenn Taster gedrückt
if (millis() - altzeitRot >= delaytime) { // abfrage Zeit um
altzeitRot = millis(); // aktuelle zeit merken
if (hellRot + fadstep <= 255 ) { // max noch nicht erreicht
hellRot = hellRot + fadstep; // erhöhen
analogWrite(LedRot, hellRot); // LED ansteuern
}
}
}
else {
if (millis() - altzeitRot >= delaytime) {
altzeitRot = millis();
if (hellRot - fadstep >= 0 ) { // min noch nicht erreicht
hellRot = hellRot - fadstep;
analogWrite(LedRot, hellRot);
}
}
}
// -------------Teil für die Grüne LED
if (digitalRead(btnGruen) == 0) { // wenn gedrückt
if (millis() - altzeitGruen >= delaytime) { // Abfrage Zeit um
altzeitGruen = millis(); // aktuelle Zeit merken
if (hellGruen + fadstep <= 255 ) { // Abfrage max
hellGruen = hellGruen + fadstep; // neuen Wert berechnen
analogWrite(LedGruen, hellGruen); // LED ansteuern
}
}
}
else {
if (hellGruen - fadstep >= 0 ) {
if (millis() - altzeitGruen >= delaytime) {
altzeitGruen = millis();
hellGruen = hellGruen - fadstep;
analogWrite(LedGruen, hellGruen);
}
}
}
}