Ich bastel an einem Arduino Projekt für das meine Fähigkeiten offensichtlich nicht ausreichen. Ich habe zwei Sketche die ich kombinieren möchte. Das Eine lässt LEDs in einer bestimmten Reihenfolge blinken. Das Andere erzeugt einen Ton auf einem passiven Piezo Buzzer. Jeder Sketcht einzeln für sich funktioniert. Nur kombinieren kann ich die Sketche nicht. Es liegt wohl irgendwie an dem delay.
Sketch LED
Code:
int led1 = 5;
int led2 = 7;
int led3 = 9;
int led4 = 11;
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
}
void loop()
{
//Light Status 1
digitalWrite(led4, HIGH);
digitalWrite(led1, HIGH);
delay(600);
digitalWrite(led1, LOW);
delay(600);
//Light Status 2
{digitalWrite(led2, HIGH);
delay(600);
digitalWrite(led2, LOW);
delay(600);}
//Light Status 3
{digitalWrite(led3, HIGH);
delay(600);
digitalWrite(led3, LOW);
delay(600);}
//Light Status 4
{digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
delay(600);
digitalWrite(led1, LOW);
digitalWrite(led2, LOW);
delay(600);}
//Light Status 5
{digitalWrite(led1, HIGH);
digitalWrite(led3, HIGH);
delay(600);
digitalWrite(led1, LOW);
digitalWrite(led3, LOW);
delay(600);}
//Light Status 6
{digitalWrite(led3, HIGH);
delay(600);
digitalWrite(led3, LOW);
delay(600);}
//Light Status 7
{digitalWrite(led1, HIGH);
delay(600);
digitalWrite(led1, LOW);
delay(600);}
//Light Status 8
{digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
delay(600);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
delay(600);}
//Light Status 9
{digitalWrite(led1, HIGH);
digitalWrite(led3, HIGH);
delay(600);
digitalWrite(led1, LOW);
digitalWrite(led3, LOW);
delay(600);}
}
Sketch Buzzer
Code:
int buzzer = 8; //Spezifiziert den Buzzer Pin
void setup() {
pinMode(buzzer, OUTPUT);
}
void loop() {
unsigned char i;
while (1)
{
//Frequenz 1
for (i = 0; i < 80; i++)
{
digitalWrite (buzzer, HIGH) ;
delay (1) ;
digitalWrite (buzzer, LOW) ;
delay (1) ;
}
//Frequenz 2
for (i = 0; i < 100; i++)
{
digitalWrite (buzzer, HIGH) ;
delay (2) ;
digitalWrite (buzzer, LOW) ;
delay (2) ;
}
}
}
Habe nun gelesen das ich das mit einer state machine oder yield() machen könnte. Habe jetzt zwei Tage gelesen und versucht zu verstehen. Ohne Erfolg. Offensichtlich bin ich zu dumm
Könnte mir dabei jemand helfen?