hey,
ich kenne mich nur mit den grundkenntnissen für das schreiben einer melody für einen sketch aus...
ist es möglich 3 verschidene melodien für drei verschieden variablen über ein piezo element in einem sketch zu spielen?
wenn ja wie?
hier ist mein sketch:
int button = 11;
int x = 0;
int ledPin = 6;
void setup (){
pinMode(button, INPUT);
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
ledPin == LOW;
}
void loop(){
button = digitalRead(11);
if ( button == HIGH){
delay(1000);
x ++;
Serial.print(x);
Serial.print("\n");
}
else{
delay(1);
x = 1;
}
if ( x == 2){
button = digitalRead(11);
if ( button == LOW){
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(10);
x = 1;
if ( x == 5){
button = digitalRead(11);
if ( button == LOW){
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(10);
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(10);
x = 1;
}
}
if ( x == 10){
button = digitalRead(11);
if ( button == LOW){
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(10);
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(10);
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(10);
x = 1;
}
}
else if (x < 5 );{
digitalWrite(ledPin, LOW);
if (x == 11){
x = 1;
}
}
}
}
}
Elegant wäre es vielleicht auch, für jede Melodie ein array zu definieren, das die Töne als Integer-Variablen enthält und das jeweilige array dann einer zentralen Funktion, die nur für das Abspielen der Melodie zuständig ist, zu übergeben. Auf Seite 67 dieses (sehr empfehlenswerten) Tutorials gibt es ein Beispiel, das in diese Richtung geht:
Liess im Tutorial Auf Seite 42 ist z.B. zu lesen, wie man ein Array deklariert bzw. initialisiert, auf Seite 58 siehst Du ein Beispiel einer Funktion mit Parameter-Übergabe. Ein bisschen programmieren lernen muss man schon, aber das macht ja auch Spaß