Pages: [1]   Go Down
Author Topic: Klatschsensor - Auslösen erst nach bestimmter Anzahl von Geräuschen  (Read 781 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 43
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo,

ich habe mir einen Klatschschalter nach folgendem Vorbild gebaut:
http://itp.nyu.edu/physcomp/sensors/Reports/CondenserMicrophones

Funktioniert auch alles soweit, jedoch möchte ich die Funktion etwas abändern: und zwar soll beim ersten Geräusch ein Ausgang auf HIGH geschaltet werden, und beim 2. Geräusch ein zweiter Ausgang.

Hier mal der Code, wie er momentan funktioniert.

Code:
   
const int mikroIN = A4;     // Mikrofon
int mikroValue = 0; 
mikroValue = analogRead(mikroIN);

 lcd.setCursor(13,0);
    lcd.print(mikroValue);
   
    lcd.setCursor(0,1);
    lcd.print("[ms]:");
    lcd.setCursor(7,1);
    lcd.print(soundverzoegerung);
    lcd.setCursor(13,1);
    lcd.print(schwelle);

    if(mikroValue >= schwelle)
    {
      delay(soundverzoegerung);
      lcd.setCursor(3,0);
      lcd.print("--SOUND--");
      if (einaus == 1)
      {
        digitalWrite(optoflash, HIGH);
        delay(100);
        digitalWrite(optoflash,LOW);
        delay(5000);
      }
      else
      {
        digitalWrite(optoflash,LOW);
        delay(1000);
      }
      lcd.clear();
    }
    else
    {
      digitalWrite(optoflash,LOW);
      lcd.setCursor(5,0);
      lcd.print("READY");
    }

Nun habe ich folgendes ergänzt/probiert:

Code:
int count = 0;

    if(mikroValue >= schwelle)

{
count++;
}

switch(count)
{
case 0:
//Ready-Anzeige auf dem LCD
break;

case 1:
digitalWrite(Ausgang1,HIGH);
delay(100);
digitalWrite(Ausgang1,LOW);
break;


case 2:
//Code der bereits oben steht
count=0;
break;

}

}

Irgendwie will das aber nicht. Ich hatte auch probiert mir den aktuellen Zustand von Count auf dem LCD anzeigen zu lassen, jedoch hat es nie übereingestimmt. Habe ich was mit count++ falsch gemacht, oder wieso will er zwischen den 3 Fällen bei jedem Klatschen nicht wechseln?

Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 236
Posts: 20285
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich würde nicht count bei jedem Durchgang erhöhen falls das Geräusch immernoch vorhanden ist.
Ich würde cont nur 1 mal erhöhen, wenn das Signal aus dem/der Mikrophon/Signalverabeitung über dem Schwellwert liegt. Dann muß es wieder unter den Schwellwert + Hysterese gehen um wieder um 1 erhöht zu werden wenn das Signal wieder größer wird.
Versuch keine delay()s zu verwenden sondern die Pausen mit millis zu verwirklichen.

Wenn Du möchtest, daß wir Deinen Kode kontrollieren, dann gib uns bitte den vollständigen Kode und nicht Teile davon oder Teile die Du verändet / hinzugefügt hast.

Grüße Uwe
Logged

Pages: [1]   Go Up
Jump to: