Nachdem ich neulich mich wieder etwas mit der Arduino-Plattform beschäftigt habe war es nun an der Zeit für eine kleine Bastelei. Hierfür wollte ich den Ultraschall-Sensor ausprobieren und auch ein OLED-Display.
Die Idee war einen Abstandsmesser zu basteln der mittels Ultraschall funktioniert. Dazu braucht es neben dem Breadboard und den Drähten noch folgende Teile:
- Einen Arduino Nano (4,60 €)
- Ein OLED Display 128×64 mit SSD1306 (5,45€)
- Einen HC-SR04 Ultraschall-Sensor (1,55€)
- Eine 9V-Blockbatterie mit Anschlußclip
Diese Teile werden auf dem Breadboard wie folgt verdrahtet:
In der Arduino-IDE wird dann folgender „Sketch“ übersetzt und auf den Arduino-Nano hochgeladen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
const int echoPin = 2; const int trigPin = 3; const int ledPin = 13; long duration; int distance; #include <Arduino.h> #include <U8g2lib.h> #ifdef U8X8_HAVE_HW_SPI #include <SPI.h> #endif #ifdef U8X8_HAVE_HW_I2C #include <Wire.h> #endif U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE); void setup() { pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(ledPin, OUTPUT); u8g2.begin(); Serial.begin(9600); } void loop() { char d_str[10]; digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = duration * 0.0344 / 2; Serial.print("Distance: "); Serial.println(distance); if (distance < 10) { digitalWrite(ledPin, HIGH); } else { digitalWrite(ledPin, LOW); } sprintf(d_str, "%3d", distance); u8g2.clearBuffer(); u8g2.setFont(u8g2_font_logisoso62_tn); u8g2.drawStr(0,63,d_str); u8g2.sendBuffer(); delay(250); } |
Mit diesem Code sendet der Ultraschall-Sensor jede Viertelsekunde einen Impuls aus und ermittelt aus der Zeit bis zum Eintreffen des Echos die Entfernung. Die Distanz wird auf der seriellen Konsole zu Debug-Zwecken ausgegeben und auf dem OLED-Display angezeigt. Wird eine Entfernung von weniger als 10cm gemessen, dann wird zusätzlich die LED auf dem Arduiono Nano die mit D13 verbunden ist angeschaltet.
Ich habe mal mit der Action-Cam gefilmt wie das im Betrieb aussieht und das Video dazu findet Ihr hier auf meinem YouTube-Kanal.