Lekcia 20/31: Zobrazenie napätia na LCD1602
Tento projekt demonštruje, ako zostaviť digitálny voltmeter pomocou Arduina a LCD1602 displeja s I2C rozhraním. Čítaním analógového napätia z potenciometra a jeho zobrazením na obrazovke sa naučíte základné zručnosti analógovo-digitálnej konverzie, I2C komunikácie a ovládania LCD.
Tento projekt je skvelým odrazovým mostíkom pre mnohé praktické aplikácie. Tu je niekoľko nápadov, na ktorých môžete stavať:
- Zostavenie prenosného monitora napätia batérie pre vaše projekty.
- Vytvorenie jednoduchého napájacieho zdroja s vizuálnym zobrazením napätia.
- Monitorovanie výstupu solárneho panelu alebo iného variabilného zdroja napätia.
- Zobrazenie hodnoty z ľubovoľného analógového senzora, napríklad fotorezistora (LDR), ako čitateľného čísla.
Po prečítaní tejto príručky budete jasne rozumieť, ako pripojiť komponenty, nakonfigurovať potrebné knižnice a napísať kód na vytvorenie vlastného zobrazenia napätia.
Hardvérové komponenty
Na zostavenie tohto projektu budete potrebovať nasledujúce komponenty. Kurz je založený na SunFounder 3-v-1 Arduino súprave, ktorá obsahuje všetky tieto časti.
- Arduino doska (napr. Uno)
- LCD1602 displej s I2C modulom
- Potenciometer (odporúča sa 10kΩ)
- Prepojovacie vodiče
- Nepájivé pole
Pochopenie LCD1602 a I2C modulu
LCD1602 je populárny alfanumerický displej so 16 stĺpcami a 2 riadkami. Štandardný paralelný LCD by vyžadoval mnoho digitálnych pinov na ovládanie. Tento displej však má na svojej zadnej strane pripevnený špeciálny I2C modul (vo videu v čase 01:30). Tento modul výrazne zjednodušuje zapojenie, redukuje ho na iba štyri vodiče: VCC, GND, SDA a SCL. Je to možné, pretože I2C modul funguje ako most, ktorý prevádza jednoduchý I2C sériový signál na paralelné signály, ktoré LCD potrebuje.
Tento projekt používa I2C rozhranie, čo je komunikačný protokol, ktorý umožňuje vášmu Arduinu komunikovať s viacerými zariadeniami pomocou iba dvoch vodičov. Toto je základná zručnosť pre pripojenie mnohých typov senzorov a displejov.
Sprievodca zapojením
Pripojenie LCD a potenciometra k Arduinu je jednoduché. I2C modul potrebuje napájanie a dve komunikačné linky. Potenciometer funguje ako variabilný delič napätia, ktorý vám umožňuje nastaviť napätie na jeho bežci.
Tu je podrobné nastavenie zapojenia:
- LCD I2C modul na Arduino:
- GND na Arduino GND (vo videu v čase 05:38).
- VCC na Arduino 5V (vo videu v čase 05:47).
- SDA na Arduino A4 (vo videu v čase 05:47).
- SCL na Arduino A5 (vo videu v čase 05:57).
- Potenciometer na Arduino:
- Ľavý pin na Arduino 5V (vo videu v čase 33:39).
- Stredný pin (bežec) na Arduino A0 (vo videu v čase 33:43).
- Pravý pin na Arduino GND (vo videu v čase 33:43).
Inštalácia požadovanej knižnice
Tento projekt vyžaduje externú knižnicu na ovládanie LCD cez I2C. Knižnica použitá vo videu je knižnica "Arduino Liquid Crystal I2C". Môžete si ju stiahnuť z odkazu uvedeného na stránke zdrojov Robojax alebo z GitHubu (vo videu v čase 06:16).
Na jej inštaláciu si stiahnite knižnicu ako ZIP súbor. Potom v Arduino IDE prejdite na Sketch > Include Library > Add .ZIP Library... a vyberte stiahnutý súbor (vo videu v čase 06:41).
Zistenie I2C adresy vášho LCD
Pred nahratím hlavného kódu je kľúčové určiť I2C adresu vášho konkrétneho LCD modulu. Táto adresa sa môže líšiť v závislosti od výrobcu. Video ukazuje, ako použiť I2C skener na jej nájdenie (vo videu v čase 08:11).
Tento skener nájdete na File > Examples > Wire > i2c_scanner. Nahrajte tento kód do Arduina s pripojeným LCD a otvorte Sériový monitor. Zobrazí adresu, ktorá je často 0x27 alebo 0x3F. Túto adresu budete musieť použiť vo vašom hlavnom kóde.
Vysvetlenie kódu
Kód tohto projektu sa zameriava na čítanie analógovej hodnoty a jej formátovanie na zobrazenie. Poďme si rozobrať kľúčové časti, ktoré môže používateľ konfigurovať.
1. Zahrnuté knižnice a LCD objekt
Táto časť zahŕňa potrebné knižnice a vytvára objekt pre váš LCD. Najdôležitejšou časťou je I2C adresa, ktorú musíte zmeniť tak, aby zodpovedala tej, ktorú ste našli v predchádzajúcom kroku.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Nastavte LCD adresu na 0x27 pre 16 alebo 20 znakov a 2 alebo 4 riadkový displej
LiquidCrystal_I2C lcd(0x27, 16, 2);#include <Wire.h>: Táto knižnica je vstavaná v Arduine a je potrebná pre I2C komunikáciu.#include <LiquidCrystal_I2C.h>: Toto zahŕňa knižnicu, ktorú sme práve nainštalovali a ktorá poskytuje funkcie na ovládanie LCD.LiquidCrystal_I2C lcd(0x27, 16, 2);: Tento riadok vytvára objekt s názvomlcd. Prvý parameter,0x27, je I2C adresa, ktorú ste našli skôr. Druhý a tretí parameter definujú rozmery LCD: 16 stĺpcov a 2 riadky. Musíte zmeniť0x27na vašu konkrétnu adresu, ak je iná.
2. Setup a Loop funkcie
Funkcia setup() inicializuje LCD a zapne jeho podsvietenie. Funkcia loop() obsahuje základnú logiku na čítanie napätia a jeho zobrazenie.
void setup()
{
lcd.begin();
lcd.backlight();
}
void loop()
{
int potValue = analogRead(A0);
float voltage = potValue * (5.0 / 1023.0);
// ... (kód na zobrazenie na LCD)
delay(1000);
}
lcd.begin(): Toto inicializuje LCD rozhranie a pripraví ho na použitie.lcd.backlight(): Toto zapne podsvietenie displeja, čím sa text stane viditeľným.int potValue = analogRead(A0);: Toto číta surovú analógovú hodnotu z pinu A0, ktorý je pripojený k bežcu potenciometra. Hodnota bude celé číslo medzi 0 a 1023, predstavujúce napätie od 0V do 5V.float voltage = potValue * (5.0 / 1023.0);: Toto je kľúčový konverzný krok. Premení surovú ADC hodnotu na skutočné čítanie napätia. Vzorec násobí surovú hodnotu pomerom referenčného napätia (5.0V) k maximálnej ADC hodnote (1023). Je to potrebné, pretože ADC nečíta napätie priamo; číta proporcionálne číslo.
3. Zobrazenie napätia
Kód potom vyčistí obrazovku a vytlačí hodnotu napätia na konkrétnu pozíciu na druhom riadku.
lcd.clear();
lcd.print("LCD1602 Tutorial");
lcd.setCursor (0,1); // prejsť na začiatok 2. riadku
lcd.print("Voltage:");
lcd.setCursor (9,1); // nastaviť na riadok 2, znak 9
lcd.print(voltage);
lcd.setCursor (13,1); // nastaviť na riadok 2, znak 14
lcd.print("V");
lcd.clear(): Vymaže predchádzajúci text z obrazovky.lcd.print("LCD1602 Tutorial"): Vytlačí názov na prvom riadku.lcd.setCursor (0,1): Nastaví kurzor na začiatok druhého riadku. Prvý parameter je stĺpec (0-15) a druhý je riadok (0 pre prvý riadok, 1 pre druhý).lcd.print(voltage): Vytlačí vypočítanú hodnotu napätia. Premennáfloatsa štandardne vytlačí s dvoma desatinnými miestami.lcd.setCursor (13,1): Presunie kurzor na stĺpec 13 na druhom riadku, aby umiestnil znak "V" hneď za číslo.
Živá ukážka projektu
Po nahratí kódu by LCD mal zobraziť "LCD1602 Tutorial" na prvom riadku. Na druhom riadku sa zobrazí "Voltage:" nasledované aktuálnym čítaním napätia. Keď otáčate gombíkom potenciometra, uvidíte zobrazené napätie meniť sa v reálnom čase, v rozsahu približne od 0.00V do 5.00V (vo videu v čase 35:25).
Tento projekt je dokonalým príkladom toho, ako vziať surový analógový signál a premeniť ho na jasnú, čitateľnú hodnotu. Zručnosti, ktoré ste sa tu naučili, môžete priamo aplikovať na akýkoľvek iný analógový senzor, ktorý by ste mohli použiť v budúcnosti.
Video tiež pokrýva ďalšie súvisiace témy, ako je zobrazovanie textu, posúvanie a vytváranie vlastných znakov na LCD.
Súvisiace projekty z tohto videa
- Lekcia 20/31: Použitie LCD1602 s Arduinom na zobrazenie textu | Robojax
- Lekcia 20/31: Zobrazenie teploty a vlhkosti z DHT11 na LCD obrazovke
Kapitoly
- [00:00] Úvod do LCD1602 a prehľad projektu
- [01:30] Vysvetlenie hardvéru LCD1602 a I2C modulu
- [04:06] Nastavenie I2C adresy pomocou prepojok
- [05:28] Schéma zapojenia pre LCD1602
- [07:31] Vysvetlenie kódu pre základné zobrazenie textu
- [11:10] Ukážka príkladu s blikajúcim kurzorom
- [13:46] Vytváranie a používanie vlastných znakov
- [18:51] Použitie príkladu sériového zobrazenia
- [23:16] Posúvanie textu na LCD
- [26:13] Zobrazenie teploty a vlhkosti z DHT11
- [33:00] Čítanie a zobrazenie napätia z potenciometra
- [35:56] Zobrazenie vzdialenosti z ultrazvukového senzora
/*
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
}
Veci, ktoré by ste mohli potrebovať
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
Zdroje a referencie
-
DokumentáciaDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
ExternéPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
Súbory📁
Knižnice Arduino (zip)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB
Používateľská príručka
-
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