Arduino Nano - LCD

Deze tutorial leert u hoe u een LCD-display gebruikt met de Arduino Nano, en hoe u de Arduino Nano programmeert om tekst en speciale tekens op het LCD-scherm weer te geven.

Hardware Benodigdheden

1×Official Arduino Nano
1×Alternatief: DIYables ATMEGA328P Nano Development Board
1×USB A naar Mini-B USB-kabel
1×LCD I2C
1×Jumperdraden
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor Arduino Nano
1×(Aanbevolen) Breakout Uitbreidingsboard voor Arduino Nano
1×(Aanbevolen) Stromsplitter voor Arduino Nano

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over LCD I2C 16x2

Een LCD I2C bestaat uit een standaard LCD, een I2C-module en een potentiometer. Het wordt sterk aanbevolen om de LCD I2C te gebruiken in plaats van een standaard LCD, omdat de bedrading veel eenvoudiger is bij gebruik van de LCD I2C.

De LCD Pinout

De LCD I2C maakt verbinding met de Arduino Nano via de I2C-interface. Het heeft vier pinnen:

  • De GND-pin moet worden aangesloten op de massa (0V).
  • De VCC-pin is de voedingsspanning van het LCD en moet worden aangesloten op VCC (5V).
  • De SDA-pin is het I2C data signaal.
  • De SCL-pin is het I2C kloksignaal.
LCD I2C pinout

LCD Coördinaten

De LCD I2C 16x2 heeft 16 kolommen en 2 rijen, waarbij de kolommen en rijen genummerd zijn vanaf 0.

Arduino Nano LCD I2C coordinate

Aansluitschema

Arduino Nano LCD I2C wiring diagram

This image is created using Fritzing. Click to enlarge image

LCD I2C module Arduino Nano
Vin 5V
GND GND
SDA A4
SCL A5

Hoe te Programmeren voor LCD I2C

De LiquidCrystal_I2C bibliotheek moet worden geïmporteerd om de LCD te kunnen gebruiken.

  • Stel het LCD in:

Het LCD moet correct worden ingesteld zodat het goed werkt.

  • Schrijven naar het LCD:

Het schrijven naar het LCD is eenvoudig dankzij de LiquidCrystal_I2C bibliotheek.

#include <LiquidCrystal_I2C.h> // Bibliotheek voor LCD
  • Maak een LiquidCrystal_I2C object aan met het I2C-adres, het aantal kolommen en het aantal rijen als parameters.
LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C-adres 0x27, 16 kolommen en 2 rijen
  • Start het LCD op.
lcd.init(); // initialiseer het lcd lcd.backlight(); // zet de achtergrondverlichting aan
  • Ga naar de kolom en rij aangeduid door column_index en row_index respectievelijk.
lcd.setCursor(column_index, row_index);
  • Toon een bericht op het LCD.
lcd.print("Hello World!");

Ontdek wat er mogelijk is met het LCD in de sectie "Meer doen met LCD".

※ Notiz:

Het adres van het LCD kan verschillen per fabrikant. Voor onze code gebruikten we 0x27 zoals gespecificeerd door DIYables.

Arduino Nano Code

#include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C-adres 0x27, 16 kolommen en 2 rijen void setup() { lcd.init(); // Initialiseer het LCD I2C display lcd.backlight(); lcd.setCursor(3, 0); // zet cursor op (3, 0) lcd.print("DIYables"); // print bericht op (3, 0) lcd.setCursor(0, 1); // zet cursor op (0, 1) lcd.print("www.diyables.io"); // print bericht op (0, 1) } void loop() { }

Snelle Stappen

  • Klik op het Libraries-icoon in de linker balk van de Arduino IDE.
  • Zoek naar "LiquidCrystal I2C" en vind de LiquidCrystal_I2C library gemaakt door Frank de Brabander.
  • Klik vervolgens op de Installeren-knop om de bibliotheek toe te voegen.
Arduino Nano LiquidCrystal I2C library
  • Kopieer de code en open deze met de Arduino IDE.
  • Klik op de Uploaden-knop in de IDE om de code naar de Arduino Nano te sturen.
  • Controleer het LCD voor het resultaat.
Arduino Nano display text on LCD
  • Experimenteer met het aanpassen van de tekst en de positie ervan.

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.

Bekijk onze video-tutorial voor een visuele begeleiding bij dit project! De video biedt extra inzichten om u te helpen het LCD-display met Arduino Nano te begrijpen en toe te passen.

Meer doen met LCD

Aangepaste Karakter

lcd.print() werkt alleen met ASCII-tekens. Om een speciaal karakter of symbool (bijv. hartje, boos vogeltje) weer te geven, moet u de karaktergenerator gebruiken.

Een LCD 16x2 kan maximaal 32 tekens tonen. Elk teken bestaat uit 40 pixels, verdeeld over 8 rijen en 5 kolommen.

Arduino Nano LCD 16x2 Pixel

De karaktergenerator maakt een teken van 40 pixels groot. Volg simpelweg deze stappen:

Klik op elke pixel om te selecteren/deselecteren


Kopieer onderstaande code voor het aangepaste karakter
Vervang in onderstaande code de customChar[8]
#include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C-adres 0x27, 16 kolommen en 2 rijen byte customChar[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000, 0b00000 }; void setup() { lcd.init(); // Initialiseer het LCD I2C display lcd.backlight(); lcd.createChar(0, customChar); // maak een nieuw aangepast karakter aan lcd.setCursor(2, 0); // zet cursor op (2, 0) lcd.write((byte)0); // print het aangepaste karakter op (2, 0) } void loop() { }

Het LCD toont het resultaat. Het weergegeven resultaat verschijnt op het LCD.

LCD custom character

Meerdere aangepaste karakters

U kunt maximaal 8 aangepaste karakters maken, genummerd van 0 tot 7. Onderstaand voorbeeld laat zien hoe u er drie tegelijk maakt en toont.

#include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); // I2C-adres 0x27, 16 kolommen en 2 rijen byte customChar0[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000, 0b00000 }; byte customChar1[8] = { 0b00100, 0b01110, 0b11111, 0b00100, 0b00100, 0b00100, 0b00100, 0b00100 }; byte customChar2[8] = { 0b00100, 0b00100, 0b00100, 0b00100, 0b00100, 0b11111, 0b01110, 0b00100 }; void setup() { lcd.init(); // Initialiseer het LCD I2C display lcd.backlight(); lcd.createChar(0, customChar0); // maak nieuw aangepast karakter (index 0) lcd.createChar(1, customChar1); // maak nieuw aangepast karakter (index 1) lcd.createChar(2, customChar2); // maak nieuw aangepast karakter (index 2) lcd.setCursor(2, 0); // zet cursor op (2, 0) lcd.write((byte)0); // print aangepast karakter 0 op (2, 0) lcd.setCursor(4, 0); // zet cursor op (4, 0) lcd.write((byte)1); // print aangepast karakter 1 op (4, 0) lcd.setCursor(6, 0); // zet cursor op (6, 0) lcd.write((byte)2); // print aangepast karakter 2 op (6, 0) } void loop() { }

Het resultaat dat op het LCD verschijnt is:

LCD multiple custom characters

Samenvatting: hoe gebruikt u aangepaste karakters op het LCD

  • Gebruik de karaktergenerator om binaire code te maken voor uw aangepaste karakter.
  • Kopieer de binaire code van de vorige stap.
byte customChar[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000, 0b00000 };
  • Wijs een aangepast karakter toe aan een indexwaarde van 0 tot 7 in de setup() functie.
lcd.createChar(index, customChar);
  • Druk het aangepaste karakter op het LCD af, zowel in setup() als in loop().
lcd.setCursor(column, row); // zet cursor op de gewenste positie lcd.write((byte)index); // print het aangepaste karakter op de gewenste positie

Andere functies

  • Print "Hello World"

Voeg onderstaande functies één voor één toe in de loop() functie, met een vertraging van 5000 milliseconden na elke functie:

  • Maak het scherm leeg
lcd.clear();
  • Plaats de cursor aan de linkerbovenhoek van het LCD scherm.
lcd.home();
  • Zet de cursor op een bepaalde kolom en rij.
lcd.setCursor(column, row);
  • Toon de cursor op het LCD.
lcd.cursor();
  • Maak de cursor onzichtbaar.
lcd.noCursor();
  • Laat de cursor knipperen.
lcd.blink();
  • Schakel het knipperen van de cursor uit.
lcd.noBlink();

Daag uzelf uit

Probeer een LCD te gebruiken voor een van deze projecten:

Problemen oplossen bij LCD I2C

  1. Draai aan de potentiometer aan de achterkant van het LCD om het contrast aan te passen.
  2. Afhankelijk van de fabrikant kan het I2C-adres van het LCD verschillen. Meestal is het standaardadres 0x27 of 0x3F. Probeer beide waarden. Als het nog steeds niet werkt, voer dan onderstaande code uit om het I2C-adres te achterhalen.
// 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 }

De output die verschijnt in de Serial Monitor is:

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  

※ 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!