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 20 cm Breadboard Kabel*,
10x 10 cm Breadboard Kabel*
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
Aufbau
Dass ich von den 10 cm 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.
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
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