Ultraschall
HC-SR04
Wie gesagt, ich bin selber noch total am Anfang und das dient mir selber als Notiz. Die Programme können sicher besser geschrieben werden, anders angeordnet oder raffinierter aufgelistet werden.
Aber sie werden im Laufe meiner Zeit auch aktualisiert und verbessert.
Für den Anfang funktioniert es aber und ist ein Einstieg.
Hier nun eine Einbindung vom Ultraschallsensor HC-SR04.
Benötigte Teile:
Arduino UNO
Ultraschallsensor HC-SR04
LED
220 Ohm Widerstand
Kabel

Gleich vorweg, auch wenn wir den Widerstand für eine LED ausrechnen können, im Laufe der unterschiedlichsten Seiten wurde bei einer LED pauschal immer ein 220 Ohm Widerstand genutzt. Also, ich nehme ihn, der einfachheitshalber, auch.
Der Sensor:
GRD = Ground = minus
VCC = plus (5V) den Wert habe ich vom Hersteller
TRIG = Signal aussenden
ECHO = Signal empfangen
Im nachfolgenden Code schaltet der Sender eine LED ein, wenn der Abstand zum Sensor größer als 5cm ist.
Am Anfang wird die fertige Bibliothek vom Sensor eingebunden (zum jetzigen Wissensstand von mir braucht man die wohl in diesem Fall nicht einbinden, da das Programm auch ohne funktionierte).
Wir müssen den Schall noch umrechnen.
Schall hat eine Geschwindigkeit von 343,2m/s.
343,2m * 100 = 34320cm/s
1sec = 1000 Millisekunden
34320cm : 1000 Millisekunden = 34,32cm/ Millisekunde
34,32cm/Millisekunde : 1000 (um auf Mikrosekunden (us) zu kommen = 0,0343cm/us
Weil das Signal gesendet und dann wieder empfangen wird (hin, zurück), teilen wir den Wert später durch 2.
#include <hcsr04.h> //Biliothek für Ultraschall einbinden
# define sender 9 //Weist Pin 9 die Bezeichnung sender zu
# define empfang 8 //Weist Pin 8 die Bezeichnung empfang zu
# define lampe 12 //da wir auf Pin 12 die LED setzen, nennen wir ihn lampe
long zeit; //eine Variable mit der Bezeichnung zeit erstellen
long entfernung; //eine Variable mit der Bezeichnung entfernung erstellen
void setup() {
pinMode( sender, OUTPUT ); //dem Pin9 mitteilen, dass er Ausgang ist
pinMode( empfang, INPUT ); //dem Pin8 mitteilen, dass er Eingang ist
//mit pinMode legen wir fest welche Rolle der jeweilige Pin uebernimmt
}
void loop() {
digitalWrite(sender, LOW); //sagt Pin9 soll ausgeschaltet sein
digitalWrite(sender, HIGH); //sagt Pin9 er soll einschalten
delayMicroseconds(10); //der Sender braucht diese Zeit zum Senden
digitalWrite(sender, LOW); //Sender ausschalten
zeit = pulseIn(empfang, HIGH); //die Variable zeit bekommt nun den Wert
//von Pin8 zugewiesen
entfernung = (zeit / 2) * 0.03432; //da der Sender eine gewisse Strecke
// in einer gewissen Zeit zuruecklegt, muessen wir nun auf cm umrechnen
//und weisen diesen Wert dann der Variablen entfernung zu
if (entfernung > 5) //wenn entfernung groesser als 5 ist, dann soll...
{
delay(1000); //1sec warten, verzoegern, bis der naechste Schritt kommt
digitalWrite(lampe, HIGH); //jetzt gibt der Pin12 Strom aus
}
else //ist der Abstand kleiner 5cm, dann fuehre folgendes aus
{
digitalWrite(lampe, LOW); //Pin12 kein Strom schalten
}
}
Nun sollte die LED also leuchten, wenn ein Gegenstand weiter als 5cm vom Sensor entfernt ist.
Im Code ist eine Verzögerung von 1sec eingebunden, die ich für meine Zwecke brauche. Es geht mir dabei um eine Flaschenablage, damit das Kondenswasser nicht auf mein Laminat läuft. Und weil ich nachts das Tuch nicht sehen kann, wo die Flasche drauf steht, drucke ich mir eine Ablage, wo später die Flasche abgestellt wird. Nehme ich die Flasche, dann wird mit Verzögerung das Licht eingeschaltet. Stelle ich sie wieder zurück, weil ich ja sehen kann wohin sie muß, dann geht das Licht wieder aus.
Am Ende ist der Code aber eigentlich nur dafür gedacht um zu zeigen, wie der Sender eingebunden wird. Ob da am Ende eine Lampe leuchtet oder ein Ton abgespielt wird, das kann jeder dann für sich umschreiben.