Лекција 20/31: Прикажување напон на LCD1602
Овој проект демонстрира како да се изгради дигитален волтметар користејќи Arduino и LCD1602 дисплеј со I2C интерфејс. Со читање на аналогниот напон од потенциометар и прикажување на екранот, ќе ги научите основните вештини за аналогно-дигитална конверзија, I2C комуникација и контрола на LCD.
Овој проект е одлична основа за многу практични апликации. Еве неколку идеи на кои можете да надградите:
- Изградба на пренослив монитор за напон на батерија за вашите проекти.
- Креирање едноставно напојување со визуелен приказ на напон.
- Следење на излезот од соларен панел или друг извор на променлив напон.
- Прикажување на вредноста од било кој аналоген сензор, како отпорник зависен од светлина (LDR), како читлив број.
До крајот на ова упатство, ќе имате јасно разбирање како да ги поврзете компонентите, да ги конфигурирате потребните библиотеки и да го напишете кодот за да креирате сопствен приказ на напон.
Хардверски компоненти
За да го изградите овој проект, ќе ви требаат следниве компоненти. Курсот е базиран на SunFounder 3-во-1 Arduino комплет, кој ги вклучува сите овие делови.
- Arduino плоча (на пр., Uno)
- LCD1602 дисплеј со I2C модул
- Потенциометар (препорачано 10kΩ)
- Поврзувачки жици
- Прототипна плоча (breadboard)
Разбирање на LCD1602 и I2C модулот
LCD1602 е популарен алфанумерички дисплеј со 16 колони и 2 реда. Стандарден паралелен LCD би барал многу дигитални пинови за контрола. Сепак, овој дисплеј доаѓа со посветен I2C модул прикачен на неговата заднина (во видеото на 01:30). Овој модул драматично ја поедноставува жичната врска, намалувајќи ја врската на само четири жици: VCC, GND, SDA и SCL. Ова е можно затоа што I2C модулот делува како мост, преведувајќи го едноставниот I2C сериски сигнал во паралелни сигнали што му се потребни на LCD.
Овој проект го користи I2C интерфејсот, кој е комуникациски протокол што му овозможува на вашиот Arduino да разговара со повеќе уреди користејќи само две жици. Ова е основна вештина за поврзување на многу типови сензори и дисплеи.
Водич за поврзување
Поврзувањето на LCD и потенциометарот со Arduino е едноставно. I2C модулот бара напојување и две комуникациски линии. Потенциометарот делува како променлив делител на напон, овозможувајќи ви да го прилагодите напонот на неговиот лизгачки пин.
Еве го деталното поставување на жиците:
- LCD I2C модул на Arduino:
- GND на Arduino GND (во видеото на 05:38).
- VCC на Arduino 5V (во видеото на 05:47).
- SDA на Arduino A4 (во видеото на 05:47).
- SCL на Arduino A5 (во видеото на 05:57).
- Потенциометар на Arduino:
- Лев пин на Arduino 5V (во видеото на 33:39).
- Среден пин (Лизгач) на Arduino A0 (во видеото на 33:43).
- Десен пин на Arduino GND (во видеото на 33:43).
Инсталирање на потребната библиотека
Овој проект бара надворешна библиотека за контрола на LCD преку I2C. Библиотеката што се користи во видеото е „Arduino Liquid Crystal I2C" библиотеката. Можете да ја преземете од линкот даден на Robojax ресурсната страница или од GitHub (во видеото на 06:16).
За да ја инсталирате, преземете ја библиотеката како ZIP датотека. Потоа, во вашиот Arduino IDE, одете на Sketch > Include Library > Add .ZIP Library... и изберете ја преземената датотека (во видеото на 06:41).
Пронаоѓање на I2C адресата на вашиот LCD
Пред да го испратите главниот код, клучно е да ја одредите I2C адресата на вашиот специфичен LCD модул. Оваа адреса може да варира во зависност од производителот. Видеото демонстрира како да користите I2C скенер за да ја пронајдете (во видеото на 08:11).
Можете да го најдете овој скенер со одење на File > Examples > Wire > i2c_scanner. Испратете го овој код на вашиот Arduino со поврзан LCD и отворете го Serial Monitor. Ќе ја прикаже адресата, која често е 0x27 или 0x3F. Ќе треба да ја користите оваа адреса во вашиот главен код.
Објаснување на кодот
Кодот за овој проект е фокусиран на читање аналогна вредност и форматирање за приказ. Ајде да ги разложиме клучните делови што може да ги конфигурира корисникот.
1. Вклучување библиотеки и LCD објект
Овој дел ги вклучува потребните библиотеки и креира објект за вашиот LCD. Најважниот дел овде е I2C адресата, која мора да ја промените за да одговара на онаа што ја најдовте во претходниот чекор.
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
// Поставете ја LCD адресата на 0x27 за дисплеј со 16 или 20 знаци и 2 или 4 линии
LiquidCrystal_I2C lcd(0x27, 16, 2);#include <Wire.h>: Оваа библиотека е вградена во Arduino и е потребна за I2C комуникација.#include <LiquidCrystal_I2C.h>: Ова ја вклучува библиотеката што штотуку ја инсталиравме, која обезбедува функции за контрола на LCD-екранот.LiquidCrystal_I2C lcd(0x27, 16, 2);: Оваа линија создава објект нареченlcd. Првиот параметар,0x27, е I2C адресата што ја најдовте порано. Вториот и третиот параметар ги дефинираат димензиите на LCD-екранот: 16 колони и 2 реда. Мора да го промените0x27во вашата специфична адреса ако е различна.
2. Функции за поставување и јамка
Функцијата setup() го иницијализира LCD-екранот и го вклучува неговото позадинско осветлување. Функцијата loop() ја содржи основната логика за читање на напонот и негово прикажување.
void setup()
{
lcd.begin();
lcd.backlight();
}
void loop()
{
int potValue = analogRead(A0);
float voltage = potValue * (5.0 / 1023.0);
// ... (код за прикажување на LCD)
delay(1000);
}
lcd.begin(): Ова го иницијализира LCD интерфејсот и го подготвува за употреба.lcd.backlight(): Ова го вклучува позадинското осветлување на екранот, правејќи го текстот видлив.int potValue = analogRead(A0);: Ова ја чита суровата аналогна вредност од пин A0, кој е поврзан со лизгачот на потенциометарот. Вредноста ќе биде цел број помеѓу 0 и 1023, што го претставува напонот од 0V до 5V.float voltage = potValue * (5.0 / 1023.0);: Ова е клучниот чекор на конверзија. Ја претвора суровата ADC вредност во вистинско читање на напон. Формулата ја множи суровата вредност со односот на референтниот напон (5.0V) и максималната ADC вредност (1023). Ова е потребно затоа што ADC-то не чита напон директно; тоа чита пропорционален број.
3. Прикажување на напонот
Кодот потоа го чисти екранот и ја печати вредноста на напонот на одредена позиција на вториот ред.
lcd.clear();
lcd.print("LCD1602 Tutorial");
lcd.setCursor (0,1); // оди на почетокот на 2-риот ред
lcd.print("Voltage:");
lcd.setCursor (9,1); // постави на ред 2, знак 9
lcd.print(voltage);
lcd.setCursor (13,1); // постави на ред 2, знак 14
lcd.print("V");
lcd.clear(): Го чисти секој претходен текст од екранот.lcd.print("LCD1602 Tutorial"): Го печати насловот на првиот ред.lcd.setCursor (0,1): Го поставува курсорот на почетокот на вториот ред. Првиот параметар е колоната (0-15), а вториот е редот (0 за првиот ред, 1 за вториот).lcd.print(voltage): Ја печати пресметаната вредност на напонот. Променливатаfloatќе биде испечатена со две децимални места по дифолт.lcd.setCursor (13,1): Го поместува курсорот на колона 13 на вториот ред за да го позиционира знакот „V" веднаш по бројот.
Демонстрација на проектот во живо
Откако ќе го поставите кодот, LCD-екранот треба да прикаже „LCD1602 Tutorial" на првиот ред. На вториот ред, ќе прикаже „Voltage:" проследено со моменталното читање на напонот. Како што го вртите копчето на потенциометарот, ќе видите како прикажаниот напон се менува во реално време, во опсег од приближно 0.00V до 5.00V (во видеото на 35:25).
Овој проект е совршен пример за тоа како да земете суров аналоген сигнал и да го претворите во јасна, читлива вредност за луѓето. Вештините што ги научивте овде може директно да се применат на било кој друг аналоген сензор што може да го користите во иднина.
Видеото исто така покрива други поврзани теми, како што се прикажување текст, скролање и создавање прилагодени знаци на LCD-екранот.
Поврзани проекти од ова видео
- Лекција 20/31: Користење LCD1602 со Arduino за прикажување текст | Robojax
- Лекција 20/31: Прикажување температура и влажност од DHT11 на LCD екран
Поглавја
- [00:00] Вовед во LCD1602 и преглед на проектот
- [01:30] Објаснување на LCD1602 хардверот и I2C модулот
- [04:06] Поставување на I2C адресата со џампери
- [05:28] Дијаграм за поврзување на LCD1602
- [07:31] Објаснување на кодот за основно прикажување текст
- [11:10] Демонстрација на примерот со трепкачки курсор
- [13:46] Создавање и користење прилагодени знаци
- [18:51] Користење на примерот со сериски приказ
- [23:16] Скролање текст на LCD-екранот
- [26:13] Прикажување температура и влажност од DHT11
- [33:00] Читање и прикажување напон од потенциометар
- [35:56] Прикажување растојание од ултразвучен сензор
/*
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
}
Работи што можеби ќе ви требаат
-
AmazonSunFounder Arduino Learning Kit on AliExpresss.click.aliexpress.com
-
Amazon
-
Amazon
-
Amazon
-
Amazon
Ресурси и референци
-
ДокументацијаDocumentation for SunFounder 3 in 1 IoT/Smart Car/Learning Kitdocs.sunfounder.com
-
НадворешноPurchase SunFounder's 3-in-1 Smart car learning kitsunfounder.com
Датотеки📁
Arduino библиотеки (zip)
-
SunFounder's 3-in-1 Smart Car learning kit source code
3in1-kit-main-v2.zip12.80 MB
Упатство за корисникот
-
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