/* Beispiel 5
zwei Led mit Taster auf/ ab faden
mit Verwendung einer Classe und dem Aufruf einer
Methode daraus.
*/
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 fadstep = 10;
byte delaytime = 50;
bool statrot, statgruen; // Status der Eingänge
class Fade { // classe fade
private:
uint32_t _altzeit;
byte _hell;
public:
byte fade(bool ein) { // die Methode
if (ein) {
if (millis() - _altzeit >= delaytime) {
_altzeit = millis(); // aktuelle zeit merken
if (_hell + fadstep <= 255 ) { // max noch nicht erreicht
_hell = _hell + fadstep; // erhöhen
}
}
}
else {
if (millis() - _altzeit >= delaytime) {
_altzeit = millis();
if (_hell - fadstep >= 0 ) { // min noch nicht erreicht
_hell = _hell - fadstep;
}
}
}
return _hell;
}
};// Achtung Das Semikolon ist hier wichtig
Fade LEDrot, LEDgruen;// zwei Objekte erzeugen
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(btnRot, INPUT_PULLUP);
pinMode(btnGruen, INPUT_PULLUP);
}
void loop() {
// put your main code here, to run repeatedly:
statrot = !digitalRead(btnRot); //Eingang einlesen
byte wert = LEDrot.fade(statrot); // objekt mit methode aufrufen
analogWrite(LedRot, wert); // Ergebniss ausgeben
//statgruen = !digitalRead(btnGruen);
//wert = LEDgruen.fade(statgruen);
//analogWrite(LedGruen, wert);
// oder alles zusammen in einer Zeile
analogWrite(LedGruen,LEDgruen.fade(!digitalRead(btnGruen)));
}