Code zoeken

ESP32 Tutorial 11/55 - LCD1602 LCD2004 gebruiken met ESP32 - SunFounder's ESP32 IoT-leerkit

ESP32 Tutorial 11/55 - LCD1602 LCD2004 gebruiken met ESP32 - SunFounder's ESP32 IoT-leerkit

In deze tutorial verkennen we hoe we de LCD1602 en LCD2004 kunnen gebruiken met de ESP32-microcontroller. Deze LCD-schermen stellen ons in staat om tekst en andere informatie effectief weer te geven, waardoor onze projecten worden verbeterd met visuele feedback. We behandelen ook hoe we het contrast kunnen aanpassen om de leesbaarheid te garanderen.

De ESP32, onderdeel van de SunFounder ESP32 IoT-leerkit, heeft ingebouwde Wi-Fi- en Bluetooth-mogelijkheden, waardoor het een krachtig hulpmiddel is voor verschillende IoT-toepassingen. Door de LCD op de ESP32 aan te sluiten, kunnen we eenvoudig berichten of data-uitvoer van onze code weergeven, waardoor onze projecten interactiever en gebruiksvriendelijker worden (in video op 00:30).

Hardware uitgelegd

De belangrijkste componenten die we zullen gebruiken, zijn de ESP32-microcontroller en de LCD1602- of LCD2004-displaymodule. De ESP32 zal fungeren als het brein van ons project, verwerkt invoer en bestuurt uitvoer, inclusief het LCD-display.

De LCD-module communiceert via I2C, wat de bedrading vereenvoudigt door slechts twee datapinnen (SDA en SCL) te gebruiken voor communicatie, samen met stroom- en aardverbindingen. Deze opstelling vermindert aanzienlijk de complexiteit van het aansluiten van meerdere pinnen, waardoor een schoner en beter beheersbaar circuit ontstaat.

Datasheet-details

Fabrikant SunFounder
Onderdeelnummer LCD1602
Logica/IO-spanning 5 V
Voedingsspanning 5 V
Weergavegrootte 16 x 2 tekens
Achtergrondverlichting Ja
Interface I2C
Afmetingen 80 x 36 mm
Opmerkingen / varianten Vaak gebruikt met I2C-adres 0x27

 

  • Zorg voor een juiste voedingsspanning (5 V) om schade te voorkomen.
  • Gebruik korte draden om interferentie op I2C-lijnen te minimaliseren.
  • Pas de potentiometer aan voor optimale contrastzichtbaarheid.
  • Controleer het I2C-adres als het display niet initialiseert (veelvoorkomende adressen: 0x27, 0x3F).
  • Wis het display voordat u berichten bijwerkt om overlapping te voorkomen.

Bedradingsinstructies

ESP32-11_LCD-bedradingsschema
ESP32-11_LCD-wiring

Om de LCD1602 op de ESP32 aan te sluiten, verbindt u eerst de aardpin van de LCD met de aardpin op de ESP32. Verbind vervolgens de VCC-pin van de LCD met de 5V-uitgang van de ESP32. Voor de I2C-communicatie verbindt u de SDA-pin van de LCD met pin 21 op de ESP32 en verbindt u de SCL-pin van de LCD met pin 22 op de ESP32. Zorg ervoor dat de verbindingen stevig zijn om communicatieproblemen te voorkomen.

Het is belangrijk op te merken dat de ESP32 werkt op 3,3V-logicaniveaus, terwijl de LCD1602 5V nodig heeft voor een correcte werking. Zorg er daarom voor dat u de juiste voedingsspanning gebruikt om schade aan de LCD te voorkomen. Als u een ander LCD-formaat gebruikt, pas dan de bedrading aan op basis van het I2C-adres en de specificaties.

Codevoorbeelden & uitleg

In de code beginnen we met het opnemen van de benodigde bibliotheken voor I2C-communicatie en de LCD. We maken een instantie van de LCD met het I2C-adres 0x27 en specificeren dat deze 16 kolommen en 2 rijen heeft.

#include  
#include 

LiquidCrystal_I2C lcd(0x27,16,2);  // stel het LCD-adres in op 0x27 voor een display van 16 tekens en 2 regels

Deze opstelling stelt ons in staat om de LCD eenvoudig te besturen. In de setup()-functie initialiseren we de LCD en schakelen we de achtergrondverlichting in, gevolgd door het afdrukken van een welkomstbericht.

void setup()
{
  lcd.init(); // initialiseer de lcd 
  lcd.backlight(); // Schakelt de LCD-achtergrondverlichting in.
  lcd.print("Hello, world!");   // Druk een bericht af op de LCD.
  delay(3000);
}

In de loop()-functie werken we het display continu bij door het te wissen, de cursorpositie in te stellen en de huidige telwaarde af te drukken. Dit demonstreert hoe de LCD dynamisch veranderende informatie kan weergeven.

void loop()
{
  lcd.clear(); 
  lcd.setCursor(0, 0); // Stelt de cursorpositie in op de eerste rij en eerste kolom (0, 0).
  lcd.print("COUNT: ");
  lcd.print(count); // Drukt de huidige waarde van de telvariabele af.
  delay(1000);
  count++; // Verhoogt de teller met 1. 
}

De volledige code wordt onder het artikel geladen, waar u de volledige implementatie en eventuele extra functionaliteiten voor uw project kunt zien.

Demonstratie / Wat te verwachten

Zodra alles is aangesloten en de code is geüpload, moet de LCD "Hello, world!" weergeven gedurende 3 seconden voordat een teller start die elke seconde toeneemt. U kunt het contrast aanpassen met de potentiometer om ervoor te zorgen dat de tekst gemakkelijk leesbaar is (in video op 08:45).

Als u problemen ondervindt, controleer dan de bedradingsverbindingen en zorg ervoor dat het juiste I2C-adres wordt gebruikt. Een veelgemaakte fout is dat het I2C-adres van de LCD niet overeenkomt met wat in de code is ingesteld, wat kan voorkomen dat het display correct functioneert.

Videotijdstempels

  • 00:00 Start
  • 1:47 Introductie tot LCD
  • 3:26 Documentatiepagina
  • 5:06 Hoe LCD met ESP32 te bedraden
  • 9:07 ESP32-bord en COMP-poort selecteren op Arduino
  • 8:51 LCD-bibliotheek installeren
  • 10:06 I2C-adres voor LCD vinden
  • 14:00 Arduino-code uitgelegd
  • 17:50 Demonstratie
  • 20:54 LCD2004 gebruiken met ESP32
  • 22:58 Groene LCD1602 is beter dan blauwe

Afbeeldingen

ESP32_11-5-l2C.MOV_snapshot_00.02.763
ESP32_11-5-l2C.MOV_snapshot_00.02.763
SunFounder-ESP32-Lesson-11-LCD1602.mp4_snapshot_20.23.926
SunFounder-ESP32-Lesson-11-LCD1602.mp4_snapshot_20.23.926
ESP32-11_LCD-wiring
ESP32-11_LCD-wiring
ESP32-11_LCD-wiring-schematic
ESP32-11_LCD-wiring-schematic
810-ESP32 Tutorial 11/55- Arduino code for LCD using ESP32
Taal: C++
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>

//SDA->21,SCL->22 
LiquidCrystal_I2C lcd(0x27,16,2);  // set the LCD address to 0x27 for a 16 chars and 2 line display

int count = 0;

void setup()
{
  lcd.init();// initialize the lcd 
  lcd.backlight(); // Turns on the LCD backlight.
  lcd.print("Hello, world!");   // Print a message to the LCD.
  delay(3000);
}

void loop()
{
  lcd.clear(); 
  lcd.setCursor(0, 0); // Sets the cursor position to the first row and first column (0, 0).
  lcd.print("COUNT: ");
  lcd.print(count); // Prints the current value of the count variable.
  delay(1000);
  count++; // Increments the counter by 1. 
}

Hulpmiddelen en referenties

Bestanden📁

Geen bestanden beschikbaar.