Кодты іздеу

Сабақ 20/31: Кернеуді LCD1602 дисплейінде көрсету

Сабақ 20/31: Кернеуді LCD1602 дисплейінде көрсету

Бұл жоба Arduino және I2C интерфейсі бар LCD1602 дисплейін пайдаланып цифрлық вольтметрді құруды көрсетеді. Потенциометрден аналогтық кернеуді оқып, оны экранда көрсету арқылы сіз аналогты-цифрлық түрлендіру, I2C байланысы және LCD басқару сияқты маңызды дағдыларды үйренесіз. 

LCD_sunFounder

Бұл жоба көптеген практикалық қолданыстар үшін тамаша бастама болып табылады. Міне, сіз жасай алатын кейбір идеялар:

  • Жобаларыңыз үшін портативті батарея кернеуін бақылау құрылғысын жасау.
  • Көрнекі кернеу көрсеткіші бар қарапайым қуат көзін жасау.
  • Күн панелінің немесе басқа айнымалы кернеу көзінің шығысын бақылау.
  • Жарыққа тәуелді резистор (LDR) сияқты кез келген аналогтық сенсордың мәнін оқылатын сан ретінде көрсету.

Осы нұсқаулықтың соңында сіз компоненттерді қосу, қажетті кітапханаларды конфигурациялау және өз кернеу дисплейіңізді жасау үшін код жазу туралы нақты түсінікке ие боласыз.

потенциометр

Аппараттық компоненттер

Бұл жобаны құру үшін сізге келесі компоненттер қажет болады. Курс SunFounder 3-в-1 Arduino жинағына негізделген, ол осы бөліктердің барлығын қамтиды.

  • Arduino тақтасы (мысалы, Uno)
  • I2C модулі бар LCD1602 дисплейі
  • Потенциометр (10кОм ұсынылады)
  • Жалғағыш сымдар
  • Макет тақтасы

LCD1602 және I2C модулін түсіну

LCD1602 - 16 баған және 2 жолы бар танымал әріптік-сандық дисплей. Стандартты параллельді LCD басқару үшін көптеген цифрлық түйреуіштерді қажет етеді. Дегенмен, бұл дисплейдің артқы жағына бекітілген арнайы I2C модулі бар (бейнеде 01:30). Бұл модуль сымдарды айтарлықтай жеңілдетіп, қосылымды небәрі төрт сымға дейін қысқартады: VCC, GND, SDA және SCL. Бұл I2C модулі көпір ретінде әрекет етіп, қарапайым I2C сериялық сигналын LCD қажет ететін параллельді сигналдарға аударатындықтан мүмкін.

Бұл жоба Arduino-ға небәрі екі сым арқылы бірнеше құрылғымен байланысуға мүмкіндік беретін байланыс протоколы болып табылатын I2C интерфейсін пайдаланады. Бұл сенсорлар мен дисплейлердің көптеген түрлерін қосу үшін негізгі дағды болып табылады.

Сымдарды жалғау нұсқаулығы

LCD1602_pot_wiring

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).

LCD-дің I2C мекенжайын табу

Негізгі кодты жүктемес бұрын, нақты LCD модуліңіздің I2C мекенжайын анықтау өте маңызды. Бұл мекенжай өндірушіге байланысты өзгеруі мүмкін. Бейнеде оны табу үшін I2C сканерін қалай пайдалану керектігі көрсетілген (бейнеде 08:11).

Бұл сканерді File > Examples > Wire > i2c_scanner бөлімінен таба аласыз. LCD қосылған күйде бұл кодты Arduino-ға жүктеп, Serial Monitor-ды ашыңыз. Ол мекенжайды көрсетеді, ол көбінесе 0x27 немесе 0x3F болады. Сізге бұл мекенжайды негізгі кодта пайдалану қажет болады.

Кодты түсіндіру

Бұл жобаның коды аналогтық мәнді оқуға және оны дисплейде көрсету үшін пішімдеуге бағытталған. Негізгі, пайдаланушы конфигурациялай алатын бөліктерді қарастырайық.

1. Кітапханаларды қосу және LCD нысаны

Бұл бөлім қажетті кітапханаларды қамтиды және LCD үшін нысан жасайды. Мұндағы ең маңызды бөлік - I2C мекенжайы, оны алдыңғы қадамда тапқан мекенжайға сәйкес өзгерту керек.

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

// 16 немесе 20 таңба және 2 немесе 4 жолды дисплей үшін LCD мекенжайын 0x27 мәніне орнатыңыз
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 аралығындағы бүтін сан болады, ол 0В-тан 5В-қа дейінгі кернеуді білдіреді.
  • float voltage = potValue * (5.0 / 1023.0);: Бұл маңызды түрлендіру қадамы. Ол шикі ADC мәнін нақты кернеу көрсеткішіне айналдырады. Формула шикі мәнді анықтамалық кернеудің (5.0В) максималды 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.00В-тан 5.00В-қа дейін (бейнеде 35:25) нақты уақытта өзгеретінін көресіз.

Бұл жоба шикі аналогтық сигналды алып, оны анық, адам оқи алатын мәнге айналдырудың тамаша мысалы болып табылады. Мұнда үйренген дағдыларды болашақта қолданатын кез келген басқа аналогтық сенсорға тікелей қолдануға болады.

Бейне сонымен қатар мәтінді көрсету, айналдыру және 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] Ультрадыбыстық сенсордан қашықтықты көрсету

Суреттер

potentiometer
potentiometer
LCD1602_pot_wiring
LCD1602_pot_wiring
LCD_sunFounder
LCD_sunFounder
912-Lesson 20/31: Displaying voltage on LCD1602
Тіл: 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
}

Сізге қажет болуы мүмкін нәрселер

Ресурстар мен сілтемелер

Файлдар📁

Arduino кітапханалары (zip)

Пайдаланушының нұсқаулығы