Just remembered now and thought i post my final code here:
int sensorValue;
boolean measuring = false;
boolean action = false;
unsigned long startTime;
unsigned long duration = 0;
unsigned long LEDStart;
const int threshold = 600;
void setup()
{
pinMode(12, OUTPUT);
Serial.begin(9600); // sets the serial port to 9600
}
void loop()
{
sensorValue = analogRead(0); // read analog input pin 0
delay(100); // wait 100ms for next reading
//Messung anfangen falls gerade nicht gemessen wird und die
//Lautstaerke den Schwellwert ueberschreitet
if(measuring == false && sensorValue >= threshold) {
startTime= millis();
measuring = true;
}
//Messung beenden falls gemessen wurde und die Lautstaerke
//den Schwellwert unterschreitet
if(measuring == true && sensorValue < threshold) {
duration = millis() - startTime;
measuring = false;
}
Serial.print("sensorValue:\t ");
Serial.println(sensorValue, DEC);
Serial.print("duration:\t ");
Serial.println(duration);
//30% der gemessenen Zeit nichts machen
delay(0.5*duration);
//LED 100% der gemessenen Zeit aktivieren
LEDStart = millis();
while(millis() - duration < LEDStart) {
digitalWrite(12, HIGH);
if(!action) action = true;
}
if(action) {
digitalWrite(12, LOW);
duration = 0;
action = false;
delay(10000);
}
}
sorry for german comments and maybe not the best style but i think everyone get it anyway ![]()