Zwei Blinkklassen, wobei die eine von der anderen erbt, allerdings nur die Intervallzeit verändert wird. Mir fiel grad nichts Spannenderes ein. Das Programm basiert auf #75. Der Compiler ist zufrieden, die LEDs blinken, hilft es auch diesem Thema? Zumindest ist es etwas simpler gestrickt als das Beispiel von combie. Fehler sind möglich.
class Blink {
protected:
byte pin;
bool zustand;
uint32_t aktMillis, intervallMillis;
public:
Blink (byte _pin, uint32_t _intervallMillis) {
pin = _pin;
zustand = LOW;
aktMillis = 0;
intervallMillis = _intervallMillis;
pinMode(pin, OUTPUT);
digitalWrite(pin, zustand);
}
void blinke() {
if (millis() - aktMillis >= intervallMillis) {
aktMillis = millis();
zustand = !zustand;
digitalWrite(pin, zustand);
}
}
};
class Blink2 : public Blink {
uint32_t intervall;
bool zustand;
uint32_t aktMillis;
public:
Blink2(byte _pin, uint32_t _intervallMillis): Blink(_pin, _intervallMillis) {
intervall = _intervallMillis * 10;
pinMode(pin, OUTPUT);
digitalWrite(pin, zustand);
}
void blinke2() {
if (millis() - aktMillis >= intervall) {
aktMillis = millis();
zustand = !zustand;
digitalWrite(pin, zustand);
}
}
};
Blink led1( 13, 500 );
Blink2 led2( 8, 115 );
void setup() {
}
void loop() {
led1.blinke();
led2.blinke2();
}