Werbung

Arduino Lektion 19 – Teil 2: KY-037 mit LED Balkenanzeige

Da nun die LED Balkenanzeige geliefert wurde kann nun der Teil 2 zum Hochempfindlichen Geräuschdetektor kommen.

Im ersten Teil zum Geräuschdetektor Arduino Lektion 19 – Teil 1: Hochempfindlicher Geräuschdetektor „Klatschdetektor“ habe ich erklärt wie dieser aufgebaut bzw. betrieben werden kann darum gehe ich hier nicht weiter darauf ein.

Teileliste

1x Arduino Nano
1x KY-037 Hochempfindlicher Geräuschdetektor
1x LED Balkenanzeige (rot)
1x Breadboard
3x 20cm Breadboard Kabel
10x 10cm Breadboard Kabel

Werbung

Aufbau

Aufbau der Schaltung.
Aufbau der Schaltung.

Das ich von den 10cm Breadboardkabeln nur die Farben rot, orange, gelb, weiß und schwarz habe ist das schwarze Kabel nicht wie zu vermuten ist GND sondern ein digitaler PIN als Ausgang.

Quellcode

int microPin = 7; // analoger Pin für das Mikrofon - Input

// digitale Pin's für die LED Balkenanzeige
int led1 = 2; 
int led2 = 3;
int led3 = 4;
int led4 = 5;
int led5 = 6;
int led6 = 12;
int led7 = 8;
int led8 = 9;
int led9 = 10;
int led10 = 11;

int sensityValue = 30;
int offset = 5;


void setup() {
  //LED Pin's als Ausgang deklarieren
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(led4, OUTPUT);
  pinMode(led5, OUTPUT);
  pinMode(led6, OUTPUT);
  pinMode(led7, OUTPUT);
  pinMode(led8, OUTPUT);
  pinMode(led9, OUTPUT);
  pinMode(led10, OUTPUT);
    
  pinMode(microPin, INPUT);  //Den PIR Sensor als Eingang deklarieren
  Serial.begin(9600); //Serielle kommunikation mit 9600 Baud beginnen.
}
 
void loop(){
   int val = analogRead(microPin);
   Serial.println(val);
   
   digitalWrite(led1, (sensityValue+offset)  > val ? HIGH : LOW);  
   digitalWrite(led2, (sensityValue+(offset*2))  > val ? HIGH : LOW);  
   digitalWrite(led3, (sensityValue+(offset*3))  > val ? HIGH : LOW);  
   digitalWrite(led4, (sensityValue+(offset*4))  > val ? HIGH : LOW);  
   digitalWrite(led5, (sensityValue+(offset*5))  > val ? HIGH : LOW);  
   digitalWrite(led6, (sensityValue+(offset*6))  > val ? HIGH : LOW);  
   digitalWrite(led7, (sensityValue+(offset*7))  > val ? HIGH : LOW);  
   digitalWrite(led8, (sensityValue+(offset*8))  > val ? HIGH : LOW);  
   digitalWrite(led9, (sensityValue+(offset*9))  > val ? HIGH : LOW);  
   digitalWrite(led10, (sensityValue+(offset*10))  > val ? HIGH : LOW);  
}

Mein Arduino Nano hat eine fehlfunktion auf dem digitalen Pin 7 daher habe ich die LED 6 auf den Pin 12 geschaltet.

Video

KY-037 mit LED Balkenanzeige
Dieses Video ansehen auf YouTube.

Download

Werbung

2 Gedanken zu „Arduino Lektion 19 – Teil 2: KY-037 mit LED Balkenanzeige

  • 15. März 2020 um 23:12
    Permalink

    Hallo,

    ich bin Neueinsteiger beim Arduino und möchte die Schaltung aufbauen und den Code verstehen.
    Den Befehl zur Ausgabe auf die Leds
    digitalWrite(led1, (sensityValue+offset) > val ? HIGH : LOW);
    verstehe ich nicht ganz.
    Ich bitte um Hilfe beim Verständnis dieses Befehles.

    Danke

    Antwort
    • 16. März 2020 um 09:02
      Permalink

      Hi Lothar,

      vielen Dank für dein Kommentar.
      Der Ausdruck digitalWrite(led1, (sensityValue+offset) > val ? HIGH : LOW); ist eine Art „erweiterte If Abfrage“
      Es wird in dem Ausdruck zunächst geprüft ob der Wert aus dem Modul KY-037 (Variable val) kleiner als der bereits Definierte Wert für die Sensibilität + dem Offset ist. Der Offset dient dazu jede LED einzeln anzusprechen. Wenn der Ausdruck ein TRUE zurück liefert, also WAHR ist, dann wird die LED aktiviert (der Ausgang wird auf HIGH gesetzt) ansonsten wird die LED deaktiviert.

      Man könnte dieses auch wie folgt schreiben:
      if((sensityValue+offset) > val){
      digitalWrite(led1, HIGH);
      } else {
      digitalWrite(led1, LOW);
      }
      Jedoch ist dieses etwas länger und macht im Grunde das selbe.

      Solltest du noch fragen haben so kannst du mir gerne schreiben.

      Gruß,

      Stefan

      Antwort

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Werbung