fad3.ino


/* 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);
      }
    }
  }
}