Tonleiter, Theremin, Ultraschall, aber keine LEDs?

Hallo!
Ich habe ein Problem, bzw. komme leider aufgrund meiner beschränkten Anfänger kenntnisse nicht weiter...

Kurz mein Plan.... ich möchte eine Tonleiter abspielen mit 10 Tönen, dazu soll jeweils eine LED brennen und die Töne möchte ich mit einem Ultraschallsensor steuern.

Hier mein bisheriger Code:

int btnPin = 11;
int buzzerPin = 10;
int echoPin = 12;
int initPin = 13;

unsigned long distance = 0;

void setup()
{
pinMode(buzzerPin, OUTPUT); //set speaker pin to output
pinMode(btnPin, INPUT); //set pushbutton pin to input
pinMode(initPin, OUTPUT); // set init pin 3 as output
pinMode(echoPin, INPUT); // set echo pin 2 as input
Serial.begin(9600);
}

void loop()
{
digitalWrite(initPin, HIGH);
delayMicroseconds(10);
digitalWrite(initPin, LOW);
distance = (pulseIn(echoPin, HIGH)/58);
if(digitalRead(btnPin) == HIGH) //only play when the button is pressed
{
if(distance < 4)
tone(10,262);

else if(distance > 5 && distance < 9)
tone(10,294);

else if(distance > 10 && distance < 14)
tone(10,330);

else if(distance > 15 && distance < 19)
tone(10,349);

else if(distance > 20 && distance < 24)
tone(10,392);

else if(distance > 25 && distance < 29)
tone(10,440);

else if(distance > 30 && distance < 34)
tone(10,494);

else if(distance > 35 && distance < 39)
tone(10,523);

else if(distance > 40 && distance < 44)
tone(10,587);

else if(distance > 45 && distance < 49)
tone(10,659);

else //nix trifft zu;
noTone(10);
delay(50);
}
else
noTone(10);
}

im Grunde funktionieren die Töne so wie ich möchte. Mein Problem ist es jetzt nur wie bekomme ich dei LEDs zum jeweiligen Ton? Sprich 10 Töne = 10 LEDs, jeder Ton bekommt eine andere. Bin um jeden Tipp oder Hinweis dankbar. Franz

Statt

else if(distance > 5 && distance < 9)
                   tone(10,294);

schreibst Du:

else if(distance > 5 && distance < 9)
{
   digitalWrite(led1,HIGH);                
   tone(10,294);
   digitalWrite(led1,LOW);         
}

Grüße Uwe

else if(distance > 5 && distance < 9) {
tone(10,294);
digital.Write(LEDpin1,HIGH);
}

else if(distance > 10 && distance < 14)
tone(10,330);

Damit du die anschalten kannst du musst dich nur noch entscheiden zu welchem Zeitpunkt du die LED ausschalten willst mit digitalWrite(LEDpin1,LOW);

Okay super... das klappt erstmal danke für die Tip`s . Ein Problem gibt es zudem noch... also ich habe die LEDs auf den Digitalpins 0 - 9 gelegt. Pin 10 die Audioklinke Pin 11 der Button bin 12 und 13 sind für den Ultraschall sensor belegt. Meine LED auf pin 0 und 1 arbeiten nicht richtig mit... led auf bin 1 leuchtet zb immer. Auf den Board steht bei den pins auch TX und RX drauf. Wieso gehen diese Pins nicht wirklich? Wie kann ich das Problem beheben?

hiernochmal mein Code zur besseren vorstellung

// Arduino Theremin mit LED

// Deklaration
int btnPin = 11; // Button
int buzzerPin = 10; // Klinkenstecker
int echoPin = 12; // Echo Pulse Ultraschall
int initPin = 13; // Trigger Pulse Ultraschall
int led0 = 0; // LEDs 1,2 ,3 usw.
int led1 = 1;
int led2 = 2;
int led3 = 3;
int led4 = 4;
int led5 = 5;
int led6 = 6;
int led7 = 7;
int led8 = 8;
int led9 = 9;

unsigned long distance = 0;

void setup()
{
pinMode(buzzerPin, OUTPUT); // Klinkenstecker = Ausgabe
pinMode(led0,OUTPUT); // LED`s = Ausgabe 1,2,3 usw.
pinMode(led1,OUTPUT);
pinMode(led2,OUTPUT);
pinMode(led3,OUTPUT);
pinMode(led4,OUTPUT);
pinMode(led5,OUTPUT);
pinMode(led6,OUTPUT);
pinMode(led7,OUTPUT);
pinMode(led8,OUTPUT);
pinMode(led9,OUTPUT);
pinMode(btnPin,INPUT); // Button = Eingabe
pinMode(initPin,OUTPUT); // Tigger Pulse = Auslöser/ Ausgabe
pinMode(echoPin, INPUT); // Echo Pulse = Empfang/ Eingabe
}

void loop()
{
digitalWrite(initPin, HIGH); // Ultraschallimpuls auslösen
digitalWrite(initPin, LOW); // Ultraschallimpuls stoppen
delayMicroseconds(10); // Vorgang aller 10 Microsekunden wiederholen

distance = (pulseIn(echoPin, HIGH)/58); // Umrechnung von Zeit zwischen Empfang zum Senden in eine Distanz/Entfernung

if(digitalRead(btnPin) == HIGH) // Aktion nur durchführen wenn Knopf gedrückt ist

{if(distance < 4) // Aktion nur durchführen wenn die Distanz/ Entfernung unter Wert 4 ist
{
digitalWrite(led0,HIGH); // Nur die LED 0 zum leuchten bringen, alle anderen bleiben aus
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
digitalWrite(led5,LOW);
digitalWrite(led6,LOW);
digitalWrite(led7,LOW);
digitalWrite(led8,LOW);
digitalWrite(led9,LOW);

tone(10,262); // sende Tonsignal auf bin Pin 10 ( Klinkenstecker), in einer frequenz von 262 Hertz = C Note
}

else if(distance > 5 && distance < 9) // ( Wenn der Wert für Distanz über 4 ist, dann) wiederholt sich auf die jeweiligen Distanzen mit verschiedenen LED´s und Noten
{
digitalWrite(led0,LOW);
digitalWrite(led1,HIGH);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
digitalWrite(led5,LOW);
digitalWrite(led6,LOW);
digitalWrite(led7,LOW);
digitalWrite(led8,LOW);
digitalWrite(led9,LOW);

tone(10,294);
}

else if(distance > 10 && distance < 14)
{
digitalWrite(led0,LOW);
digitalWrite(led1,LOW);
digitalWrite(led2,HIGH);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
digitalWrite(led5,LOW);
digitalWrite(led6,LOW);
digitalWrite(led7,LOW);
digitalWrite(led8,LOW);
digitalWrite(led9,LOW);

tone(10,330);

}

else if(distance > 15 && distance < 19)
{
digitalWrite(led0,LOW);
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,HIGH);
digitalWrite(led4,LOW);
digitalWrite(led5,LOW);
digitalWrite(led6,LOW);
digitalWrite(led7,LOW);
digitalWrite(led8,LOW);
digitalWrite(led9,LOW);

tone(10,349);
}

else if(distance > 20 && distance < 24)
{
digitalWrite(led0,LOW);
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,HIGH);
digitalWrite(led5,LOW);
digitalWrite(led6,LOW);
digitalWrite(led7,LOW);
digitalWrite(led8,LOW);
digitalWrite(led9,LOW);

tone(10,392);
}

else if(distance > 25 && distance < 29)
{
digitalWrite(led0,LOW);
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
digitalWrite(led5,HIGH);
digitalWrite(led6,LOW);
digitalWrite(led7,LOW);
digitalWrite(led8,LOW);
digitalWrite(led9,LOW);

tone(10,440);
}

else if(distance > 30 && distance < 34)
{
digitalWrite(led0,LOW);
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
digitalWrite(led5,LOW);
digitalWrite(led6,HIGH);
digitalWrite(led7,LOW);
digitalWrite(led8,LOW);
digitalWrite(led9,LOW);

tone(10,494);
}

else if(distance > 35 && distance < 39)
{
digitalWrite(led0,LOW);
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
digitalWrite(led5,LOW);
digitalWrite(led6,LOW);
digitalWrite(led7,HIGH);
digitalWrite(led8,LOW);
digitalWrite(led9,LOW);

tone(10,523);
}

else if(distance > 40 && distance < 44)
{
digitalWrite(led0,LOW);
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
digitalWrite(led5,LOW);
digitalWrite(led6,LOW);
digitalWrite(led7,LOW);
digitalWrite(led8,HIGH);
digitalWrite(led9,LOW);

tone(10,587);
}

else if(distance > 45 && distance < 49)
{
digitalWrite(led0,LOW);
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
digitalWrite(led5,LOW);
digitalWrite(led6,LOW);
digitalWrite(led7,LOW);
digitalWrite(led8,LOW);
digitalWrite(led9,HIGH);

tone(10,659);
}

else if(distance > 49 && distance < 100)
{
digitalWrite(led0,LOW);
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
digitalWrite(led5,LOW);
digitalWrite(led6,LOW);
digitalWrite(led7,LOW);
digitalWrite(led8,LOW);
digitalWrite(led9,LOW);

noTone(10);
}

else // Falls Distanz über 100

noTone(10); // spiele keinen Ton
delay(50); // Wiederhole den Vorgang nach 50 Milisekunden
}

else // Falls kein Knopf gedrückt wird
{
digitalWrite(led0,LOW); // keine LED`s leuchten
digitalWrite(led1,LOW);
digitalWrite(led2,LOW);
digitalWrite(led3,LOW);
digitalWrite(led4,LOW);
digitalWrite(led5,LOW);
digitalWrite(led6,LOW);
digitalWrite(led7,LOW);
digitalWrite(led8,LOW);
digitalWrite(led9,LOW);

noTone(10); // spiele keinen Ton
}
}

Franz1989:
Meine LED auf pin 0 und 1 arbeiten nicht richtig mit... led auf bin 1 leuchtet zb immer. Auf den Board steht bei den pins auch TX und RX drauf. Wieso gehen diese Pins nicht wirklich? Wie kann ich das Problem beheben?

TX und RX sind mit dem Seriell-USB interface Baustein Verbunden.
Benutze stattdessen 2 Analoge Eingänge als Digitale Ausgänge A= ist D14, A1 ist D15 ecc.
Grüße Uwe

Wie ist der befehl dafür?
einfach in der Deklaration A = D14 eingaben und
A1= D15 oder wie? und dann die kabel umstecken? sorry für die nooby fragen

Für A0 als digitalen Ausgang bzw Eingang:
pinMode(14,OUTPUT);
pinMode(14,INPUT);
Grüße Uwe