Soundsensor

Guten Nachmittag allerseits. Ich habe hier eine Schaltung wo verschiedene Aufgaben darstellt mit einfachen Sensoren. Die erste zwei Aufgaben funktionieren auch ganz gut, die 1. Aufgabe währe ein Distanzmesser und und die zweite ein Lichtsesnsor ein LCD-Display erklärt dir die Aufgaben die du machen musst. Jetzt wollte ich aber noch eine dritte Aufgabe hinten dran hängen bei der man Klatschen muss.
Habe die Schaltung für das Klatschen mit einem Soundsensor aus dem Internet. https://drive.google.com/file/d/0B27c2BryUv06WEtUci1pNk9OMlU/view
Einzeln hab ich dass auch getestet und es funktioniert auch jetzt wollte ich eben ,mit dem alten Programm zusammen fügen (2 Aufgaben).
Aber der Soundsensor spinnt irgendwie rum und macht nicht dass was er soll hier meine lange Schaltung:

#include <LiquidCrystal.h>
#include "SR04.h"0.
#define TRIG_PIN 3
#define ECHO_PIN 2

int buttonpin = 6;
int LED3 = 13;
int clap = 0;
long detection_range_start = 0;
long detection_range = 0;
boolean status_lights = false;
SR04 sr04 = SR04(ECHO_PIN, TRIG_PIN);
long a;
int LED1 = 4;
int LED2 = 5;
int Wert = 0;
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

void setup() {
  lcd.begin(16, 2);
  Serial.begin(9600);
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(buttonpin, INPUT);
  pinMode(LED3, OUTPUT);
}
void loop() {

  lcd.setCursor(3, 0);
  lcd.print("Geocaching");
  lcd.setCursor(3, 1);
  lcd.print ("Wilkommen!");

  delay(2500);
  lcd.clear();

  lcd.setCursor(3, 0);
  lcd.print("1. Aufgabe");

  delay(2500);
  lcd.clear();

  lcd.setCursor(2, 0);
  lcd.print ("Hebe die Box");
  lcd.setCursor(4, 1);
  lcd.print ("Um 10cm!");

  delay(2500);
  lcd.clear();

  a = sr04.Distance();           //Ab hier beginnt der Ultraschall-Distanzmesser zu messen.
  Serial.print(a);
  Serial.println("cm");
  if (a >= 10 && a <= 12) {     //Wenn die Entfernung eines Gegenstandes zwischen 10cm und 12cm liegt schlatet die erste LED an.
    digitalWrite(LED1, HIGH);

    lcd.setCursor(3, 0);
    lcd.print("Sehr gut ;D");

    delay(2500);
    lcd.clear();


    lcd.setCursor(3, 0);
    lcd.print("2. Aufgabe");

    delay(2500);
    lcd.clear();

    lcd.setCursor(3, 0);
    lcd.print ("Verdunkle");
    lcd.setCursor(3, 1);
    lcd.print ("das Loch!");

  }
  while (digitalRead(LED1) == HIGH) { //Da die erste Aufgabe fertig ist fängt die zweite an, eine Photozelle misst den Widerstand .
    Wert = analogRead(A0);
    Serial.println(Wert);
    delay(15);
    if (Wert < 300) {                 //Ist der Wert unter 300 also die Photozelle wird verdunkelt schaltet die zweite LED an.
      digitalWrite(LED2, HIGH);
      delay(100);

      lcd.clear();

      lcd.setCursor(5, 0);
      lcd.print("Bravo!");


      delay(2500);
      lcd.clear();


      lcd.setCursor(3, 0);
      lcd.print("3. Aufgabe");

      delay(2500);
      lcd.clear();

      lcd.setCursor(4, 0);
      lcd.print ("Klatsch");
      lcd.setCursor(4, 1);
      lcd.print ("Klatsch!");
    }
  }
  while (digitalRead(LED2) == HIGH) {
    int status_sensor = digitalRead(buttonpin);     //Mit zwei mal Klatschen sollte die 3. LED angehen
    if (status_sensor == 0)
    {
      if (clap == 0)
      {
        detection_range_start = detection_range = millis();
        clap++;
      }
      else if (clap > 0 && millis() - detection_range >= 50)
      {
        detection_range = millis();
        clap++;
      }
    }
    if (millis() - detection_range_start >= 400)
    {
      if (clap == 2)
      {
        if (!status_lights)
        {
          status_lights = true;
          digitalWrite(LED3, HIGH);
        }
      }
      clap = 0;
    }
  }
}

Vielen Dank für die Hilfe

Challenger

challenger:

        detection_range_start = detection_range = millis();

Ist die Zeile wirklich so gewollt?

Warum schreibst du keine Kommentare in deinen Sketch ?
So steigt man da nicht durch.
Du möchtest dass wir dir helfen, machst es uns aber nur schwer.

Und eine Schaltung kann ich auch nicht sehen.

@Moko ja die Zeile ist so gewollt!

mei, ich bin es müde immer wider erklären zu müssen, dass 99% der "Arduino Sound sensors" der reinster Schrott sind. Sie sind absolute Fehlkonstruktionen und für nichts zu gebrauchen.

@HotSystem ich hab ein paar Komentare in mein Sketch geschrieben aber halt nicht viele. Hast du noch Tipps wo es angebracht wäre Komentare zu schreiben um ein sauberes Sketch zu schreiben?

Und die Schaltung kannst du nicht sehen weil es auch keinbe gibt :smiley: weisst du wo man soetwas zeichnen kann?

@RIN67630 kannst du denn einen anderen empfehlen??

Danke

Challenger

Habe grad meine "Arduino Sensorenbox durchwühlt und habe einen ISD1820 Sprachmodul mit Lautsprecher gefunden könnte das uach mit so einem gehen??

Challenger

challenger:
@HotSystem ich hab ein paar Komentare in mein Sketch geschrieben aber halt nicht viele. Hast du noch Tipps wo es angebracht wäre Komentare zu schreiben um ein sauberes Sketch zu schreiben?

Kommentare gehören immer dahin, wo man nicht sofort und eindeutig erkennen kann, was da passiert.
Für den Anfang solltest du so viele Kommentare schreiben, wie möglich. Das hilft auch dir, die Abläufe besser zu verstehen.

Und die Schaltung kannst du nicht sehen weil es auch keinbe gibt :smiley: weisst du wo man soetwas zeichnen kann?

Warum schreibst du dann Schaltung, wenn du Sketch meinst ?
Du kannst es zu Anfang auch mit Papier und Bleistift zeichnen und dann scannen.
Ich zeichne meine mit Eagle, die gibt es auch noch als kostenfreie Version. Ist für den Anfang aber sicher zu kompliziert.

Habe grad meine "Arduino Sensorenbox durchwühlt und habe einen ISD1820 Sprachmodul mit Lautsprecher gefunden könnte das uach mit so einem gehen??

Nein, damit geht das nicht. Ist für Aufzeichnungen gedacht.
Ich kenne leider auch keine vernünftigen. Also selber bauen.

challenger:
@HotSystem ich hab ein paar Komentare in mein Sketch geschrieben aber halt nicht viele. Hast du noch Tipps wo es angebracht wäre Komentare zu schreiben um ein sauberes Sketch zu schreiben?

Und die Schaltung kannst du nicht sehen weil es auch keinbe gibt :smiley: weisst du wo man soetwas zeichnen kann?

@RIN67630 kannst du denn einen anderen empfehlen??

Danke

Challenger

Dieser hätte eine brauchbarere Schaltung.

Am besten den Ausgang "Envelope" analog auswerten.

Kostet halt 11€.

Wenn man bereit ist, auch 20€ auszugeben und etwas mehr Platz zur Verfügung hat, dann kann man auch etwas wirklich sinnvolles einsetzen:

http://forum.arduino.cc/index.php?topic=381251.0

Ein Schallpegel variiert leicht im Fakor 1 zu >10000 deshalb ist eine logarithmisierung des Ausgangs absolut erforderlich.

Da fällt mir grad noch ein, MEMS-Mikrofon ist eine recht interessante Sache.

HotSystems:
Da fällt mir grad noch ein, MEMS-Mikrofon ist eine recht interessante Sache.

Aber nicht für ein Arduino!
Da ist das klassiches Modul von Sparkfun SparkFun Sound Detector - SEN-12642 - SparkFun Electronics
und seine envelope Berechnung deutlich überlegen.

Aber, wie gesagt, ohne Logarithmisierung ist alles nur halbe Miete.

RIN67630:
Aber nicht für ein Arduino!

Ist schon klar, dass der TO noch was an der Hardware machen muss.
Das bleibt nicht aus.

Wenn aber dein "verlinktes Modul" besser für ihn ist, soll er sich halt entscheiden.