Szukaj kodu

Lekcja 20/31: Wyświetlanie napięcia na LCD1602

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. 

LCD_sunFounder

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.

potencjometr

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

LCD1602_pot_wiring

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 nazwie lcd. 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ć 0x27 na 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. Zmienna float zostanie 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

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

Obrazy

potentiometer
potentiometer
LCD1602_pot_wiring
LCD1602_pot_wiring
LCD_sunFounder
LCD_sunFounder
912-Lesson 20/31: Displaying voltage on LCD1602
Język: C++
/*
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
}

Zasoby i odniesienia

Pliki📁

Biblioteki Arduino (zip)

Instrukcja obsługi