Hallo,
ich hab viele Einträge gelesen, komm aber nicht weiter.
Ich möchte beim einschalten einer roten bzw. gelben LED unterschiedliche Beep-Muster ausgeben. Dazu habe ich zwei Arrays definiert:
uint16_t timeBeepYellow[4] = {200,100,200,100};
uint16_t timeBeepRed[6] = {200,200,200,200,200,200};
Nach Schalten der LED rufe ich eine Beep-Funktion:
void updateDisplay(){
// Steuern der LEDs auf Grund der Eingaben
Serial.printf("Status in Kommunikation: %1d / %1d / %1d \n\n", incomingStatus.green, incomingStatus.yellow, incomingStatus.red);
if (incomingStatus.yellow) {
digitalWrite(pinLEDyellow, HIGH);
beep(timeBeepYellow);
} else {
digitalWrite(pinLEDyellow, LOW);
}
if (incomingStatus.red) {
digitalWrite(pinLEDred, HIGH);
beep(timeBeepRed);
} else {
digitalWrite(pinLEDred, LOW);
}
}
In der Beep-Funktion, möchte ich das definierte Muster ausgeben:
void beep(uint16_t *t) {
Serial.print("Das Beep-Array: ");
for( int i=0; i < sizeof(t); i++) {
Serial.printf("%3d",t[i]);
}
Serial.println();
for( int i=0; i < sizeof(t); i++) {
digitalWrite(pinBeep, HIGH);
delay(t[i]);
i++;
digitalWrite(pinBeep, LOW);
delay(t[i]);
}
}
Es werden aber immer nur 2 Beeps ausgegeben.
Die Kontrollausgabe zu Beginn der Beepfunktion zeigt mir, dass zwar das richtige Array übergeben wurde, es kommen aber immer nur 4 Elemente an??
Was mach ich falsch, bzw. warum ist das so.
Wie kann ich erreichen, dass es bei rot 3x beept?
Gruß Udo