Lektion 20/31: Anzeige der Ultraschall-Entfernung auf LCD1602
Dieses Projekt zeigt, wie man einen HC-SR04 Ultraschall-Distanzsensor mit einem I2C-fähigen LCD1602-Display kombiniert, um ein Echtzeit-Distanzmesssystem zu erstellen. Am Ende dieser Anleitung haben Sie ein funktionierendes Gerät, das kontinuierlich die Entfernung zu einem Objekt in Zentimetern misst und anzeigt. Dies ist eine grundlegende Fähigkeit in der Arduino-Elektronik, da sie Sensoreingabe mit visueller Ausgabe verbindet.
Dieser praktische Aufbau kann in einer Vielzahl realer Anwendungen eingesetzt werden, darunter:
- Erstellung eines intelligenten Parkassistenten, der Ihnen hilft, den Abstand zu einer Wand oder einem anderen Fahrzeug einzuschätzen.
- Bau eines einfachen Flüssigkeitsstandmonitors für einen Tank, indem die Entfernung von der Oberseite zur Oberfläche gemessen wird.
- Entwicklung eines automatischen Handdesinfektionsmittelspenders oder eines berührungslosen Mülleimers, der sich öffnet, wenn sich ein Objekt nähert.
- Konstruktion eines einfachen Sicherheitsalarms, der auslöst, wenn jemand einen bestimmten Bereich betritt.
Hardware und Komponenten
Um dieses Projekt zu bauen, benötigen Sie die folgenden Komponenten:
- Arduino-Board (z. B. Uno)
- LCD1602-Display mit I2C-Schnittstellenmodul
- HC-SR04 Ultraschall-Distanzsensor
- Jumper-Kabel
- Breadboard (optional, für einfachere Verbindungen)
Verständnis des LCD1602 und I2C
Das LCD1602 ist ein beliebtes Display, das 16 Zeichen pro Zeile über zwei Zeilen anzeigen kann. Das "I2C"-Modul auf seiner Rückseite ist ein erheblicher Vorteil, da es die Anzahl der benötigten Pins zur Steuerung des Displays von 6 oder mehr auf nur 2 für die Kommunikation (SDA und SCL) und 2 für die Stromversorgung (VCC und GND) reduziert. Diese Vereinfachung macht die Verkabelung viel übersichtlicher und gibt wertvolle digitale Pins auf Ihrem Arduino für andere Sensoren frei, wie den Ultraschallsensor, der in diesem Projekt verwendet wird. (im Video bei 01:30)
Das I2C-Modul verfügt auch über ein kleines Potentiometer zur Einstellung des Display-Kontrasts. Wenn Sie das Display mit Strom versorgen und nichts sehen, versuchen Sie, diese Schraube zu drehen, bis der Text sichtbar wird. (im Video bei 02:47)
Verkabelungsanleitung
Das Verbinden der Komponenten ist unkompliziert. Das I2C-Modul des LCDs hat vier Pins, die mit dem Arduino verbunden werden müssen. Der Ultraschallsensor hat ebenfalls vier Pins.
Hier ist eine Aufschlüsselung der Verbindungen:
LCD1602 I2C-Modul zu Arduino:
- GND zu Arduino GND
- VCC zu Arduino 5V
- SDA zu Arduino A4
- SCL zu Arduino A5
HC-SR04 Ultraschallsensor zu Arduino:
- VCC zu Arduino 5V
- Trig zu Arduino digitalem Pin 12
- Echo zu Arduino digitalem Pin 11
- GND zu Arduino GND
Das Schaltbild für dieses Projekt wird im Video referenziert.
Installation der erforderlichen Bibliotheken
Dieses Projekt basiert auf zwei entscheidenden Bibliotheken. Die erste, LiquidCrystal_I2C, wird benötigt, um das LCD zu steuern, und ist standardmäßig nicht in der Arduino-IDE enthalten. Sie können sie über den Link in der Videobeschreibung oder von der Robojax-Website herunterladen. (im Video bei 06:16)
Die zweite Bibliothek, NewPing, wird verwendet, um mit dem Ultraschallsensor zu kommunizieren. Sie vereinfacht den Prozess des Sendens eines Pings und des Lesens der Echozeit. Beide Bibliotheken können über den Bibliotheksverwalter der Arduino-IDE installiert werden, indem Sie zu Sketch -> Bibliothek einbinden -> Bibliotheken verwalten gehen und nach ihren Namen suchen.
Code-Erklärung
Dieser Sketch kombiniert die Funktionalität des LCDs und des Ultraschallsensors. Der Code ist so strukturiert, dass er leicht für Ihren spezifischen Aufbau konfiguriert werden kann.
Am Anfang des Codes finden Sie die wichtigsten Variablen, die Sie möglicherweise anpassen müssen:
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, displayChars, displayRows);
#define TRIGGER_PIN 12 // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN 11 // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 190 // Maximum distance we want to ping for (in centimeters).
- LCD-Adresse (0x27): Dies ist die I2C-Adresse Ihres LCD-Moduls. Die meisten Module verwenden
0x27, aber einige verwenden möglicherweise0x3F. Wenn Ihr Display nichts anzeigt, müssen Sie möglicherweise einen I2C-Scanner-Sketch ausführen, um die richtige Adresse zu finden und diesen Wert zu aktualisieren. (im Video bei 08:11) - TRIGGER_PIN und ECHO_PIN: Diese definieren die digitalen Arduino-Pins, die mit den Trig- und Echo-Pins des Ultraschallsensors verbunden sind. Wenn Sie andere Pins verwenden, ändern Sie diese Definitionen.
- MAX_DISTANCE: Dies legt die maximale Entfernung in Zentimetern fest, die der Sensor messen wird. Der HC-SR04 kann bis zu 400-500 cm messen, aber das Festlegen eines niedrigeren Werts kann die Genauigkeit und Zuverlässigkeit der Messwerte verbessern, insbesondere für kürzere Entfernungen.
In der loop()-Funktion führt der Code die folgenden Schritte aus:
- Es verwendet die Funktion
sonar.ping_cm(), um die Entfernung zu messen und sie in der Variablendistancezu speichern. - Es löscht das LCD und gibt den Text "Robojax.com" in der ersten Zeile aus.
- Dann setzt es den Cursor auf die zweite Zeile und gibt "Distance: " aus.
- Schließlich bewegt es den Cursor auf Position 10 in der zweiten Zeile, um den gemessenen
distance-Wert gefolgt von "cm" auszugeben.
Das delay(200) am Ende der Schleife steuert, wie häufig der Sensor eine neue Messung vornimmt und die Anzeige aktualisiert.
Code-Demonstration
Sobald der Code auf Ihren Arduino hochgeladen wurde, leuchtet das LCD auf und beginnt, die Entfernung anzuzeigen. Sie können den Aufbau testen, indem Sie Ihre Hand oder ein Objekt näher an den Ultraschallsensor heran- und wieder wegbewegen. Die Zahl auf dem Bildschirm sollte sich in Echtzeit aktualisieren und die Entfernung in Zentimetern anzeigen. (im Video bei 38:07)
Verwandte Projekte aus diesem Video
- Lektion 20/31: Verwendung von LCD1602 mit Arduino zur Textanzeige | Robojax
- Lektion 20/31: Anzeige von Temperatur und Luftfeuchtigkeit vom DHT11 auf dem LCD-Bildschirm
- Lektion 20/31: Anzeige von Spannung auf dem LCD1602
Kapitel
- [00:00] Einführung in das LCD1602 und Projektübersicht
- [01:30] LCD1602-Hardware und I2C-Modul erklärt
- [03:14] LCD-Pinbelegung und I2C-Adresskonfiguration
- [05:28] Schaltplan für das LCD1602
- [06:16] Installation der erforderlichen LCD-Bibliothek
- [07:24] Grundlegender Code zum Drucken von Text auf dem LCD
- [08:11] Finden der I2C-Adresse Ihres LCDs
- [11:10] LCD-Beispiele: Blinkender Cursor und benutzerdefinierte Zeichen
- [18:51] LCD-Beispiel: Serielle Anzeige und scrollender Text
- [24:36] Anzeige von DHT11-Temperatur und Luftfeuchtigkeit auf dem LCD
- [33:00] Anzeige von Spannung von einem Potentiometer auf dem LCD
- [35:56] Kombination von Ultraschallsensor-Code mit dem LCD
- [38:07] Demonstration der Ultraschall-Entfernungsanzeige
/*
This sketch reads the distance using the ultrasonic sensor and displays on LCD1602
Download and resource page https://robojax.com/RJT878
watch video https://www.youtube.com/watch?v=NXAswOc_2zg
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
const int displayChars =16;
const int displayRows =2;
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, displayChars, displayRows);
int shomar =0;
#include <NewPing.h>
#define TRIGGER_PIN 12 // Arduino pin tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN 11 // Arduino pin tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 190 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.
int distance;
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.
void setup() {
Serial.begin(9600); // Open serial monitor at 9600 baud to see ping results.
// Robojax code for LCD with I2C
// initialize the LCD,
lcd.begin();
// Turn on the blacklight and print a message.
lcd.backlight();
}
void loop() {
distance = sonar.ping_cm();//get the distance in cm
lcd.clear();
lcd.print("Robojax.com");
lcd.setCursor (0,1);//set cursor to char 0 line 2
lcd.print("Distance: ");
lcd.setCursor (10,1);
lcd.print(distance);
lcd.print("cm");
delay(200);
}
Dinge, die Sie vielleicht brauchen
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
Ressourcen & Referenzen
-
DokumentationDokumentation für das SunFounder 3 in 1 IoT/Smarte Auto/Lernkitdocs.sunfounder.com
-
ExternKaufe das 3-in-1 Smart Car Lernkit von SunFounder.sunfounder.com
Dateien📁
Arduino-Bibliotheken (zip)
-
SunFounder 3-in-1 Smart Car Lernkit Quellcode
3in1-kit-main-v2.zip12.80 MB
|||Benutzerhandbuch
-
SunFounder 3-in-1 Arduino Smart Car assembly manualThis document shows step by step assembly of SunFounder 3-in-1 Arduino Smart Car
SunFounder_car_assembly_manual.pdf1.20 MB