Arduino UNO R4 - LCD I2C

Deze tutorial legt u uit hoe u een 16x2 LCD I2C interface gebruikt met een Arduino UNO R4. In detail gaan we het volgende leren:

Arduino UNO R4 and 16x2 LCD I2C

Over LCD I2C 16x2

Het 16x2 LCD I2C is een display met 16 kolommen en 2 rijen. Het is uitgerust met een I2C interface en bevat een potentiometer voor contrastregeling.

Pinout

Het LCD I2C maakt verbinding via een I2C interface en heeft 4 pinnen.

  • GND-pin: verbind met GND (0 volt).
  • VCC-pin: verbind met VCC voor voeding (5 volt).
  • SDA-pin: draagt het I2C datasignaal.
  • SCL-pin: draagt het I2C klocsignaal.
LCD I2C Pinout

LCD Coördinaten

Het LCD I2C 16x2 heeft 16 kolommen en 2 rijen. Zowel kolommen als rijen beginnen met nummering vanaf 0.

Arduino UNO R4 LCD I2C Coordinate

Bedradingsschema

Arduino UNO R4 LCD I2C Wiring Diagram

This image is created using Fritzing. Click to enlarge image

Zie De beste manier om Arduino Uno R4 en andere componenten van stroom te voorzien.

LCD I2C Arduino UNO R4, Nano Arduino Mega
Vin 5V 5V
GND GND GND
SDA A4 20
SCL A5 21

Hoe te Programmeren voor LCD I2C

Het gebruik van de LiquidCrystal_I2C bibliotheek maakt het omgaan met het LCD heel eenvoudig.

  • Voeg de bibliotheek toe:
#include <LiquidCrystal_I2C.h>
  • Maak een LiquidCrystal_I2C object aan door het I2C-adres, het aantal kolommen en het aantal rijen te specificeren.
LiquidCrystal_I2C lcd(0x27, 16, 2); // Initialiseer het LCD met I2C adres 0x27 voor een 16x2 display
  • Stel het LCD-scherm in.
lcd.init(); // Initialiseer het LCD display lcd.backlight(); // Zet de achtergrondverlichting van het LCD aan
  • Plaats de cursor op de gewenste plek (kolom_index, rij_index).
lcd.setCursor(kolom_index, rij_index);
  • Toon een bericht op het LCD-scherm.
lcd.print("Hello World!");

We kunnen veel meer doen met een LCD (zie de sectie 'Meer doen met LCD').

※ Notiz:

Het I2C-adres voor het LCD kan verschillen afhankelijk van de fabrikant. In onze code hebben we het adres 0x27 gebruikt zoals gespecificeerd door de fabrikant DIYables.

Arduino UNO R4 Code

/* * Deze Arduino UNO R4 code is ontwikkeld door newbiely.nl * Deze Arduino UNO R4 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/arduino-uno-r4/arduino-uno-r4-lcd-i2c */ #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C address 0x27, 16 column and 2 rows void setup() { lcd.init(); // initialize the lcd lcd.backlight(); lcd.setCursor(3, 0); // move cursor to (3, 0) lcd.print("DIYables"); // print message at (3, 0) lcd.setCursor(0, 1); // move cursor to (0, 1) lcd.print("www.diyables.io"); // print message at (0, 1) } void loop() { }

Snelle Stappen

Volg deze instructies stap voor stap:

  • Als dit uw eerste keer is met de Arduino Uno R4 WiFi/Minima, raadpleeg dan de tutorial over het instellen van de omgeving voor Arduino Uno R4 WiFi/Minima in de Arduino IDE.
  • Verbind het LCD I2C display met Arduino UNO R4 volgens het meegeleverde schema.
  • Verbind het Arduino Uno R4 board met uw computer via een USB-kabel.
  • Start de Arduino IDE op uw computer.
  • Selecteer het juiste Arduino Uno R4 board (bijv. Arduino Uno R4 WiFi) en COM-poort.
  • Ga naar het Libraries pictogram aan de linkerkant van de Arduino IDE.
  • Typ "LiquidCrystal I2C" in het zoekvak en zoek naar de LiquidCrystal_I2C bibliotheek van Frank de Brabander.
  • Druk op de Install knop om de LiquidCrystal_I2C bibliotheek te installeren.
Arduino UNO R4 LiquidCrystal I2C library
  • Kopieer de code en open deze in Arduino IDE
  • Klik op de Upload knop in Arduino IDE om de code te uploaden naar Arduino UNO R4
  • Bekijk het resultaat op het LCD-scherm
Arduino UNO R4 lcd I2C display
  • Probeer de tekst en locatie te wijzigen

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Meer Doen met LCD

Aangepast Karakter

Om speciale karakters of symbolen zoals een hart of een boze vogel op een LCD te tonen, moet u de karaktergenerator gebruiken omdat de lcd.print() functie alleen ASCII-karakters kan weergeven.

Het LCD 16x2 kan 32 karakters weergeven over 2 regels, met 16 posities op elke regel. Elk karakter gebruikt 40 kleine vierkantjes, gerangschikt in 8 regels en 5 kolommen.

Arduino UNO R4 LCD 16x2 Pixel

De karaktergenerator maakt een karakter (40 pixels). U hoeft alleen deze stappen te volgen:

Klik op elke pixel om te selecteren/deselecteren


Kopieer onderstaande aangepaste karakter code
Vervang de customChar[8] in onderstaande code
#include <LiquidCrystal_I2C.h> // Initialize the LCD connected via I2C at address 0x27 with 16 columns and 2 rows LiquidCrystal_I2C lcd(0x27, 16, 2); // Define byte array for creating custom character shape byte customChar[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000, 0b00000 }; void setup() { lcd.init(); // Initialize LCD screen lcd.backlight(); // Turn on the backlight lcd.createChar(0, customChar); // Register the custom character on LCD with ID 0 lcd.setCursor(2, 0); // Set cursor to start at column 2, row 0 lcd.write((byte)0); // Display the custom character at the current cursor position } void loop(){ }

Resultaat weergegeven op het scherm:

LCD custom character

Meerdere aangepaste karakters

We kunnen tot 8 speciale karakters maken (genummerd van 0 tot 7). Het onderstaande voorbeeld toont hoe u drie karakters kunt maken en weergeven.

#include <LiquidCrystal_I2C.h> // Create an LCD object, using I2C address 0x27 with 16 columns and 2 rows LiquidCrystal_I2C lcd(0x27, 16, 2); // Define custom character 0 (heart shape) byte customChar0[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000, 0b00000 }; // Define custom character 1 (arrow pointing upwards) byte customChar1[8] = { 0b00100, 0b01110, 0b11111, 0b00100, 0b00100, 0b00100, 0b00100, 0b00100 }; // Define custom character 2 (arrow pointing downwards) byte customChar2[8] = { 0b00100, 0b00100, 0b00100, 0b00100, 0b00100, 0b11111, 0b01110, 0b00100 }; void setup() { lcd.init(); // Initialize the LCD display lcd.backlight(); // Turn on the LCD backlight // Register custom character 0 with index 0 on the LCD lcd.createChar(0, customChar0); // Register custom character 1 with index 1 on the LCD lcd.createChar(1, customChar1); // Register custom character 2 with index 2 on the LCD lcd.createChar(2, customChar2); // Set the cursor to column 2, row 0 lcd.setCursor(2, 0); // Display the custom character 0 at the current cursor position lcd.write((byte)0); // Set the cursor to column 4, row 0 lcd.setCursor(4, 0); // Display the custom character 1 at the current cursor position lcd.write((byte)1); // Set the cursor to column 6, row 0 lcd.setCursor(6, 0); // Display the custom character 2 at the current cursor position lcd.write((byte)2); } void loop() { }

Resultaat weergegeven op het liquid-crystal display (LCD):

LCD multiple custom characters

Samenvatting: hoe aangepaste karakters te gebruiken op LCD

  • Gebruik de karaktergenerator hierboven om binaire code voor uw speciale karakter te maken.
  • Noteer de binaire code voor uw karakter (kopieer uit de vorige stap).
byte customChar[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000, 0b00000 };
  • Maak een gepersonaliseerd karakter en plaats het op een nummer tussen 0 en 7 in de setup() functie.
lcd.createChar(index, customChar);
  • Toon een speciaal karakter op het LCD wanneer u wilt, ofwel in de setup() of loop() functie.
lcd.setCursor(column, row); // Stel de cursor in op de gespecificeerde kolom en rij lcd.write((byte)index); // Toon het aangepaste karakter opgeslagen op 'index' positie

Andere functies

Voeg de volgende functies één voor één toe aan de loop() functie, met een delay(5000) na elke functie.

  • LCD-display wissen
lcd.clear();
  • Plaats de cursor in de linkerbovenhoek van het scherm.
lcd.home();
  • Positioneer de cursor op een specifieke plaats (kolom, rij).
lcd.setCursor(column, row);
  • Toon de LCD-schermcursor.
lcd.cursor();
  • Zet de LCD-schermcursor uit.
lcd.noCursor();
  • Toon de knipperende LCD-cursor.
lcd.blink()
  • Stopt de knipperende LCD-cursor.
lcd.noBlink()

Problemen Oplossen met LCD I2C

Als de tekst niet verschijnt op het LCD I2C, controleer dan deze problemen:

  • Verander de LCD-schermhelderheid door de potentiometer aan de achterkant te draaien.
  • Het I2C-adres van het LCD kan variëren bij verschillende fabrikanten. Het is meestal 0x27 of 0x3F. Test deze adressen afzonderlijk. Als geen van beide werkt, gebruik dan de volgende code om het juiste I2C-adres te vinden.
// I2C address scanner program #include <Wire.h> void setup() { Wire.begin(); Serial.begin(9600); Serial.println("I2C Scanner"); } void loop() { byte error, address; int nDevices; Serial.println("Scanning..."); nDevices = 0; for(address = 1; address < 127; address++ ) { Wire.beginTransmission(address); error = Wire.endTransmission(); if (error == 0) { Serial.print("I2C device found at address 0x"); if (address < 16) Serial.print("0"); Serial.print(address,HEX); Serial.println(" !"); nDevices++; } else if (error==4) { Serial.print("Unknown error at address 0x"); if (address < 16) Serial.print("0"); Serial.println(address,HEX); } } if (nDevices == 0) Serial.println("No I2C devices found"); else Serial.println("done"); delay(5000); // wait 5 seconds for next scan }

Het resultaat weergegeven op de Serial Monitor:

COM6
Send
Scanning... I2C device found at address 0x3F ! done Scanning... I2C device found at address 0x3F ! done
Autoscroll Show timestamp
Clear output
9600 baud  
Newline  

Reacties

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!