LED Kreis (12 LED´s)

Wenn Du den Code von MaFu nimmst:

byte LED_pin[12] = {2,3,4,5,6,7,8,9,10, 11, 12, 13 };  // Die digital Pins wo die LED dran sind.
byte LED_Nr;
byte LED_Last_Nr;
int potPin = 0; // Fader Eingang an A0
int val = 0;    // Variabel für Faderwert
unsigned long lastTime;


void setup()
{
  for (LED_Nr = 0; LED_Nr <= 11; LED_Nr++)
  {
    pinMode(LED_pin[LED_Nr], OUTPUT);   // Alle PINs auf Ausgang setzen
    digitalWrite(LED_pin[LED_Nr], LOW); // Alle PINs auf low setzen
  }
  LED_Nr = 0;
  LED_Last_Nr = 11;
  lastTime = millis();
}

void loop()
{
  val = analogRead(potPin); 
  if (millis() - lastTime > val)
  {
    digitalWrite(LED_pin[LED_Last_Nr], LOW);   //<-- hier wird die alte LED aus gemacht
    digitalWrite(LED_pin[LED_Nr], HIGH);          //<---- hier wird die neue LED an gemacht
                                                                 //<---- Dann sollte hier dein Ton rein
    LED_Last_Nr = LED_Nr;
    LED_Nr = ++LED_Nr % 12;
    lastTime = millis();
  }
}

Was ich noch vergessen habe:
Ich bin mir nicht sicher ob du eine “Box” einfach betreiben kannst
Wenn es wirklich ein Lautsprecher ist dann hat der 4-8 Ohm Impedanz.
Ich weiß nicht ob man den einfach an die Pins hängen kann.
Glaube nicht.

Also 4 Ohm habe ich als Box. Angeschlossen und funktioniert. Ich bearbeite den code mal...!

So sieht der Code aus, es tut was es muss. Habe zusätzlich die pitches.h aus dem Tutorial eingebaut um eine Vielfalt an Tönen zu haben. Der Code sieht folgendermaßen aus:

 #include "pitches.h"

byte LED_pin[12] = {2,3,4,5,6,7,8,9,10, 11, 12, 13 };  // Die digital Pins wo die LED dran sind.
byte LED_Nr;
byte LED_Last_Nr;
int potPin = 0; // Fader Eingang an A0
int val = 0;    // Variabel für Faderwert
unsigned long lastTime;


void setup()
{
  for (LED_Nr = 0; LED_Nr <= 11; LED_Nr++)
  {
    pinMode(LED_pin[LED_Nr], OUTPUT);   // Alle PINs auf Ausgang setzen
    digitalWrite(LED_pin[LED_Nr], LOW); // Alle PINs auf low setzen
  }
  LED_Nr = 0;
  LED_Last_Nr = 11;
  lastTime = millis();
}

void loop()
{
  val = analogRead(potPin); 
  if (millis() - lastTime > val)
  {
    digitalWrite(LED_pin[LED_Last_Nr], LOW);  //LED aus
    digitalWrite(LED_pin[LED_Nr], HIGH);      //LED an
    tone(13, NOTE_F7, 8);                            //Ton OUTPUT
    LED_Last_Nr = LED_Nr;
    LED_Nr = ++LED_Nr % 12;
    lastTime = millis();
  }
}

Und dazu eben noch die pitches.h .

Nun will ich aber das 5 LED wenn Sie aufleuchten einen anderen Ton verwenden, kann ich das irgendwie einbauen?

Welche 5 LEDs?
Du zählst mit LED_NR die LEDs durch 0 bis 11 wenn ich mich nicht irre.
Je nach dem welche Du jetzt anders haben willst mußt Du die Tonerzeugung noch mal mit einer If unterscheiden.
Z.B.
If (LED_NR<=5){
tiefer ton
}else{
hoher ton
}

oder mit
If (LED_NR % 2){} ← ich glaube das ist falsch aber so in etwa
könntest du glaube ich jede zweite Led anders klingen lassen

#include "pitches.h"

byte LED_pin[12] = {2,3,4,5,6,7,8,9,10, 11, 12, 13 };  // Die digital Pins wo die LED dran sind.
byte LED_Nr;
byte LED_Last_Nr;
int Note[12] = {NOTE_F7, NOTE_F7, NOTE_F7, NOTE_F7, NOTE_F7, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_E5, NOTE_F7, NOTE_F7};
int potPin = 0; // Fader Eingang an A0
int val = 0;    // Variabel für Faderwert
unsigned long lastTime;


void setup()
{
  for (LED_Nr = 0; LED_Nr <= 11; LED_Nr++)
  {
    pinMode(LED_pin[LED_Nr], OUTPUT);   // Alle PINs auf Ausgang setzen
    digitalWrite(LED_pin[LED_Nr], LOW); // Alle PINs auf low setzen
  }
  LED_Nr = 0;
  LED_Last_Nr = 11;
  lastTime = millis();
}

void loop()
{
  val = analogRead(potPin); 
  if (millis() - lastTime > val)
  {
    digitalWrite(LED_pin[LED_Last_Nr], LOW);  //LED aus
    digitalWrite(LED_pin[LED_Nr], HIGH);      //LED an
    tone(13, Note[LED_Nr], 8);                            //Ton OUTPUT
    LED_Last_Nr = LED_Nr;
    LED_Nr = ++LED_Nr % 12;
    lastTime = millis();
  }
}

So ist es noch flexiebler!

Ja genau so ist es perfekt.
Musste jetzt halt die LED anordnung durcheinander bringen weil ich es beim aschließen einfach durcheinander gemach habe. Aber das behebe ich dann beim finish.

Der aktuelle Code

#include "pitches.h"

byte LED_pin[12] = {7,8,9,10,11,12,13,2,3, 4, 5, 6 };  // Die digital Pins wo die LED dran sind.
byte LED_Nr;
byte LED_Last_Nr;
int Note[12] = {NOTE_F7, NOTE_CS8, NOTE_CS8, NOTE_F7, NOTE_CS8, NOTE_CS8, NOTE_F7, NOTE_CS8, NOTE_F7, NOTE_CS8, NOTE_F7, NOTE_CS8};
int potPin = 0; // Fader Eingang an A0
int val = 0;    // Variabel für Faderwert
unsigned long lastTime;


void setup()
{
  for (LED_Nr = 0; LED_Nr <= 11; LED_Nr++)
  {
    pinMode(LED_pin[LED_Nr], OUTPUT);   // Alle PINs auf Ausgang setzen
    digitalWrite(LED_pin[LED_Nr], LOW); // Alle PINs auf low setzen
  }
  LED_Nr = 0;
  LED_Last_Nr = 11;
  lastTime = millis();
}

void loop()
{
  val = analogRead(potPin); 
  if (millis() - lastTime > val)
  {
    digitalWrite(LED_pin[LED_Last_Nr], LOW);  //LED aus
    digitalWrite(LED_pin[LED_Nr], HIGH);      //LED an
    tone(53, Note[LED_Nr], 8);                            //Ton OUTPUT
    LED_Last_Nr = LED_Nr;
    LED_Nr = ++LED_Nr % 12;
    lastTime = millis();
  }
}

Jetzt muss ich aber nochmals schauen was da noch so drinne ist. Habe vor folgende Features einzubringen:

  • Variale Zählzeiten (an welcher LED angefangen wird)
  • Lautstärke der Töne regeln

Auf jedenfall mal ein Dickes Dankeschön an euch und für eure Geduld. So kann ich mir die 270 Euros sparen. Gierige Welt…

Hallo Zusammen,

habe nochmal eine Frage bezüglich Lautstärke der Box.

Ich will nen 2. Drehtpoti anschließen um die Lautstärke der ausgegebenen Töne zu regulieren, weiss aber nicht wie ich den Wert des Potis an die Lautstärke der Box koppeln kann.

Wer weisst mir wieder einmal den Weg?

Grüße AK-NAK

Da der Tone-Befehl selber keinen Lautstärkeparameter hat würde ich folgendes vorschlagen. Den Eingang des 2. Potis mit dem beim Tone-Befehl angegebenen Pin verbinden. Dessen Schleifer-Ausgang mit dem Lautsprecher verbinden und den Poti Ausgang mit GND.

:roll_eyes: ähmmm dann hab ich nen Problem. Das Case ist verschlossen. Den Poti hatte ich aber zuvor ganz normal angeschlossen. Also aufmachen und umstecken wäre für mich die mit Abstand übelste Lösung.

Ich habe ein verleimtes mit gebogenen Holzplatten versehenes Metronom gebaut. :grin:

Nunnnnn habe ich wohl ein Problem oder?

Tip: Eine Platte sollte man immer entfernbar, z.B. abschraubar, planen !