Lekcja 20/31: Wyświetlanie napięcia na LCD1602
Ten projekt pokazuje, jak zbudować cyfrowy woltomierz za pomocą Arduino i wyświetlacza LCD1602 z interfejsem I2C. Odczytując napięcie analogowe z potencjometru i wyświetlając je na ekranie, nauczysz się podstawowych umiejętności konwersji analogowo-cyfrowej, komunikacji I2C i sterowania wyświetlaczem LCD.
Ten projekt jest świetnym krokiem w stronę wielu praktycznych zastosowań. Oto kilka pomysłów, które możesz rozwinąć:
- Budowa przenośnego monitora napięcia baterii do swoich projektów.
- Tworzenie prostego zasilacza z wizualnym odczytem napięcia.
- Monitorowanie wyjścia panelu słonecznego lub innego zmiennego źródła napięcia.
- Wyświetlanie wartości z dowolnego czujnika analogowego, takiego jak fotorezystor (LDR), jako czytelnej liczby.
Po ukończeniu tego przewodnika będziesz mieć jasne zrozumienie, jak podłączyć komponenty, skonfigurować niezbędne biblioteki i napisać kod, aby stworzyć własny wyświetlacz napięcia.
Komponenty sprzętowe
Do zbudowania tego projektu będziesz potrzebować następujących komponentów. Kurs opiera się na zestawie SunFounder 3-in-1 Arduino, który zawiera wszystkie te części.
- Płytka Arduino (np. Uno)
- Wyświetlacz LCD1602 z modułem I2C
- Potencjometr (zalecany 10kΩ)
- Przewody połączeniowe
- Płytka stykowa
Zrozumienie LCD1602 i modułu I2C
LCD1602 to popularny alfanumeryczny wyświetlacz z 16 kolumnami i 2 wierszami. Standardowy równoległy wyświetlacz LCD wymagałby wielu pinów cyfrowych do sterowania. Jednak ten wyświetlacz jest wyposażony w dedykowany moduł I2C przymocowany z tyłu (na filmie w 01:30). Ten moduł znacznie upraszcza okablowanie, redukując połączenie do zaledwie czterech przewodów: VCC, GND, SDA i SCL. Jest to możliwe, ponieważ moduł I2C działa jako most, tłumacząc prosty sygnał szeregowy I2C na sygnały równoległe, których potrzebuje wyświetlacz LCD.
Ten projekt wykorzystuje interfejs I2C, który jest protokołem komunikacyjnym pozwalającym Arduino rozmawiać z wieloma urządzeniami za pomocą zaledwie dwóch przewodów. Jest to podstawowa umiejętność do podłączania wielu typów czujników i wyświetlaczy.
Przewodnik po okablowaniu
Podłączenie wyświetlacza LCD i potencjometru do Arduino jest proste. Moduł I2C potrzebuje zasilania i dwóch linii komunikacyjnych. Potencjometr działa jak zmienny dzielnik napięcia, umożliwiając regulację napięcia na jego pinie suwaka.
Oto szczegółowa konfiguracja okablowania:
- Moduł I2C LCD do Arduino:
- GND do Arduino GND (na filmie w 05:38).
- VCC do Arduino 5V (na filmie w 05:47).
- SDA do Arduino A4 (na filmie w 05:47).
- SCL do Arduino A5 (na filmie w 05:57).
- Potencjometr do Arduino:
- Lewy pin do Arduino 5V (na filmie w 33:39).
- Środkowy pin (suwak) do Arduino A0 (na filmie w 33:43).
- Prawy pin do Arduino GND (na filmie w 33:43).
Instalacja wymaganej biblioteki
Ten projekt wymaga zewnętrznej biblioteki do sterowania wyświetlaczem LCD przez I2C. Biblioteka użyta na filmie to „Arduino Liquid Crystal I2C". Możesz ją pobrać z linku podanego na stronie zasobów Robojax lub z GitHub (na filmie w 06:16).
Aby ją zainstalować, pobierz bibliotekę jako plik ZIP. Następnie w swoim Arduino IDE przejdź do Szkic > Dołącz bibliotekę > Dodaj bibliotekę .ZIP... i wybierz pobrany plik (na filmie w 06:41).
Znajdowanie adresu I2C wyświetlacza LCD
Przed wgraniem głównego kodu kluczowe jest określenie adresu I2C twojego konkretnego modułu LCD. Ten adres może się różnić w zależności od producenta. Film pokazuje, jak użyć skanera I2C, aby go znaleźć (na filmie w 08:11).
Możesz znaleźć ten skaner, przechodząc do Plik > Przykłady > Wire > i2c_scanner. Wgraj ten kod do Arduino z podłączonym wyświetlaczem LCD i otwórz monitor szeregowy. Wyświetli on adres, który często wynosi 0x27 lub 0x3F. Będziesz musiał użyć tego adresu w swoim głównym kodzie.
Wyjaśnienie kodu
Kod tego projektu skupia się na odczytywaniu wartości analogowej i formatowaniu jej do wyświetlenia. Rozłóżmy na czynniki pierwsze kluczowe, konfigurowalne przez użytkownika części.
1. Dołączanie bibliotek i obiekt LCD
Ta sekcja zawiera niezbędne biblioteki i tworzy obiekt dla twojego wyświetlacza LCD. Najważniejszą częścią jest tutaj adres I2C, który musisz zmienić, aby pasował do tego znalezionego w poprzednim kroku.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Ustaw adres LCD na 0x27 dla wyświetlacza 16 lub 20 znaków i 2 lub 4 linii
LiquidCrystal_I2C lcd(0x27, 16, 2);#include <Wire.h>: Ta biblioteka jest wbudowana w Arduino i jest wymagana do komunikacji I2C.#include <LiquidCrystal_I2C.h>: To obejmuje bibliotekę, którą właśnie zainstalowaliśmy, która zapewnia funkcje do sterowania wyświetlaczem LCD.LiquidCrystal_I2C lcd(0x27, 16, 2);: Ta linia tworzy obiekt o nazwielcd. Pierwszy parametr,0x27, to adres I2C, który znalazłeś wcześniej. Drugi i trzeci parametr określają wymiary wyświetlacza LCD: 16 kolumn i 2 wiersze. Musisz zmienić0x27na swój konkretny adres, jeśli jest inny.
2. Funkcje Setup i Loop
Funkcja setup() inicjalizuje wyświetlacz LCD i włącza jego podświetlenie. Funkcja loop() zawiera podstawową logikę odczytu napięcia i jego wyświetlania.
void setup()
{
lcd.begin();
lcd.backlight();
}
void loop()
{
int potValue = analogRead(A0);
float voltage = potValue * (5.0 / 1023.0);
// ... (kod wyświetlania na LCD)
delay(1000);
}
lcd.begin(): To inicjalizuje interfejs LCD i przygotowuje go do użycia.lcd.backlight(): To włącza podświetlenie wyświetlacza, czyniąc tekst widocznym.int potValue = analogRead(A0);: To odczytuje surową wartość analogową z pinu A0, który jest podłączony do suwaka potencjometru. Wartość będzie liczbą całkowitą od 0 do 1023, reprezentującą napięcie od 0V do 5V.float voltage = potValue * (5.0 / 1023.0);: To jest kluczowy krok konwersji. Przekształca surową wartość ADC na rzeczywisty odczyt napięcia. Wzór mnoży surową wartość przez stosunek napięcia odniesienia (5.0V) do maksymalnej wartości ADC (1023). Jest to konieczne, ponieważ ADC nie odczytuje napięcia bezpośrednio; odczytuje proporcjonalną liczbę.
3. Wyświetlanie napięcia
Kod następnie czyści ekran i wyświetla wartość napięcia w określonym miejscu na drugiej linii.
lcd.clear();
lcd.print("LCD1602 Tutorial");
lcd.setCursor (0,1); // przejdź do początku 2. linii
lcd.print("Voltage:");
lcd.setCursor (9,1); // ustaw na linię 2, znak 9
lcd.print(voltage);
lcd.setCursor (13,1); // ustaw na linię 2, znak 14
lcd.print("V");
lcd.clear(): Czyści wszelki poprzedni tekst z ekranu.lcd.print("LCD1602 Tutorial"): Wyświetla tytuł na pierwszej linii.lcd.setCursor (0,1): Ustawia kursor na początku drugiej linii. Pierwszy parametr to kolumna (0-15), a drugi to wiersz (0 dla pierwszej linii, 1 dla drugiej).lcd.print(voltage): Wyświetla obliczoną wartość napięcia. Zmiennafloatzostanie domyślnie wydrukowana z dwoma miejscami po przecinku.lcd.setCursor (13,1): Przesuwa kursor do kolumny 13 na drugiej linii, aby umieścić znak "V" tuż po liczbie.
Demonstracja projektu na żywo
Po przesłaniu kodu wyświetlacz LCD powinien pokazywać "LCD1602 Tutorial" na pierwszej linii. Na drugiej linii będzie wyświetlane "Voltage:" wraz z aktualnym odczytem napięcia. Podczas obracania pokrętła potencjometru zobaczysz, jak wyświetlane napięcie zmienia się w czasie rzeczywistym, w zakresie od około 0.00V do 5.00V (na wideo w 35:25).
Ten projekt jest doskonałym przykładem tego, jak przekształcić surowy sygnał analogowy w jasną, czytelną dla człowieka wartość. Umiejętności, których się tutaj nauczyłeś, można bezpośrednio zastosować do dowolnego innego czujnika analogowego, którego możesz użyć w przyszłości.
Wideo obejmuje również inne powiązane tematy, takie jak wyświetlanie tekstu, przewijanie i tworzenie niestandardowych znaków na LCD.
Powiązane projekty z tego wideo
- Lekcja 20/31: Użycie LCD1602 z Arduino do wyświetlania tekstu | Robojax
- Lekcja 20/31: Wyświetlanie temperatury i wilgotności z DHT11 na ekranie LCD
Rozdziały
- [00:00] Wprowadzenie do LCD1602 i przegląd projektu
- [01:30] Wyjaśnienie sprzętu LCD1602 i modułu I2C
- [04:06] Ustawianie adresu I2C za pomocą zworek
- [05:28] Schemat połączeń dla LCD1602
- [07:31] Wyjaśnienie kodu dla podstawowego wyświetlania tekstu
- [11:10] Demonstracja przykładu migającego kursora
- [13:46] Tworzenie i używanie niestandardowych znaków
- [18:51] Użycie przykładu wyświetlania szeregowego
- [23:16] Przewijanie tekstu na LCD
- [26:13] Wyświetlanie temperatury i wilgotności z DHT11
- [33:00] Odczyt i wyświetlanie napięcia z potencjometru
- [35:56] Wyświetlanie odległości z czujnika ultradźwiękowego
/*
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
}
Rzeczy, których możesz potrzebować
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
Zasoby i odniesienia
-
DokumentacjaDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
ZewnętrznyPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
Pliki📁
Biblioteki Arduino (zip)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB
Instrukcja obsługi
-
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