Wa Koodu

Ẹkọ 20/31: Ṣíṣàfihàn foltiage lórí LCD1602

Ẹkọ 20/31: Ṣíṣàfihàn foltiage lórí LCD1602

Iṣẹ́ yìí ṣàfihàn bí a ṣe lè kọ́ voltmeter oní nọ́mbà kan pẹ̀lú Arduino àti LCD1602 display pẹ̀lú I2C interface. Nípa kíkà analog voltage láti inú potentiometer kan àti fífi hàn lórí iboju, ìwọ yóò kọ́ àwọn ọgbọ́n pàtàkì ti analog-to-digital conversion, I2C communication, àti LCD control. 

LCD_sunFounder

Iṣẹ́ yìí jẹ́ ìgbésẹ̀ pàtàkì fún ọ̀pọ̀lọpọ̀ àwọn ohun èlò tí ó wúlò. Èrò díẹ̀ nìyí tí o lè fi kọ́ lé lórí:

  • Kíkọ́ ohun èlò ìṣàkóso batiri alágbèéká fún àwọn iṣẹ́ rẹ.
  • Ṣíṣe ìpèsè agbára tí ó rọrùn pẹ̀lú ìfihàn voltage tí ó hàn.
  • Ṣíṣe àkíyèsí ìjàde solar panel tàbí orísun voltage mìíràn tí ó yí padà.
  • Fífi iye láti inú èyíkéyìí analog sensor, bíi light-dependent resistor (LDR), hàn gẹ́gẹ́ bí nọ́mbà tí a lè kà.

Nípa ìparí ìtọ́sọ́nà yìí, ìwọ yóò ní òye pípé nípa bí a ṣe lè so àwọn ẹ̀yà pọ̀, ṣètò àwọn library tí a nílò, àti kọ kóòdù láti ṣẹ̀dá ìfihàn voltage tìrẹ.

potentiometer

Àwọn Ẹ̀yà Hardware

Láti kọ́ iṣẹ́ yìí, ìwọ yóò nílò àwọn ẹ̀yà wọ̀nyí. Ẹ̀kọ́ náà dá lórí SunFounder 3-in-1 Arduino kit, tí ó ní gbogbo àwọn ẹ̀yà wọ̀nyí nínú.

  • Arduino Board (bíi Uno)
  • LCD1602 Display pẹ̀lú I2C module
  • Potentiometer (10kΩ tí a dábàá)
  • Jumper Wires
  • Breadboard

Òye LCD1602 àti I2C Module

LCD1602 jẹ́ alphanumeric display tí ó gbajúmọ̀ pẹ̀lú 16 ọ̀wọ̀n àti 2 ìlà. LCD parallel tí ó wọ́pọ̀ yóò nílò ọ̀pọ̀lọpọ̀ digital pins láti ṣàkóso. Bí ó ti wù kí ó rí, display yìí wá pẹ̀lú I2C module tí a so mọ́ ẹ̀yìn rẹ̀ (nínú fídíò ní 01:30). Module yìí dín ìsopọ̀ wires kù gan-an, tí ó dín kù sí mẹ́rin péré: VCC, GND, SDA, àti SCL. Èyí ṣeé ṣe nítorí pé I2C module ṣiṣẹ́ bí afárá, tí ó ń túmọ̀ I2C serial signal tí ó rọrùn sí àwọn parallel signals tí LCD nílò.

Iṣẹ́ yìí lo I2C interface, tí ó jẹ́ ìlànà ìbánisọ̀rọ̀ tí ó gba Arduino rẹ láyè láti bá ọ̀pọ̀lọpọ̀ ẹ̀rọ sọ̀rọ̀ pẹ̀lú wires méjì péré. Èyí jẹ́ ọgbọ́n ìpìlẹ̀ fún ṣíṣe ìsopọ̀ ọ̀pọ̀lọpọ̀ irú sensors àti displays.

Ìtọ́sọ́nà Wiring

LCD1602_pot_wiring

Ṣíṣe ìsopọ̀ LCD àti potentiometer sí Arduino rọrùn. I2C module nílò agbára àti àwọn ìlà ìbánisọ̀rọ̀ méjì. Potentiometer ṣiṣẹ́ bí voltage divider tí ó yí padà, tí ó gba ọ láyè láti ṣàtúnṣe voltage ní wiper pin rẹ̀.

Èyí ni ìtòlẹ́sẹẹsẹ wiring ní kíkún:

  • LCD I2C Module sí Arduino:
    • GND sí Arduino GND (nínú fídíò ní 05:38).
    • VCC sí Arduino 5V (nínú fídíò ní 05:47).
    • SDA sí Arduino A4 (nínú fídíò ní 05:47).
    • SCL sí Arduino A5 (nínú fídíò ní 05:57).
  • Potentiometer sí Arduino:
    • Pin Òsì sí Arduino 5V (nínú fídíò ní 33:39).
    • Pin Àárín (Wiper) sí Arduino A0 (nínú fídíò ní 33:43).
    • Pin Ọ̀tún sí Arduino GND (nínú fídíò ní 33:43).

Fífi Library Tí A Nílò Sọ̀rọ̀

Iṣẹ́ yìí nílò library òde èèyàn kan láti ṣàkóso LCD lórí I2C. Library tí a lò nínú fídíò ni "Arduino Liquid Crystal I2C" library. O lè gba á láti ìsopọ̀ tí a fún ní ojú ìwé Robojax resource page tàbí láti GitHub (nínú fídíò ní 06:16).

Láti fi sọ̀rọ̀, gba library gẹ́gẹ́ bí ZIP file. Lẹ́yìn náà, nínú Arduino IDE rẹ, lọ sí Sketch > Include Library > Add .ZIP Library... kí o sì yan file tí o gba (nínú fídíò ní 06:41).

Wíwá I2C Address LCD Rẹ

Kí ó tó gbé kóòdù àkọ́kọ́ sílẹ̀, ó ṣe pàtàkì láti mọ I2C address ti LCD module rẹ pàtó. Address yìí lè yàtọ̀ sí ara rẹ̀ nípa olùṣe. Fídíò náà ṣàfihàn bí a ṣe lè lo I2C scanner láti wá a (nínú fídíò ní 08:11).

O lè rí scanner yìí nípa lílọ sí File > Examples > Wire > i2c_scanner. Gbé kóòdù yìí sílẹ̀ sí Arduino rẹ pẹ̀lú LCD tí a so, kí o sì ṣí Serial Monitor. Yóò fi address hàn, tí ó sábà máa ń jẹ́ 0x27 tàbí 0x3F. Ìwọ yóò nílò láti lo address yìí nínú kóòdù àkọ́kọ́ rẹ.

Àlàyé Kóòdù

Kóòdù fún iṣẹ́ yìí dá lórí kíkà iye analog kan àti fífi ṣètò fún ìfihàn. Jẹ́ kí a pín àwọn apá pàtàkì tí olùṣàmúlò lè ṣàtúnṣe.

1. Àwọn Library àti LCD Object

Apá yìí ní àwọn library tí a nílò nínú àti ṣíṣe object kan fún LCD rẹ. Ohun tí ó ṣe pàtàkì jùlọ níbí ni I2C address, tí o gbọ́dọ̀ yí padà láti bá òyìndín tí o rí ní ìgbésẹ̀ tí ó kọjá.

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

// Ṣètò LCD address sí 0x27 fún 16 tàbí 20 chars àti 2 tàbí 4 lines display
LiquidCrystal_I2C lcd(0x27, 16, 2);
  • #include <Wire.h>: Ibi ile ibi ti a fi sinu Arduino ati pe o jẹ dandan fun ibaraẹnisọrọ I2C.
  • #include <LiquidCrystal_I2C.h>: Eyi pẹlu ile-ikawe ti a ṣe fifi sori, eyiti o pese awọn iṣẹ lati ṣakoso LCD.
  • LiquidCrystal_I2C lcd(0x27, 16, 2);: Laini yii ṣẹda ohun kan ti a npè ni lcd. Paramita akọkọ, 0x27, ni adirẹsi I2C ti o ri tẹlẹ. Paramita keji ati kẹta ṣalaye awọn iwọn LCD: awọn ọwọn 16 ati awọn ori ila 2. O gbọdọ yi 0x27 pada si adirẹsi rẹ pato ti o ba yatọ.

2. Awọn iṣẹ Setup ati Loop

Iṣẹ setup() ṣe ipilẹṣẹ LCD ati tan imọlẹ ẹhin rẹ. Iṣẹ loop() ni awọn ọgbọn pataki fun kika foliteji ati fifihan rẹ.

void setup()
{
  lcd.begin();
  lcd.backlight();
}

void loop()
{
  int potValue = analogRead(A0);
  float voltage = potValue * (5.0 / 1023.0);
  // ... (koodu ifihan LCD)
  delay(1000);
}
  • lcd.begin(): Eyi ṣe ipilẹṣẹ ibaraẹnisọrọ LCD ati mura rẹ fun lilo.
  • lcd.backlight(): Eyi tan imọlẹ ẹhin ifihan, ti o jẹ ki ọrọ han.
  • int potValue = analogRead(A0);: Eyi ka iye analog aiseyọ lati pin A0, eyiti o ti sopọ si wiper potentiometer. Iye naa yoo jẹ odidi laarin 0 ati 1023, ti o nsoju foliteji lati 0V si 5V.
  • float voltage = potValue * (5.0 / 1023.0);: Eyi ni igbesẹ iyipada pataki. O yi iye ADC aiseyọ pada si kika foliteji gidi. Agbekalẹ naa ṣe isodipupo iye aiseyọ pẹlu ipin ti foliteji itọkasi (5.0V) si iye ADC ti o pọju (1023). Eyi jẹ dandan nitori ADC ko ka foliteji taara; o ka nọmba ti o ni ibatan.

3. Fifihan Foliteji

Koodu naa lẹhinna nu iboju kuro ati tẹ iye foliteji sita ni ipo kan pato lori ila keji.

  lcd.clear();
  lcd.print("LCD1602 Tutorial");
  lcd.setCursor (0,1); // lọ si ibẹrẹ ila keji
  lcd.print("Voltage:");
  lcd.setCursor (9,1); // ṣeto si ila 2 ohun kikọ 9
  lcd.print(voltage); 
  lcd.setCursor (13,1); // ṣeto si ila 2 ohun kikọ 14
  lcd.print("V"); 
  • lcd.clear(): Nu eyikeyi ọrọ ti o ti kọ tẹlẹ kuro lori iboju.
  • lcd.print("LCD1602 Tutorial"): Tẹ akọle sita lori ila akọkọ.
  • lcd.setCursor (0,1): Ṣeto kọsọ si ibẹrẹ ila keji. Paramita akọkọ ni ọwọn (0-15), ati keji ni ila (0 fun ila akọkọ, 1 fun keji).
  • lcd.print(voltage): Tẹ iye foliteji ti a ṣe iṣiro sita. Oniyipada float yoo tẹ pẹlu awọn aaye eleemewa meji nipasẹ aiyipada.
  • lcd.setCursor (13,1): Gbe kọsọ si ọwọn 13 lori ila keji lati fi ohun kikọ "V" si ipo lẹhin nọmba naa.

Ifihan Ise Agbeyewo Laaye

Ni kete ti o ba ti gbe koodu naa soke, LCD yẹ ki o ṣafihan "LCD1602 Tutorial" lori ila akọkọ. Lori ila keji, yoo ṣafihan "Voltage:" pẹlu kika foliteji lọwọlọwọ. Bi o ṣe yi kọkọrọ potentiometer, iwọ yoo rii pe foliteji ti o han yipada ni akoko gidi, lati isunmọ 0.00V si 5.00V (ninu fidio ni 35:25).

Ise agbeyewo yii jẹ apẹẹrẹ pipe ti bi o ṣe le mu ifihan analog aiseyọ ki o yi pada si iye ti o ṣe kedere, ti eniyan le ka. Awọn ọgbọn ti o ti kọ nibi le ṣee lo taara si eyikeyi sensọ analog miiran ti o le lo ni ọjọ iwaju.

Fidio naa tun bo awọn koko-ọrọ miiran ti o ni ibatan, gẹgẹbi fifihan ọrọ, yiyi, ati ṣiṣẹda awọn ohun kikọ aṣa lori LCD.

Awọn ise agbeyewo ti o ni ibatan lati fidio yii

Awọn ipin

  • [00:00] Ifihan si LCD1602 ati akopọ ise agbeyewo
  • [01:30] Alaye ohun elo LCD1602 ati modulu I2C
  • [04:06] Ṣeto adirẹsi I2C pẹlu awọn jumpers
  • [05:28] Awoṣe asopọ fun LCD1602
  • [07:31] Alaye koodu fun ifihan ọrọ ipilẹ
  • [11:10] Ifihan apẹẹrẹ kọsọ ti o ṣe pọ
  • [13:46] Ṣiṣẹda ati lilo awọn ohun kikọ aṣa
  • [18:51] Lilo apẹẹrẹ ifihan serial
  • [23:16] Yiyi ọrọ lori LCD
  • [26:13] Fifihan iwọn otutu ati ọrinrin lati DHT11
  • [33:00] Kika ati fifihan foliteji lati potentiometer
  • [35:56] Fifihan ijinna lati sensọ ultrasonic

Aworan

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

Orisun & itọkasi

Fáìlìs📁

Awọn ile-ikawe Arduino (zip)

Iwe Itọsọna Olumulo