Geekzeug

Arduino: Universelles Wenn-Dann mit Sensor und Aktor

Nach unserem ausführlichen Arduino-Tutorial können wir Euch jetzt mal zeigen, wie Ihr das Ding auch wirklich praktisch nutzen könnt: Wenn ein Sensor etwas bestimmtes meldet, dann soll ein Aktor etwas Bestimmtes tun. Diese Grundaufgabe des Arduinos muss man nur einmal verstehen und schon sollten einfache, eigene Projekte möglich sein. Und das in nicht mal 10 Minuten!

Ein Parksensor

OK, ein wenig übertrieben, aber unser Beispiel ist so eine Art Minimal-Parksensor. Das Mini-Projekt: Wenn der Abstand zum Gerät kleiner als 5 cm ist, dann soll eine LED leuchten. Das ist wahnwitzig einfach und im Grunde auf alle Sensoren und Aktoren übertragbar. Und zwar mit Code, den Ihr Euch selbst aus Beispielen zusammenstellen könnt.

Der Schaltkreis

Wir arbeiten hier mit einem Arduino Mega 2560 von Elegoo, aber sowohl Uno als auch die meisten anderen Boards funktionieren genauso. Ihr benötigt einen Ultraschallsensor HC-SR04, wie er zum Beispiel in Elegoo-Sets enthalten ist, eine LED und vier Verbindungskabel männlich auf weiblich.

arduino wenn dann schaltung
Arudino-Board, 4 Kabel, Abstandssensor und LED.

Der Aufbau: Der Sensor hat vier Anschlüsse. Die äußeren (VCC, GND) kommen an die entsprechenden Arduino-Pins, also 5V und GND. Hinzu kommen Echo und Trig: Der Echo-Anschluss kommt an Pin 11 und der Trig an Pin 12. Über Trig (Trigger) wird ein Signal gesendet, über Echo eines empfangen – und darüber wird der Abstand berechnet.

arduino wenn dann schaltung
Anschluss des Abstandssensors an GND, V5, Pin 11 und 12.

Jetzt steckt noch eine LED ein: Das längere Beinchen in Pin 13, das kürzere in GND – also wie immer.

arduino wenn dann schaltung
Die LED mit dem langen Beinchen in Pin 13.

Mit der Software Fritzing sieht das Projekt dann fertig so aus:

arduino wenn dann schaltung
Statt LED kann hier natürlich auch ein Motor oder ähnliches angesteuert werden.

Die Software

Für den Umgang mit dem Sensor benötigt Ihr bei Elegoo-Arduinos die Bibliothek HC-SR04, die Elegoo im Download zu unserem Arduino-Komplett-Set mitliefert. Diese muss über das Sketch-Menü als ZIP-Datei installiert werden.

Andere Hersteller haben gegebenenfalls andere Bibliotheken für den HC-SR04-Sensor. In dem Fall sucht in den Materialien Eures Herstellers nach einer Anleitung für den Abstandssensor und ladet stattdessen dessen Code in die IDE. Die folgenden Anpassungen könnt Ihr dann zwar nicht 1:1, aber entsprechend übernehmen.

Schaut Euch mal folgenden Code an:

#include "SR04.h"

#define TRIG_PIN 12
#define ECHO_PIN 11
SR04 sr04 = SR04(ECHO_PIN,TRIG_PIN);
long a;

void setup() {
Serial.begin(9600); // Wird später gelöscht.
delay(1000);
}

void loop() {
a=sr04.Distance();
Serial.print(a); // Wird später gelöscht.
Serial.println("cm"); // Wird später gelöscht.
delay(1000);
}

Der Kniff: Für das Anschließen einzelner Komponenten findet Ihr bei den meisten (Set-)Anbietern eine Anleitung samt Beispiel-Code. Hier handelt es sich um den Code vom Elegoo-Beispiel. Zunächst wird die besagte Bibliothek über include eingebunden, anschließend werden die Pins definiert – TRIG_PIN und ECHO_PIN für die Anschlüsse 11 und 12. Dann wird sr04 mitgeteilt mit diesen Pins zu arbeiten. Es folgt eine Variable a, die letztlich den Wert speichern wird.

Die setup-Funktion ist obligatorisch, setzt die serielle Verbindung auf 9600 Baud und wartet dann 1000 Millisekunden. Es folgt eine Endlosschleife, in der a auf die von sr04 gemessene Distance gesetzt und anschließend über Serial.print(a) ausgegeben, gefolgt von einem cm. Wieder wird gewartet.

Solchen Code könnt Ihr einfach anpassen:

#include "SR04.h"

#define BLUE 13 // NEU: Pin für die LED
#define TRIG_PIN 12
#define ECHO_PIN 11
SR04 sr04 = SR04(ECHO_PIN,TRIG_PIN);
long a;

void setup() {
}

void loop() {
a=sr04.Distance();
if (a < 7) // NEU: Wenn-Dann-Anweisung >
{
digitalWrite(BLUE, HIGH);
}
else
{
digitalWrite(BLUE, LOW);
}
delay(1000);
}

Verschwunden sind die Definition der seriellen Verbindung und die beiden Serial.print-Anweisungen. Dafür sind neu hinzugekommen: Die Definition für eine blaue LED in Pin 13 und eine if-Abfrage: Wenn die Distanz a kleiner 7 ist, wird die LED via digitalWrite (BLUE, HIGH) eingeschaltet, wenn nicht, ausgeschaltet.

Ladet den Code nun auf den Arduino und testet selbst, ob Sensor, LED und Software tun, was sie sollen.

arduino wenn dann schaltung
Der Abstand ist kleiner als 7 cm – die LED leuchtet.

Universelles Wenn-Dann

Den Wenn-Teil für ein Projekt findet Ihr fast immer in den Beispielen für einzelne Bauteile/Sensoren. Das „Dann“ im Beispiel ist meist die interne LED oder der serielle Monitor – das könnt Ihr entfernen. Euren Dann-Teil könnt Ihr dann einfach einfügen, indem Ihr schaut, in welchen Variablen die für Euch wichtigen Daten stecken (Temperatur, Abstand, Bewegung, etc.), einen Aktor (LED, Motor, Schalter, etc.) mit einem Pin verbindet und im Sketch definiert. Dann könnt Ihr zum Beispiel über eine simple if-Schleife bestimmen, was bei welchen Werten passieren soll.

Und das ganze Prozedere ist durchaus auch für Nicht-Tekkies machbar, da die Beispiel-Codes für einzelne Komponeten meist nur aus ein paar Zeilen bestehen, die man schnell nachvollziehen kann. Und ganz wichtig: Immer schön Code aus Beispielen und Tutorials nutzen und anpassen – in der Regel sind diese Codes zu trivial, um überhaupt unter eine Lizenz zu fallen, insofern ist das auch rechtlich normalerweise in Ordnung. Für privat sowieso.

Mirco Lang

Freier Journalist, Exil-Sauerländer, (ziemlich alter) Skateboarder, Dipl.-Inf.-Wirt, Einzelhandelskaufmann, Open-Source-Nerd, Checkmk-Handbuchschreiber. Ex-Saturn'ler, Ex-Data-Becker'ler, Ex-BSI'ler. Computer-Erstkontakt: ca. 1982 - der C64 des großen Bruders eines Freunds. Wenn Ihr hier mehr über Open Source, Linux und Bastelkram lesen und Tutonaut unterstützen möchtet: Über Kaffeesponsoring via Paypal.freue ich mich immer. Schon mal im Voraus: Danke! Nicht verpassen: cli.help und VoltAmpereWatt.de. Neu: Mastodon

2 Kommentare

  1. Moini,
    habe dein tut mal nachgemacht und hab auch ein fehler entdeckt.
    Der operator wurde wahrscheinlich im html falsch angeben da steht…
    if (a < 7) // NEU: Wenn-Dann-Anweisung
    statt
    if (a < 7) // NEU: Wenn-Dann-Anweisung

    ansonsten echt super danke

    1. Cool, Danke für den Hinweis! Lustigerweise sehen Deine beiden Zeilen hier im Backend völlig identisch aus, da hat Dich genau der Fehler erwischt, auf den Du mich hingewiesen hast ;)
      Ich hoffe jetzt passt’s im Text. Eine spitze Klammer auf interpretiert das olle WordPress scheinbar immer als Anfang einer Anweisung, selbst in Code-Blöcken. Daher jetzt auch hinter dem Kommentar die spitze Klammer zu – ohne wird der letzte Absatz im Artikel komplett als Link dargestellt … Manchmal nervt WordPress echt wie sau.

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Schaltfläche "Zurück zum Anfang"
Schließen

Ooopsi!

Bitte deaktiviere Deinen Adblocker.