sketch_24_geraeuscherkennung_LEDL_ISR

sketch_24_geraeuscherkennung_LEDL_ISR
 /*Dieser Sketch laesst die LED "L" Dauerblinken ohne Ende. 
  Wenn vom Mikrophon (an Pin D3) das Signal auf "LOW" geht, soll das Blinken beendet werden.
  Auch ein kurzes Pfeifen soll das Blinken sicher beenden.
  Das geht mit einer Interrupt Service Rotine (ISR).*/
  
  int LED=13;                       //Pin D13 wird der Name "LED" zugeordnet
  int Mikro=3;                      //Pin D3 wird der Name "Mikro" zugeordnet
  
  void setup()
  {
  pinMode(LED, OUTPUT);             //"LED" (bzw Arduino Pin D13) wir als Ausgang programmiert
  pinMode(Mikro, INPUT);            //"Mikro" (bzw Arduino Pin D3) wird als Eingang programmiert 
  
  /*Definition einer ISR (Ausloesung Interrupt an Pin D3, wenn dort die Eingangsspannung von HIGH auf LOW wechselt)*/            
  attachInterrupt(digitalPinToInterrupt(3),LEDL_ON,FALLING);                                      
  }
  
  void loop()
  {
  digitalWrite(LED, LOW);           //LED wird ausgeschaltet ...
  delay(1000);                      //... und bleibt 1000 Millisekunden ausgeschaltet
  digitalWrite(LED, HIGH);          //LED wird eingeschaltet ...
  delay(1000);                      //... und bleibt 1000 Millisekunden eingeschaltet
  }
  
  /*Die Interrupt Service Routine(ISR)wird ausgefuehrt, wenn Pin D3 von HIGH auf LOW wechselt.
    Achtung: delay() funktioniert nicht innerhalb einer ISR, da es selbst den Milliseconds Interrupt nutzt.
    delayMicroseconds() wuerde funktionieren*/
  void LEDL_ON()
  {
    digitalWrite(LED, LOW);          //LED wird ausgeschaltet
    for (;;) {}                      //Beende Sketch  
  }