Lektion 20/31: Spannung auf LCD1602 anzeigen
Dieses Projekt zeigt, wie man mit einem Arduino und einem LCD1602-Display mit I2C-Schnittstelle ein digitales Voltmeter baut. Indem du die analoge Spannung eines Potentiometers ausliest und auf dem Bildschirm anzeigst, lernst du die grundlegenden Fähigkeiten der Analog-Digital-Umwandlung, der I2C-Kommunikation und der LCD-Steuerung.
Dieses Projekt ist ein großartiger Ausgangspunkt für viele praktische Anwendungen. Hier sind einige Ideen, auf denen du aufbauen kannst:
- Bau eines tragbaren Batteriespannungsmonitors für deine Projekte.
- Erstellung eines einfachen Netzteils mit visueller Spannungsanzeige.
- Überwachung der Ausgabe eines Solarpanels oder einer anderen variablen Spannungsquelle.
- Anzeige des Werts eines beliebigen analogen Sensors, wie eines lichtabhängigen Widerstands (LDR), als lesbare Zahl.
Am Ende dieser Anleitung wirst du ein klares Verständnis dafür haben, wie du die Komponenten verbindest, die erforderlichen Bibliotheken konfigurierst und den Code schreibst, um deine eigene Spannungsanzeige zu erstellen.
Hardware-Komponenten
Um dieses Projekt zu bauen, benötigst du die folgenden Komponenten. Der Kurs basiert auf dem SunFounder 3-in-1 Arduino-Kit, das alle diese Teile enthält.
- Arduino-Board (z. B. Uno)
- LCD1602-Display mit I2C-Modul
- Potentiometer (10kΩ empfohlen)
- Jumper-Kabel
- Breadboard
Verständnis des LCD1602 und des I2C-Moduls
Das LCD1602 ist ein beliebtes alphanumerisches Display mit 16 Spalten und 2 Zeilen. Ein standardmäßiges paralleles LCD würde viele digitale Pins zur Steuerung benötigen. Dieses Display verfügt jedoch über ein dediziertes I2C-Modul, das auf seiner Rückseite angebracht ist (im Video bei 01:30). Dieses Modul vereinfacht die Verkabelung erheblich und reduziert die Verbindung auf nur vier Drähte: VCC, GND, SDA und SCL. Dies ist möglich, weil das I2C-Modul als Brücke fungiert und das einfache I2C-Serialsignal in die parallelen Signale übersetzt, die das LCD benötigt.
Dieses Projekt verwendet die I2C-Schnittstelle, ein Kommunikationsprotokoll, das es deinem Arduino ermöglicht, mit mehreren Geräten über nur zwei Drähte zu kommunizieren. Dies ist eine grundlegende Fähigkeit für den Anschluss vieler Arten von Sensoren und Displays.
Verkabelungsanleitung
Das Verbinden des LCDs und des Potentiometers mit dem Arduino ist unkompliziert. Das I2C-Modul benötigt Strom und zwei Kommunikationsleitungen. Das Potentiometer fungiert als variabler Spannungsteiler und ermöglicht es dir, die Spannung an seinem Schleifer-Pin einzustellen.
Hier ist der detaillierte Verkabelungsaufbau:
- LCD-I2C-Modul zu Arduino:
- GND zu Arduino GND (im Video bei 05:38).
- VCC zu Arduino 5V (im Video bei 05:47).
- SDA zu Arduino A4 (im Video bei 05:47).
- SCL zu Arduino A5 (im Video bei 05:57).
- Potentiometer zu Arduino:
- Linker Pin zu Arduino 5V (im Video bei 33:39).
- Mittlerer Pin (Schleifer) zu Arduino A0 (im Video bei 33:43).
- Rechter Pin zu Arduino GND (im Video bei 33:43).
Installieren der erforderlichen Bibliothek
Dieses Projekt erfordert eine externe Bibliothek, um das LCD über I2C zu steuern. Die im Video verwendete Bibliothek ist die "Arduino Liquid Crystal I2C"-Bibliothek. Du kannst sie über den Link auf der Robojax-Ressourcenseite oder von GitHub herunterladen (im Video bei 06:16).
Um sie zu installieren, lade die Bibliothek als ZIP-Datei herunter. Gehe dann in deiner Arduino-IDE zu Sketch > Bibliothek einbinden > .ZIP-Bibliothek hinzufügen... und wähle die heruntergeladene Datei aus (im Video bei 06:41).
Finden der I2C-Adresse deines LCDs
Bevor du den Hauptcode hochlädst, ist es entscheidend, die I2C-Adresse deines spezifischen LCD-Moduls zu bestimmen. Diese Adresse kann je nach Hersteller variieren. Das Video zeigt, wie man einen I2C-Scanner verwendet, um sie zu finden (im Video bei 08:11).
Du findest diesen Scanner unter Datei > Beispiele > Wire > i2c_scanner. Lade diesen Code mit angeschlossenem LCD auf deinen Arduino hoch und öffne den seriellen Monitor. Er zeigt die Adresse an, die oft 0x27 oder 0x3F ist. Du musst diese Adresse in deinem Hauptcode verwenden.
Code-Erklärung
Der Code für dieses Projekt konzentriert sich auf das Lesen eines analogen Werts und dessen Formatierung für die Anzeige. Lass uns die wichtigsten, vom Benutzer konfigurierbaren Teile aufschlüsseln.
1. Bibliotheks-Einbindungen und LCD-Objekt
Dieser Abschnitt bindet die erforderlichen Bibliotheken ein und erstellt ein Objekt für dein LCD. Der wichtigste Teil hier ist die I2C-Adresse, die du ändern musst, damit sie der im vorherigen Schritt gefundenen entspricht.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Setze die LCD-Adresse auf 0x27 für ein 16- oder 20-Zeichen- und 2- oder 4-Zeilen-Display
LiquidCrystal_I2C lcd(0x27, 16, 2);#include <Wire.h>: Diese Bibliothek ist in Arduino integriert und für die I2C-Kommunikation erforderlich.#include <LiquidCrystal_I2C.h>: Dies bindet die gerade installierte Bibliothek ein, die die Funktionen zur Steuerung des LCDs bereitstellt.LiquidCrystal_I2C lcd(0x27, 16, 2);: Diese Zeile erstellt ein Objekt namenslcd. Der erste Parameter,0x27, ist die I2C-Adresse, die du zuvor herausgefunden hast. Der zweite und dritte Parameter definieren die Abmessungen des LCDs: 16 Spalten und 2 Zeilen. Du musst0x27in deine spezifische Adresse ändern, falls diese abweicht.
2. Setup- und Loop-Funktionen
Die setup()-Funktion initialisiert das LCD und schaltet die Hintergrundbeleuchtung ein. Die loop()-Funktion enthält die Kernlogik zum Lesen der Spannung und deren Anzeige.
void setup()
{
lcd.begin();
lcd.backlight();
}
void loop()
{
int potValue = analogRead(A0);
float voltage = potValue * (5.0 / 1023.0);
// ... (LCD-Anzeigecode)
delay(1000);
}
lcd.begin(): Dies initialisiert die LCD-Schnittstelle und bereitet sie für die Verwendung vor.lcd.backlight(): Dies schaltet die Hintergrundbeleuchtung des Displays ein, wodurch der Text sichtbar wird.int potValue = analogRead(A0);: Dies liest den rohen analogen Wert von Pin A0, der mit dem Schleifer des Potentiometers verbunden ist. Der Wert ist eine Ganzzahl zwischen 0 und 1023 und repräsentiert die Spannung von 0V bis 5V.float voltage = potValue * (5.0 / 1023.0);: Dies ist der entscheidende Umrechnungsschritt. Er wandelt den rohen ADC-Wert in eine tatsächliche Spannungsmessung um. Die Formel multipliziert den rohen Wert mit dem Verhältnis der Referenzspannung (5,0V) zum maximalen ADC-Wert (1023). Dies ist notwendig, da der ADC die Spannung nicht direkt liest, sondern einen proportionalen Wert.
3. Anzeigen der Spannung
Der Code löscht dann den Bildschirm und gibt den Spannungswert an einer bestimmten Position in der zweiten Zeile aus.
lcd.clear();
lcd.print("LCD1602 Tutorial");
lcd.setCursor (0,1); // gehe zum Anfang der 2. Zeile
lcd.print("Voltage:");
lcd.setCursor (9,1); // setze auf Zeile 2, Zeichen 9
lcd.print(voltage);
lcd.setCursor (13,1); // setze auf Zeile 2, Zeichen 14
lcd.print("V");
lcd.clear(): Löscht jeglichen vorherigen Text vom Bildschirm.lcd.print("LCD1602 Tutorial"): Gibt den Titel in der ersten Zeile aus.lcd.setCursor (0,1): Setzt den Cursor an den Anfang der zweiten Zeile. Der erste Parameter ist die Spalte (0-15), der zweite die Zeile (0 für die erste Zeile, 1 für die zweite).lcd.print(voltage): Gibt den berechneten Spannungswert aus. Diefloat-Variable wird standardmäßig mit zwei Dezimalstellen ausgegeben.lcd.setCursor (13,1): Bewegt den Cursor auf Spalte 13 in der zweiten Zeile, um das Zeichen "V" direkt nach der Zahl zu positionieren.
Live-Projektdemonstration
Sobald du den Code hochgeladen hast, sollte das LCD "LCD1602 Tutorial" in der ersten Zeile anzeigen. In der zweiten Zeile wird "Voltage:" gefolgt von der aktuellen Spannungsmessung angezeigt. Wenn du den Drehknopf des Potentiometers drehst, siehst du die angezeigte Spannung in Echtzeit ändern, von ungefähr 0,00V bis 5,00V (im Video bei 35:25).
Dieses Projekt ist ein perfektes Beispiel dafür, wie man ein rohes analoges Signal in einen klaren, für Menschen lesbaren Wert umwandelt. Die hier erlernten Fähigkeiten kannst du direkt auf jeden anderen analogen Sensor anwenden, den du in Zukunft verwenden könntest.
Das Video behandelt auch andere verwandte Themen, wie das Anzeigen von Text, Scrollen und das Erstellen benutzerdefinierter Zeichen auf dem LCD.
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
Kapitel
- [00:00] Einführung in das LCD1602 und Projektübersicht
- [01:30] Erklärung der LCD1602-Hardware und des I2C-Moduls
- [04:06] Einstellen der I2C-Adresse mit Jumpern
- [05:28] Schaltplan für das LCD1602
- [07:31] Code-Erklärung für die grundlegende Textanzeige
- [11:10] Demonstration des blinkenden Cursor-Beispiels
- [13:46] Erstellen und Verwenden benutzerdefinierter Zeichen
- [18:51] Verwendung des seriellen Anzeigebeispiels
- [23:16] Scrollender Text auf dem LCD
- [26:13] Anzeige von Temperatur und Luftfeuchtigkeit vom DHT11
- [33:00] Lesen und Anzeigen der Spannung von einem Potentiometer
- [35:56] Anzeige der Entfernung von einem Ultraschallsensor
/*
Lesson 20/31: Displaying voltage on LCD1602
Get this code and watch video Download and resource page https://robojax.com/RJT603
YouTube video https://www.youtube.com/watch?v=NXAswOc_2zg
* This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been download from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 or 20 chars and 2 or 4 lines display
LiquidCrystal_I2C lcd(0x27, 16, 2);
int count =700;
void setup()
{
// Robojax code for LCD with I2C
// initialize the LCD,
lcd.begin();
// Turn on the blacklight and print a message.
lcd.backlight();
// Robojax code for LCD with I2C
}
void loop()
{
int potValue = analogRead(A0);
float voltage = potValue * (5.0 / 1023.0);
//start of loop Robojax code for LCD with I2C
lcd.clear();
lcd.print("LCD1602 Tutorial");
lcd.setCursor (0,1); // go to start of 2nd line
lcd.print("Voltage:");
lcd.setCursor (9,1); // set to line 2 char 9
lcd.print(voltage);
lcd.setCursor (13,1); // set to line 2 char 14
lcd.print("V");
//lcd.setCursor (3,3); // set to line 4 character 4
//lcd.print("Text in line 4");
delay(1000);
count++;
//end of loopcode Robojax code for LCD with I2C
}
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