Caută cod

Lecția 20/31: Utilizarea LCD1602 cu Arduino pentru afișarea textului | Robojax

Lecția 20/31: Utilizarea LCD1602 cu Arduino pentru afișarea textului | Robojax

Introducere

LCD1602 este unul dintre cele mai populare afișaje alfanumerice pentru proiectele cu Arduino, iar atunci când este asociat cu un modul I2C, devine incredibil de ușor de utilizat. În acest tutorial, vei învăța cum să afișezi text, numere și caractere personalizate, precum și cum să derulezi textul pe ecran. De asemenea, îți vom arăta cum să combini LCD-ul cu alți senzori pentru a crea instrumente practice de monitorizare. Acest ghid face parte dintr-un curs mai amplu despre Arduino și este conceput pentru a te ajuta să construiești dispozitive utile pentru casa, școala sau atelierul tău.

screenshot-2

Iată câteva idei practice despre ce poți construi cu aceste cunoștințe:

  • Un monitor de temperatură și umiditate pentru o seră sau un terariu pentru reptile.
  • Un voltmetru simplu pentru verificarea nivelului bateriilor în proiectele tale.
  • Un senzor de distanță pentru un asistent de parcare sau un coș de gunoi inteligent care arată cât de plin este.

Prezentare generală a hardware-ului

LCD1602 este un afișaj cu 16 caractere pe 2 linii. Modulul din spate este un adaptor I2C (sau I²C), care reduce numărul de fire necesare de la o conexiune paralelă standard la doar patru: Ground, VCC, SDA și SCL. Acest lucru simplifică mult cablarea și eliberează mulți pini digitali pe Arduino-ul tău.

Afișajul are o lumină de fundal, care poate fi activată sau dezactivată prin software. De asemenea, are un mic potențiometru pe modulul I2C pentru reglarea contrastului. Dacă pornești afișajul și nu vezi nimic, rotește pur și simplu acest șurub până când textul devine vizibil (în video la 02:47).

Există diferite versiuni ale acestui afișaj, cum ar fi LCD2004, care are 20 de caractere și 4 linii. Adresa I2C poate fi, de asemenea, modificată prin lipirea punților A0, A1 și A2 de pe modul (în video la 03:51). Adresa implicită este adesea 0x27, dar poate varia, așa că este întotdeauna o idee bună să rulezi un scaner I2C pentru a găsi adresa corectă pentru modulul tău specific.

Componente hardware

Pentru a urmări demonstrația principală din acest videoclip, vei avea nevoie de următoarele componente:

  • Arduino Uno (sau orice placă compatibilă)
  • LCD1602 cu modul I2C
  • Breadboard și fire de legătură

Pentru secțiunile ulterioare, vei avea nevoie și de un senzor DHT11, un potențiometru sau un senzor ultrasonic, în funcție de proiectul pe care vrei să îl construiești.

Ghid de cablare

lcd1602_I2C_wiring_sunfounder

Conectarea LCD-ului este simplă. Diagrama de cablare arată clar conexiunile.

Conectează pinii modulului I2C la Arduino-ul tău astfel:

  • GND la GND-ul Arduino-ului
  • VCC la 5V-ul Arduino-ului
  • SDA la A4-ul Arduino-ului
  • SCL la A5-ul Arduino-ului

Dacă placa ta Arduino are pini dedicați SDA și SCL, te poți conecta și la aceștia (în video la 05:47).

Instalarea bibliotecii

Acest modul necesită biblioteca "Arduino Liquid Crystal I2C". O poți descărca de la linkul furnizat în descrierea videoclipului sau de pe site-ul Robojax. După descărcare, instaleaz-o în IDE-ul Arduino mergând la Sketch > Include Library > Add .ZIP Library și selectând fișierul descărcat (în video la 06:41).

Explicația codului

Deoarece nu au fost furnizate fragmente de cod, vom explica structura generală a codului folosit în videoclip.

Codul începe prin includerea bibliotecilor necesare: Wire.h pentru comunicarea I2C și biblioteca LiquidCrystal_I2C.h pentru afișaj. Partea cheie este crearea unui obiect pentru LCD. Va trebui să setezi adresa I2C corectă și dimensiunile afișajului tău:

// Setează adresa LCD la 0x27 pentru un afișaj cu 16 caractere și 2 linii
LiquidCrystal_I2C lcd(0x27, 16, 2);

Dacă afișajul tău nu arată nimic, s-ar putea să fie nevoie să schimbi 0x27 cu 0x3F sau cu o altă adresă găsită de scanerul tău I2C. 16 și 2 reprezintă numărul de coloane și rânduri de pe afișajul tău.

În funcția setup(), inițializezi LCD-ul și pornești lumina de fundal:

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

Pentru a afișa text, folosești funcția lcd.setCursor(coloană, rând) pentru a poziționa cursorul, urmată de lcd.print() pentru a afișa datele. De exemplu, pentru a afișa pe a doua linie, ai folosi lcd.setCursor(0, 1). Videoclipul explică și cum să afișezi caractere speciale precum simbolul gradului folosind lcd.write(223) (în video la 31:42).

Demonstrație

Videoclipul demonstrează câteva funcții cheie ale LCD-ului. În primul rând, arată afișarea de bază a textului "Hello World" și cum să folosești funcția lcd.scrollDisplayLeft() pentru a muta textul pe ecran. Mai târziu, combină LCD-ul cu un senzor DHT11 pentru a afișa temperatura și umiditatea, cu un potențiometru pentru a afișa tensiunea și cu un senzor ultrasonic pentru a afișa distanța.

Pentru afișarea temperaturii, codul citește senzorul și afișează valoarea. Pentru a afișa un număr întreg fără zecimale, poți converti valoarea float într-un întreg, așa cum se arată în videoclip (în video la 32:21).

Pentru voltmetru, codul citește valoarea analogică de la potențiometru, o scalează la un interval de tensiune de 0-5V și o afișează pe ecran (în video la 34:31).

Demonstrația finală combină LCD-ul cu un senzor ultrasonic pentru a afișa distanța măsurată în centimetri (în video la 37:55).

Proiecte conexe din acest video

Acest video conține și alte tutoriale de proiecte. Le puteți găsi aici:

Capitole

  • [00:00] Introducere în LCD1602 și prezentarea cursului
  • [01:30] Prezentarea hardware a LCD1602 și modulului I2C
  • [02:47] Reglarea contrastului afișajului și a luminii de fundal
  • [03:14] Conexiunile pinilor și selectarea adresei I2C
  • [05:28] Schema de cablare pentru LCD
  • [06:16] Instalarea bibliotecii necesare
  • [07:24] Cod de bază pentru afișarea textului
  • [11:10] Exemplu cu cursor intermitent
  • [13:46] Caractere personalizate și afișarea simbolurilor speciale
  • [18:51] Exemplu de afișare serială
  • [23:16] Text derulant pe LCD
  • [36:51] Combinarea LCD-ului cu un senzor ultrasonic

Imagini

LCD1602_wiring_DHT11_bb
LCD1602_wiring_DHT11_bb
LCD1602_wiring_DHT11_nopcb_bb
LCD1602_wiring_DHT11_nopcb_bb
LCD1602 displaying voltage and title
LCD1602 displaying voltage and title
screenshot-2
screenshot-2
lcd1602_I2C_wiring_sunfounder
lcd1602_I2C_wiring_sunfounder
910-Lesson 20/31: Displaying simple text on LCD1602
Limba: C++
/*
Lesson 20/31: Displaying text on LCD screen
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 is code for LCD1602 Display with I2C module
 * watch the video for this code https://youtu.be/q9YC_GVHy5A
 
 * Permission granted to share this code given that this
 * note is kept with the code.
 * Disclaimer: this code is "AS IS" and for educational purpose only.
 * This library is based on work done by DFROBOT (www.dfrobot.com).
 */
/*
 *  This code has been modefied from the Arduino library
 *  Updated by Ahmad Nejrabi on Jan 20, 2018 at 11:09
 *  in Ajax, Ontario, Canada
 *  for Robojax.com
 *  
 *  This is code for LCD1602 Display with I2C module
 *  which can display text on the screen.
 */
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);



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()
{

  lcd.clear();
  lcd.setCursor (0,0);  
  lcd.print("SunFounder ");
  lcd.setCursor (0,1);
  lcd.write(244);


  delay(500);
 //end of loopcode Robojax code for LCD with I2C
}

Resurse și referințe

Fișiere📁

Biblioteci Arduino (zip)