Soek Kode

Les 20/31: Vertoon van spanning op LCD1602

Les 20/31: Vertoon van spanning op LCD1602

Hierdie projek demonstreer hoe om 'n digitale voltmeter te bou met behulp van 'n Arduino en 'n LCD1602-skerm met 'n I2C-koppelvlak. Deur die analoogspanning van 'n potensiometer te lees en dit op die skerm te vertoon, sal jy die noodsaaklike vaardighede van analoog-na-digitaal-omskakeling, I2C-kommunikasie en LCD-beheer aanleer. 

LCD_sunFounder

Hierdie projek is 'n uitstekende springplank vir baie praktiese toepassings. Hier is 'n paar idees waarop jy kan voortbou:

  • Bou 'n draagbare batteryspanning-monitor vir jou projekte.
  • Skep 'n eenvoudige kragtoevoer met 'n visuele spanningsuitlees.
  • Monitor die uitset van 'n sonpaneel of ander veranderlike spanningsbron.
  • Vertoon die waarde van enige analoogsensor, soos 'n ligafhanklike resistor (LDR), as 'n leesbare getal.

Teen die einde van hierdie gids sal jy 'n duidelike begrip hê van hoe om die komponente te verbind, die nodige biblioteke te konfigureer en die kode te skryf om jou eie spanningsvertoning te skep.

potensiometer

Hardeware-komponente

Om hierdie projek te bou, sal jy die volgende komponente nodig hê. Die kursus is gebaseer op die SunFounder 3-in-1 Arduino-stel, wat al hierdie onderdele insluit.

  • Arduino-bord (bv. Uno)
  • LCD1602-skerm met I2C-module
  • Potensiometer (10kΩ aanbeveel)
  • Springdrade
  • Broodbord

Verstaan die LCD1602 en I2C-module

Die LCD1602 is 'n gewilde alfanumeriese skerm met 16 kolomme en 2 rye. 'n Standaard parallelle LCD sou baie digitale penne benodig om te beheer. Hierdie skerm kom egter met 'n toegewyde I2C-module aan die agterkant (in video by 01:30). Hierdie module vereenvoudig die bedrading dramaties, en verminder die verbinding tot net vier drade: VCC, GND, SDA en SCL. Dit is moontlik omdat die I2C-module as 'n brug optree, wat die eenvoudige I2C-reekssein vertaal na die parallelle seine wat die LCD nodig het.

Hierdie projek gebruik die I2C-koppelvlak, wat 'n kommunikasieprotokol is wat jou Arduino in staat stel om met veelvuldige toestelle te praat deur net twee drade te gebruik. Dit is 'n fundamentele vaardigheid vir die koppeling van baie tipes sensors en skerms.

Bedradingsgids

LCD1602_pot_bedrading

Die verbinding van die LCD en die potensiometer aan die Arduino is eenvoudig. Die I2C-module benodig krag en twee kommunikasielyne. Die potensiometer dien as 'n veranderlike spanningsverdeler, wat jou toelaat om die spanning by sy sleepen aan te pas.

Hier is die gedetailleerde bedradingopstelling:

  • LCD I2C-module na Arduino:
    • GND na Arduino GND (in video by 05:38).
    • VCC na Arduino 5V (in video by 05:47).
    • SDA na Arduino A4 (in video by 05:47).
    • SCL na Arduino A5 (in video by 05:57).
  • Potensiometer na Arduino:
    • Linkerpen na Arduino 5V (in video by 33:39).
    • Middelpen (Sleepen) na Arduino A0 (in video by 33:43).
    • Regterpen na Arduino GND (in video by 33:43).

Installeer die Vereiste Biblioteek

Hierdie projek vereis 'n eksterne biblioteek om die LCD oor I2C te beheer. Die biblioteek wat in die video gebruik word, is die "Arduino Liquid Crystal I2C"-biblioteek. Jy kan dit aflaai van die skakel wat op die Robojax-hulpbronbladsy verskaf word of van GitHub (in video by 06:16).

Om dit te installeer, laai die biblioteek as 'n ZIP-lêer af. Gaan dan in jou Arduino IDE na Skets > Sluit Biblioteek in > Voeg .ZIP-biblioteek by... en kies die afgelaaide lêer (in video by 06:41).

Vind jou LCD se I2C-adres

Voordat jy die hoofkode oplaai, is dit noodsaaklik om die I2C-adres van jou spesifieke LCD-module te bepaal. Hierdie adres kan verskil na gelang van die vervaardiger. Die video demonstreer hoe om 'n I2C-skandeerder te gebruik om dit te vind (in video by 08:11).

Jy kan hierdie skandeerder vind deur na Lêer > Voorbeelde > Wire > i2c_scanner te gaan. Laai hierdie kode op jou Arduino op met die LCD gekoppel, en maak die Serial Monitor oop. Dit sal die adres vertoon, wat dikwels 0x27 of 0x3F is. Jy sal hierdie adres in jou hoofkode moet gebruik.

Kodeverduideliking

Die kode vir hierdie projek is gefokus op die lees van 'n analoogwaarde en die formatering daarvan vir vertoning. Kom ons breek die sleutel, gebruikerskonfigureerbare dele af.

1. Biblioteek-insluitings en LCD-voorwerp

Hierdie afdeling sluit die nodige biblioteke in en skep 'n voorwerp vir jou LCD. Die belangrikste deel hier is die I2C-adres, wat jy moet verander om te pas by die een wat jy in die vorige stap gevind het.

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

// Stel die LCD-adres na 0x27 vir 'n 16 of 20 karakters en 2 of 4 lyne vertoning
LiquidCrystal_I2C lcd(0x27, 16, 2);
  • #include <Wire.h>: Hierdie biblioteek is ingebou in Arduino en word benodig vir I2C-kommunikasie.
  • #include <LiquidCrystal_I2C.h>: Dit sluit die biblioteek in wat ons pas geïnstalleer het, wat die funksies verskaf om die LCD te beheer.
  • LiquidCrystal_I2C lcd(0x27, 16, 2);: Hierdie lyn skep 'n objek genaamd lcd. Die eerste parameter, 0x27, is die I2C-adres wat jy vroeër gevind het. Die tweede en derde parameters definieer die LCD se afmetings: 16 kolomme en 2 rye. Jy moet 0x27 verander na jou spesifieke adres as dit anders is.

2. Opstel- en Loopprogram-funksies

Die setup()-funksie initialiseer die LCD en skakel sy agtergrondlig aan. Die loop()-funksie bevat die kernlogika vir die lees van die spanning en die vertoning daarvan.

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

void loop()
{
  int potValue = analogRead(A0);
  float voltage = potValue * (5.0 / 1023.0);
  // ... (LCD-vertoningskode)
  delay(1000);
}
  • lcd.begin(): Dit initialiseer die LCD-koppelvlak en berei dit voor vir gebruik.
  • lcd.backlight(): Dit skakel die vertoning se agtergrondlig aan, wat die teks sigbaar maak.
  • int potValue = analogRead(A0);: Dit lees die rou analoogwaarde van pen A0, wat aan die potensiometer se sleepkontak gekoppel is. Die waarde sal 'n heelgetal tussen 0 en 1023 wees, wat die spanning van 0V tot 5V verteenwoordig.
  • float voltage = potValue * (5.0 / 1023.0);: Dit is die deurslaggewende omskakelingstap. Dit omskep die rou ADC-waarde in 'n werklike spanningslesing. Die formule vermenigvuldig die rou waarde met die verhouding van die verwysingsspanning (5.0V) tot die maksimum ADC-waarde (1023). Dit is nodig omdat die ADC nie spanning direk lees nie; dit lees 'n proporsionele getal.

3. Vertoon van die Spanning

Die kode maak dan die skerm skoon en druk die spanningswaarde op 'n spesifieke posisie op die tweede lyn.

  lcd.clear();
  lcd.print("LCD1602 Tutoriaal");
  lcd.setCursor (0,1); // gaan na begin van 2de lyn
  lcd.print("Spanning:");
  lcd.setCursor (9,1); // stel na lyn 2 karakter 9
  lcd.print(voltage); 
  lcd.setCursor (13,1); // stel na lyn 2 karakter 14
  lcd.print("V"); 
  • lcd.clear(): Maak enige vorige teks op die skerm skoon.
  • lcd.print("LCD1602 Tutoriaal"): Druk die titel op die eerste lyn.
  • lcd.setCursor (0,1): Stel die wyser na die begin van die tweede lyn. Die eerste parameter is die kolom (0-15), en die tweede is die ry (0 vir die eerste lyn, 1 vir die tweede).
  • lcd.print(voltage): Druk die berekende spanningswaarde. Die float-veranderlike sal by verstek met twee desimale plekke gedruk word.
  • lcd.setCursor (13,1): Beweeg die wyser na kolom 13 op die tweede lyn om die "V"-karakter direk na die nommer te plaas.

Lewende Projekdemonstrasie

Sodra jy die kode opgelaai het, moet die LCD "LCD1602 Tutoriaal" op die eerste lyn vertoon. Op die tweede lyn sal dit "Spanning:" wys, gevolg deur die huidige spanningslesing. Soos jy die potensiometer se knop draai, sal jy sien dat die vertoonde spanning intyds verander, wat wissel van ongeveer 0.00V tot 5.00V (in video by 35:25).

Hierdie projek is 'n perfekte voorbeeld van hoe om 'n rou analoogsein te neem en dit in 'n duidelike, mens-leesbare waarde te omskep. Die vaardighede wat jy hier geleer het, kan direk toegepas word op enige ander analoogsensor wat jy in die toekoms mag gebruik.

Die video dek ook ander verwante onderwerpe, soos die vertoon van teks, blaai, en die skep van pasgemaakte karakters op die LCD.

Verwante projekte uit hierdie video

Hoofstukke

  • [00:00] Inleiding tot die LCD1602 en projekoorsig
  • [01:30] LCD1602-hardeware en I2C-module-verduideliking
  • [04:06] Stel die I2C-adres met springers
  • [05:28] Bedradingsdiagram vir die LCD1602
  • [07:31] Kode-verduideliking vir basiese teksvertoning
  • [11:10] Demonstreer die knip-oog-wyser-voorbeeld
  • [13:46] Skep en gebruik van pasgemaakte karakters
  • [18:51] Gebruik van die reeksvertoning-voorbeeld
  • [23:16] Blaai van teks op die LCD
  • [26:13] Vertoon van temperatuur en humiditeit van DHT11
  • [33:00] Lees en vertoon van spanning van 'n potensiometer
  • [35:56] Vertoon van afstand van 'n ultrasoniese sensor

Beelde

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

Hulpbronne en verwysings

Lêers📁

Arduino Biblioteke (zip)

Gebruikershandleiding