/*
003_Blinken über Klassen
*/
// Definition der Klasse
class Blinklicht
{
/*
Variablen der Klasse
LEDPin = digitaler Pin der LED
ZeitEingeschaltet = Einschaltdauer der LED
ZeitAusgeschaltet = Ausschaltdauer der LED
*/
int LEDPin;
long ZeitEingeschaltet;
long ZeitAusgeschaltet;
// Status der LED (ein/aus)
int LEDStatus;
// gesicherte Zeit, wird für die Ermittlung der Ein- und Ausschaltdauer benötigt
unsigned long gesicherteZeit;
// Konstruktor
public:
Blinklicht(int PinMummer, long einGeschaltet, long ausGeschaltet)
{
LEDPin = PinMummer;
pinMode(LEDPin, OUTPUT);
ZeitEingeschaltet = einGeschaltet;
ZeitAusgeschaltet = ausGeschaltet;
LEDStatus = LOW;
gesicherteZeit = 0;
}
void Blinken()
{
// aktuelle Zeit ermitteln
unsigned long aktuelleZeit = millis();
/*
wenn die LED eingeschaltet ist
und (&&) die Zeitdifferenz zwischen der aktuellen Zeit und der zuvor gesicherten Zeit
größer als die Einschaltdauer ist
-> LED ausschalten und aktuelle Zeit für den nächsten Durchlauf sichern
*/
if ((LEDStatus == HIGH) && (aktuelleZeit - gesicherteZeit > ZeitEingeschaltet))
{
LEDStatus = LOW;
gesicherteZeit = aktuelleZeit;
digitalWrite(LEDPin, LEDStatus);
}
/*
wenn die LED ausgeschaltet ist
und (&&) die Zeitdifferenz zwischen der aktuellen Zeit und der zuvor gesicherten Zeit
größer als die Ausschaltdauer ist
-> LED einschalten und aktuelle Zeit für den nächsten Durchlauf sichern
*/
else if ((LEDStatus == LOW) && (aktuelleZeit - gesicherteZeit > ZeitAusgeschaltet))
{
LEDStatus = HIGH;
gesicherteZeit = aktuelleZeit;
digitalWrite(LEDPin, LEDStatus); }
}
};
// neue Objekte der Klasse Blinklicht erzeugen, zwei LEDs an Pin 6 und 7
// Parameter: Pin, Dauer eingeschaltet, Dauer ausgeschaltet
Blinklicht led1(6, 100, 400);
Blinklicht led2(7, 350, 350);
void setup()
{
// bleibt leer
}
// Objekt und Methode durch . getrennt
void loop()
{
led1.Blinken();
led2.Blinken();
}