Hallo,
ich scheitere momentan daran dem Konstruktor Defaultwerte mitzugeben. Sodass man nicht bei jedem Objekt alles doppelt gemoppelt angegeben muss.
Angefangen habe ich damit.
struct t_blink
{ // was benötigt man alles für ein zeitlich begrenztes LED blinken
const byte pin_taster;
const byte pin_led;
const unsigned int interval; // Zeit für das Blinkintervall
bool state_taster; // Status LOW/HIGH des Tasters merken (gedrückt/nicht gedrückt) LOW aktiv
bool state_led; // Status LOW/HIGH der LED merken (aus/ein)
const unsigned int count; // wie oft SOLL geblinkt werden
unsigned int last_count; // Zähler wie oft schon geblinkt wurde
unsigned long last_ms; // Zeit merken für das blinken
};
t_blink blinker[] = { // Objekt blinker Array mit Initialisierung
/*
Taster-Pin,
| LED-Pin,
| | Blinkintervall,
| | | Taster Zustand default,
| | | | LED Zustand default,
| | | | | Blinkanzahl,
| | | | | | letzter count default,
| | | | | | | last millis */
{2, 28, 200, HIGH, LOW, 5, 0, 0},
{3, 29, 400, HIGH, LOW, 5, 0, 0},
{4, 30, 600, HIGH, LOW, 5, 0, 0},
{5, 31, 800, HIGH, LOW, 5, 0, 0}
};
Dann habe ich einen Konstruktor hinzugefügt.
struct t_blink
{ // was benötigt man alles für ein zeitlich begrenztes LED blinken
t_blink (byte pTASTER, byte pLED, unsigned int interv, bool sTASTER, bool sLED, unsigned int counter, unsigned int last_counter, unsigned long last_millis) :
// Initialisierungsliste
pin_taster (pTASTER),
pin_led (pLED),
interval (interv), // Zeit für das Blinkintervall
state_taster (sTASTER), // Status LOW/HIGH des Tasters merken (gedrückt/nicht gedrückt) LOW aktiv
state_led (sLED), // Status LOW/HIGH der LED merken (aus/ein)
count (counter), // wie oft SOLL geblinkt werden
last_count (last_counter), // Zähler wie oft schon geblinkt wurde
last_ms (last_millis) // Zeit merken für das blinken
{}
const byte pin_taster;
const byte pin_led;
const unsigned int interval; // Zeit für das Blinkintervall
bool state_taster; // Status LOW/HIGH des Tasters merken (gedrückt/nicht gedrückt) LOW aktiv
bool state_led; // Status LOW/HIGH der LED merken (aus/ein)
const unsigned int count; // wie oft SOLL geblinkt werden
unsigned int last_count; // Zähler wie oft schon geblinkt wurde
unsigned long last_ms; // Zeit merken für das blinken
};
t_blink blinker[] = { // Objekt blinker Array mit Initialisierung
/*
Taster-Pin,
| LED-Pin,
| | Blinkintervall,
| | | Taster Zustand default,
| | | | LED Zustand default,
| | | | | Blinkanzahl,
| | | | | | letzter count default,
| | | | | | | last millis */
{2, 28, 200, HIGH, LOW, 5, 0, 0},
{3, 29, 400, HIGH, LOW, 5, 0, 0},
{4, 30, 600, HIGH, LOW, 5, 0, 0},
{5, 31, 800, HIGH, LOW, 5, 0, 0}
};
Was ich möchte ist bei der Objekterstellung die letzten 5 Parameter weglassen wenn nicht abweichend von default.
Also so würde ich es mir wünschen.
t_blink blinker[] = { // Objekt blinker Array mit Initialisierung
/*
Taster-Pin,
| LED-Pin,
| | Blinkintervall,
| | |
{2, 28, 200},
{3, 29, 400},
{4, 30, 600, , , 88}, // hier abweichend von default
{5, 31, 800}
};
und das restliche (HIGH, LOW, 5, 0, 0) im Konstruktor als default übergeben.
Wie geht das? Ich weiß nicht weiter.