Go Down

Topic: Soundsensor mit LEDs und Verzögerung (Read 1 time) previous topic - next topic

Zeppe

Hallo Leute,
meine Name ist Patrick und ich bin neu hier. Auch in der Arduinoszene bin ich neu :)
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);
 }
 
}

noiasca

BlinkWithoutDelay ist ein guter Startpunkt wie du bereits rausgefunden hast. Was ist deine konkrete Frage nun?
how to react on postings:
- post helped: provide your final sketch, say thank you & give karma.
- post not understood: Ask as long as you understand the post
- post is off topic (or you think it is): Stay to your topic. Ask again.
- else: Ask again.

Zeppe

#2
Sep 12, 2018, 03:25 pm Last Edit: Sep 12, 2018, 03:29 pm by Zeppe
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 :)
Also der erste erkannte Ton soll den ganzen Ablauf starten. Die LEDs sollen nicht Standardmäßig an sein!!!

noiasca

Such nach Statemachine - genau das brauchst.
how to react on postings:
- post helped: provide your final sketch, say thank you & give karma.
- post not understood: Ask as long as you understand the post
- post is off topic (or you think it is): Stay to your topic. Ask again.
- else: Ask again.

Zeppe

@noiasca Danke das schaue ich mir mal an ;)

Zeppe

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???

noiasca

Da musst du durch. Du hast im Prinzip ja auch nur eine Ampel. Nur nicht rot gelb grün als status.
how to react on postings:
- post helped: provide your final sketch, say thank you & give karma.
- post not understood: Ask as long as you understand the post
- post is off topic (or you think it is): Stay to your topic. Ask again.
- else: Ask again.

Rentner

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

Zeppe

Ja ich weiß das es nicht einfach ist für einen Anfänger :)
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...

postmaster-ino

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);) 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
anscheinend ist Es nicht erwünscht, einen Foren-internen Link als 'Homepage' einzubinden, damit JEDER nur einen Klick von combie's Liste zum Thema State-Maschine entfernt ist.
... dann eben nicht ...

Zeppe

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.

Zeppe

Habe mir jetzt erst einmal ArduBlock in der Arduino IDE installiert ;)

Zeppe

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

postmaster-ino

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
anscheinend ist Es nicht erwünscht, einen Foren-internen Link als 'Homepage' einzubinden, damit JEDER nur einen Klick von combie's Liste zum Thema State-Maschine entfernt ist.
... dann eben nicht ...

Zeppe

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...

Go Up