Soundsensor mit LEDs und Verzögerung

Hallo Leute,
meine Name ist Patrick und ich bin neu hier. Auch in der Arduinoszene bin ich neu :slight_smile:
Meine Idee ist es 4 LEDs im Rhythmus eines Tons leuchten zu lassen und wenn für längere Zeit kein Ton erkannt wird dann sollen die LEDs eine bestimmte zeit nachleuchten und dann erst ausgehen!!
Das leuchten synchron mit erkanntem Ton hab ich schon hinbekommen. Erst war für das nachleuchten noch ein Timer Delay Modul vorgesehen aber ich hoffe man kann es über die Arduino IDE umgehen.
Ich habe mal das Tutorial Timer ohne Delay durchgelesen und bilde mir ein das sowas mit den Befehlen möglich wäre. Habt ihr eine Idee??
Mein bisheriger Code ist für eine LED die den Soundsensor abfragt und je nachdem leuchtet.
Schon einmal vielen Dank
Gruß Patrick

int soundSensor = 2;
int LED = 3;

void setup()
{

pinMode (soundSensor, INPUT);
pinMode (LED, OUTPUT);
}

void loop()
{
int statusSensor = digitalRead (soundSensor);

if (statusSensor == 1)
{
digitalWrite(LED, HIGH);
}

else
{
digitalWrite(LED, LOW);
}

}

Also also Beispiel: LEDs sollen blinken wenn Ton erkannt wird und wenn mehr als 2 Sekunden kein Ton erkannt wird sollen die LEDs auf high/an gehen und nach 1 Minute ausgehen außer es wird wieder Ton erkannt dann soll das ganze von vorne starten.
Tut mir leid das es etwas verwirrt aber anders kann ich es nicht erklären :slight_smile:
Also der erste erkannte Ton soll den ganzen Ablauf starten. Die LEDs sollen nicht Standardmäßig an sein!!!

@noiasca Danke das schaue ich mir mal an :wink:

Boooooah ich habe mir das mal angeschaut :o
Das Prinzip verstehe ich aber es gibt meistens das Ampelsystem als Beispiel und ich habe keine Ahnung wie ich das auf meine Idee umbauen soll :((
Gibt es hier zufällig jemanden der das voll drauf hat und mir helfen kann???

Hallo
Schönes Projekt für einen Anfänger

Also ich hab das jetzt nicht ausprobiert , ist also erst Mal eine Idee. Sitze auf der Terrasse und geniesse die Sonne im Moment.
Bilnk without delay hast du verstanden , wenn ja dann verfolge Mal die Idee

Also wenn du einen Ton erkennst setzt du altzeit= millis().
Wenn du keinen Ton erkennst und der Unterscheid zwischen altzeit und millis() > 2s ist geht die Lampe an wenn er > 10 ist geht sie aus.

Ich denk so sollte das einfach gehen zum üben

Ja ich weiß das es nicht einfach ist für einen Anfänger :slight_smile:
Hab mich aber breitschlagen lassen und mache das für einen guten Kollegen!
Ok das hört sich doch schon sehr gut an. Mir fehlt der letzte schnaggler in meinem viel zu kleinen Hirn...

Hi

Welche Status hast Du denn?
1- LED aus, warte auf Ton ->2
2- LED blinkt, warte auf Ende vom Ton ->3
3- LED leuchtet, warte auf Ton ->2 oder auf Ablauf der Minute ->1

Im Status 1 wartest Du, daß Du den Ton erkennst. Wenn -> Status=2
Im Status 2 lässt Du die LED blinken (digital.write(ledpin,millis%1000>500):wink: und wartest, ob der Ton NICHT MEHR erkannt wird, Wenn -> Status 3
Im Status 3 ist die LED aus (kannst Du schon beim Übergang zum Status machen, sonst wird die LED bei jedem Durchlauf ausgeschaltet), Du wartest auf den Ton ODER den Ablauf der Wartezeit
Wenn Ton -> Status=2
Wenn Wartezeit vorbei -> Status=1

Wenn Du mehrere Sound-Sensoren (Welchen überhaupt?) mit mehreren LEDs verknüpfen willst, brauchst Du für jede Sensor-LED-Kombi eine solche State-Maschine (oder lagerst den Kram in eine Funktion/Klasse/struct müsste auch gehen) aus.

MfG

ich habe nur einen Sound-Sensor an dem 3 LEDs das gleiche machen. Es sind nur 3 das es heller wird!! Also brauche ich das nur einmal.

Habe mir jetzt erst einmal ArduBlock in der Arduino IDE installiert :wink:

Keine Chance!! Ich bekomme nicht einmal die Grundstruktur auf die Reihe :frowning:
Kann mir jemand ein Code Beispiel schicken? Das wäre sehr nett

Hi

Das Beispiel 'Blink_without_delay' wird zwei Status haben - Du brauchst wohl eher Drei.
Schreibe das Beispiel um, daß zwei Pins geschaltet werden.
Dann erweitere das Beispiel auf 3 Pins.
Jetzt solltest Du 3 Status in Deiner switch-case haben - und Das, so denke ich, brauchst Du für Deine gewünschte Funktion.

Wenn Du Probleme bekommst, her damit!
Aber 'mimimi, bekomme nichts hin, gebt mir code' wird hier eher wenig beachtet, noch weniger unterstützt.

ArduBlock habe ich hier zwar schon Mal gelesen, ist aber, meinem Empfinden nach, bestenfalls sehr rar gesäht.

MfG

Vielen Dank! So werde ich das mal versuchen. Ich wollte keinesfalls einen auf MiMiMi machen. Habe nur das Problem das mein erster Kontakt mit Arduino gleich sowas ist und am besten schon seit gestern laufen soll...

Dann dürfte das der falsche Ansatz für den ersten Kontakt sein. Ich kann Dich zwar verstehen aber Du würdest Dir selbst einen großen Gefallen tun, wenn Du zuerst ein paar Grundlagen lernst.
Das hilft Dir auch beim konkreteren Stellen von Fragen und beim Verstehen der Antworten im Forum.

Gruß Tommy

Ich gelobe Besserung und versuche mich in die Grundlagen einzuarbeiten!!
Vielen Dank an alle für die Antworten und einen schönen Abend.
Gruß Patrick

Hallo zusammen,
ich habe es jetzt endlich erfolgreich hinbekommen mit einem kleinen Zustandsautomat Sketch :wink:
Jetzt steige ich da endlich etwas durch!
Danke für alle Antworten und das ihr so
stur geblieben seit und mir nicht alles vorgekaut habt :slight_smile:
Viele Grüße
Zeppe

Es wäre gut, wenn Du zum Abschluss Deinen Sketch noch veröffentlichst.

Gruß Tommy

Mache ich natürlich sehr gerne!! Bin nur leider nicht am Rechner sondern nur am Smartphone. Werde es aber zeitnah machen!!

Wie versprochen der Sketch!
Als Erklärung: Der Soundsensor wartet auf Sound, wenn Sound da dann leuchten die LEDs im Takt des Sounds, wenn kein Sound mehr da dann wartet der Soundsensor 5 Sekunden ob neuer Sound kommt ansonsten leuchten alle LEDs (in dem Fall nur eine) für die eingestellte Minute außer es kommt neuer Sound dann geht das Spiel von vorne los. Wird während der Minute kein neuer Sound erkannt dann gehen die LEDs ganz normal aus und der Soundsensor wartet bis neuer Sound reinkommt :wink:
Ich hoffe man versteht es :slight_smile:
Jetzt suche ich nur noch den passenden Transistor für meine Power LEDs. Der erste zum testen war schon der falsche also heißt es weitersuchen :slight_smile:
Viele Grüße

Sound_LEDs.ino (1.56 KB)

Zeppe:
Wie versprochen der Sketch!

Vorschlag für kosmetische Verbesserungen:

const byte soundSensor = 2;
const byte LED = 3;
enum {WARTEN, SOUND, LICHT};

void setup()
{
  pinMode (soundSensor, INPUT_PULLUP);
  pinMode (LED, OUTPUT);
  digitalWrite(LED, LOW); // nicht notwendig, da Standard
}

void loop()
{
  static byte step = WARTEN;
  static unsigned long timestamp = 0;
  bool sensorstatus = digitalRead(soundSensor);
  switch (step)
  {
    case WARTEN: //listen
      if (sensorstatus) //if sound 1st time
      {
        digitalWrite(LED, HIGH); //LED on
        timestamp = millis(); //save timestamp
        step = SOUND;
      }
      else //no sound
      {
        digitalWrite(LED, LOW); //LED off
      }
      break;

    case SOUND:
      if (sensorstatus) //if sound again
      {
        digitalWrite(LED, HIGH); //LED on
        timestamp = millis(); //save timestamp
      }
      else //no more sound
      {
        digitalWrite(LED, LOW); //LED off
        if ( (millis() - timestamp) > 5000) //if time between last sound and no sound anymore > 5000ms, turn on LEDs
        {
          digitalWrite(LED, HIGH); //LED on
          timestamp = millis(); //save time for 60s
          step = LICHT;
        }
      }
      break;

    case LICHT:
      if (sensorstatus) //sound again, start again
      {
        step = WARTEN;
      }
      else
      {
        if ( (millis() - timestamp) > 60000) //no sound anymore, wait for 60s
        {
          digitalWrite(LED, LOW); //if expired, set LED off
          step = WARTEN;
        }
      }
      break;
  }
}

Zeppe:
Jetzt suche ich nur noch den passenden Transistor für meine Power LEDs. Der erste zum testen war schon der falsche also heißt es weitersuchen :slight_smile:

Da könntest Du in diesem Forum möglicherweise Unterstützung erfahren.

Oh Danke für den Vorschlag!! Schaue ich mir gleich mal genauer an!! Ja ich hab mal einen Mosfet N-Channel dazwischen geklemmt und komischerweise kommen nur 110 mA an der LED an. Die LEDs vertragen anscheinend 700 mA pro Stück und ich wollte schon so 200-500 pro LED drauf haben...
Nur die Mosfet Varianten sind so viele wie es Handyverträge auf der Welt gibt und ich Check kaum durch.