Arduino – LCD ekrāns. Teksts, sekundes, scroll un savas rakstzīmes.
Šajā nodarbībā iemācīsimies pieslēgt Arduino LCD ekrānu, rādīt uz tā tekstus un izmantot to kā sekunžu skaitītāju, ritināt tekstu pa ekrānu un izveidot savas rakstzīmes.
Nepieciešamie komponenti
- Arduino kontrolieris Nano (vai Uno ) ar atbilstošu USB kabeli
- Bredbords 400 punktu Half+
- Bredbords 170 punktu Mini
- Savienošanas vadi 10cm male-male 17 gab
- Rezistori 2KΩ 1 gab., 220Ω 1 gab.
- LCD ekrāns 1602A (vai 1602A ar I2C adapteri )
- Temperatūras un mitruma sensors DHT11 vai DHT22.
!!! Ja lieto LCD ekrānu bez IIC I2C adaptera (komplektiem pirktiem pirms 2020.g. janvāra), informāciju skatīt lapas apakšā.
LCD ekrāniem ar IIC I2C adapteri
Slēgums ar tikai 4 vadiem:
GND – GND | VCC – 5V | SDA – A4 | SCL – A5
Ekrāna kontrastu regulēt ar zilo potenciometru.
Bibliotēkas ielāde
Nepieciešams uzstādīt bibliotēku LiquidCrystal_I2C.h (Rīki – Pārvaldīt bibliotēkas – Meklēt LiquidCrystal_I2C – Instalēt).
Pārstartēt programmu.
Iebūvēti 3 piemēri: Fails – Piemēri – LiquidCrystal
(samainīt ekrāna izmēru no 20,4 uz 16,2)
Programma
Kā pieslēgt Arduino un kā lietot Arduino IDE programmu skatiet 1.nodarbībā
Atveram Arduino IDE programmu.
Fails – Jauns
Iekopējam kodu, tad Fails – Saglabāt. Pārbaudīt, tad Augšupielādēt.
Kods pielāgots no: Fails – Piemēri – LiquidCrystal – HelloWorld
/* LCD, Sveika, pasaule un sekundes */ // iekļauj biblotēku #include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); // inicializē bibliotēku, norādot pievienotos pinus LiquidCrystal lcd(2, 3, 4, 5, 6, 7); // rs, enable, d4, d5, d6, d7 void setup() { //setup darbojas vienreiz
lcd.init();
lcd.backlight(); // LCD ekrāna kolonnu un rindu skaits lcd.begin(16, 2); // Drukā ziņojumu uz LCD ekrāna lcd.print("Sveika, pasaule!"); } void loop() { //loop darbojas atkārtoti // novieto kursoru kolonnā 0, rindā 1. Skaita sākot no 0 lcd.setCursor(0, 1); // drukā sekunžu skaitu kopš ieslēgšanas lcd.print(millis() / 1000); }
Ja viss notiek:
– nomainām uzrakstu “Sveika, pasaule!” pret savu;
Uz LCD ekrāna 4-bit variantā var drukāt tikai angļu burtus, ciparus, pieturzīmes
– noliekam sekunžu kursoru vidū astotajā kolonnā, otrajā rindā (7, 1).
Dažādus LCD ekrāna izmantošanas iespējas parādītas šeit:
www.arduino.cc/en/Reference/LiquidCrystal
Papildu uzdevums 1 – Scroll
Drukājot garāku tekstu uz LCD ekrāna, parādīsies tikai pirmie 16 burti.
Tāpēc jālieto “AutoScroll” vai “scrollDisplayLeft” un “scrollDisplayRight”, kas ļauj ritināt tekstu gan pa labi, gan pa kreisi.
Kods pielāgots no: Fails – Piemēri – LiquidCrystal – Autoscroll
/* LCD, AutoScroll */ #include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); void setup() {
lcd.init();
lcd.backlight();
lcd.begin(16, 2); } void loop() { // noliek kursoru 1.kolonnā, 1.rindā lcd.setCursor(0, 0); // drukā no 0 līdz 9: for (int thisChar = 0; thisChar < 10; thisChar++) { lcd.print(thisChar); delay(1000); } // noliek kursoru 17.kolonnā, 2.rindā lcd.setCursor(16, 1); // uzstāda automātisku skrollēšanu lcd.autoscroll(); // drukā no 0 līdz 9: for (int thisChar = 0; thisChar < 10; thisChar++) { lcd.print(thisChar); delay(1000); } // izslēdz utomātisku skrollēšanu lcd.noAutoscroll(); // notīra ekrānu lcd.clear(); }
ScrollDisplayLeft” un ScrollDisplayRight
Kods pielāgots no: Fails – Piemēri – LiquidCrystal – Scroll
/* LCD, Scroll */ #include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); void setup() { lcd.init();
lcd.backlight();
lcd.begin(16, 2); lcd.print("Mezonigi gara pirma rinda "); lcd.setCursor(0,1); lcd.print("Pavisam milziga otra rinda"); delay(1000); } void loop() { for(int Pozicija=0; Pozicija<16; Pozicija++) { lcd.scrollDisplayLeft(); delay(1000); } for(int Pozicija=0; Pozicija<16; Pozicija++) { lcd.scrollDisplayRight(); delay(1000); } }
Abas rindas pārvietosies 16 pozīcijas pa kreisi un tad 16 pozīcijas pa labi.
Papildu uzdevums 2 – Savas rakstzīmes
Izveidosim savus smailijus – sirdi un seju.
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); byte sirds[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000 }; byte seja[8] = { 0b00000, 0b00000, 0b01010, 0b00000, 0b00000, 0b10001, 0b01110, 0b00000 }; void setup() {
lcd.init();
lcd.backlight(); lcd.createChar(0, sirds); lcd.createChar(1, seja); lcd.begin(16, 2); lcd.write(byte(0)); lcd.write((byte)1); } void loop() {}
Vairāk, paņemot piemēru no: Fails – Piemēri – LiquidCrystal – CustomCharacter
Dažādi kursoru veidi piemēros: Cursor, setCursor, Blink
Teksta rakstīšana pretējāja virzienā: TextDirection
<< Iepriekšējā, 10. nodarbība | Nākamā, 12. nodarbība >>
Tikai LCD ekrāniem bez IIC I2C adaptera
(komplektiem, kuri pirkti pirms 2020.g. janvāra)
Skaidrojums
Ekrāns darbosies, izmantojot LiquidCrystal bibliotēku (library), kas ir jau iebūvēta Arduino IDE programmā. Tā darbojas ar dažādiem LCD ekrāniem ar Hitachi HD44780 driveri un 16 pinu interfeisu.
Slēgums
Slēdzam LCD ekrānu pie digitālajiem piniem šādi:
VSS – GND, VDD – +5V
V0 – GND (caur 2KΩ rezistoru)
RS – 2, RW – GND, E – 3
D0, D1, D2, D3 – tukši
D4 – 4, D5 – 5, D6 – 6, D7 – 7
A – +5V (caur 220Ω rezistoru), K – GND
V0 ar 2KΩ rezistoru pie GND tiek iestādīts ekrāna kontrasts. Var lietot savādākus rezistorus vai potenciometru (tad slēgums +5V|V0|GND)
A un K baro LCD ekrāna aimugurapgaismojumu, tāpēc jālieto 220Ω rezistors.
Programma
Kā pieslēgt Arduino un kā lietot Arduino IDE programmu skatiet 1.nodarbībā
Atveram Arduino IDE programmu.
Fails – Jauns
Iekopējam kodu, tad Fails – Saglabāt. Pārbaudīt, tad Augšupielādēt.
Kods pielāgots no: Fails – Piemēri – LiquidCrystal – HelloWorld
/* LCD, Sveika, pasaule un sekundes */ // iekļauj biblotēku #include <LiquidCrystal.h> // inicializē bibliotēku, norādot pievienotos pinus LiquidCrystal lcd(2, 3, 4, 5, 6, 7); // rs, enable, d4, d5, d6, d7 void setup() { //setup darbojas vienreiz // LCD ekrāna kolonnu un rindu skaits lcd.begin(16, 2); // Drukā ziņojumu uz LCD ekrāna lcd.print("Sveika, pasaule!"); } void loop() { //loop darbojas atkārtoti // novieto kursoru kolonnā 0, rindā 1. Skaita sākot no 0 lcd.setCursor(0, 1); // drukā sekunžu skaitu kopš ieslēgšanas lcd.print(millis() / 1000); }
Ja viss notiek:
– nomainām uzrakstu “Sveika, pasaule!” pret savu;
Uz LCD ekrāna 4-bit variantā var drukāt tikai angļu burtus, ciparus, pieturzīmes
– noliekam sekunžu kursoru vidū astotajā kolonnā, otrajā rindā (7, 1).
Dažādus LCD ekrāna izmantošanas iespējas parādītas šeit:
www.arduino.cc/en/Reference/LiquidCrystal
Papildu uzdevums 1 – Scroll
Drukājot garāku tekstu uz LCD ekrāna, parādīsies tikai pirmie 16 burti.
Tāpēc jālieto “AutoScroll” vai “scrollDisplayLeft” un “scrollDisplayRight”, kas ļauj ritināt tekstu gan pa labi, gan pa kreisi.
Kods pielāgots no: Fails – Piemēri – LiquidCrystal – Autoscroll
/* LCD, AutoScroll */ #include <LiquidCrystal.h> LiquidCrystal lcd(2, 3, 4, 5, 6, 7); // rs, enable, d4, d5, d6, d7 void setup() { lcd.begin(16, 2); } void loop() { // noliek kursoru 1.kolonnā, 1.rindā lcd.setCursor(0, 0); // drukā no 0 līdz 9: for (int thisChar = 0; thisChar < 10; thisChar++) { lcd.print(thisChar); delay(1000); } // noliek kursoru 17.kolonnā, 2.rindā lcd.setCursor(16, 1); // uzstāda automātisku skrollēšanu lcd.autoscroll(); // drukā no 0 līdz 9: for (int thisChar = 0; thisChar < 10; thisChar++) { lcd.print(thisChar); delay(1000); } // izslēdz utomātisku skrollēšanu lcd.noAutoscroll(); // notīra ekrānu lcd.clear(); }
ScrollDisplayLeft” un ScrollDisplayRight
Kods pielāgots no: Fails – Piemēri – LiquidCrystal – Scroll
/* LCD, Scroll */ #include <LiquidCrystal.h> LiquidCrystal lcd(2, 3, 4, 5, 6, 7); void setup() { lcd.begin(16, 2); lcd.print("Mezonigi gara pirma rinda "); lcd.setCursor(0,1); lcd.print("Pavisam milziga otra rinda"); delay(1000); } void loop() { for(int Pozicija=0; Pozicija<16; Pozicija++) { lcd.scrollDisplayLeft(); delay(1000); } for(int Pozicija=0; Pozicija<16; Pozicija++) { lcd.scrollDisplayRight(); delay(1000); } }
Abas rindas pārvietosies 16 pozīcijas pa kreisi un tad 16 pozīcijas pa labi.
Papildu uzdevums 2 – Savas rakstzīmes
Izveidosim savus smailijus – sirdi un seju.
#include <LiquidCrystal.h> LiquidCrystal lcd(2, 3, 4, 5, 6, 7); byte sirds[8] = { 0b00000, 0b01010, 0b11111, 0b11111, 0b11111, 0b01110, 0b00100, 0b00000 }; byte seja[8] = { 0b00000, 0b00000, 0b01010, 0b00000, 0b00000, 0b10001, 0b01110, 0b00000 }; void setup() { lcd.createChar(0, sirds); lcd.createChar(1, seja); lcd.begin(16, 2); lcd.write(byte(0)); lcd.write((byte)1); } void loop() {}
Vairāk, paņemot piemēru no: Fails – Piemēri – LiquidCrystal – CustomCharacter
Dažādi kursoru veidi piemēros: Cursor, setCursor, Blink
Teksta rakstīšana pretējāa virzienā: TextDirection
<< Iepriekšējā, 10. nodarbība | Nākamā, 12. nodarbība >>
-
LCD ekrāns 1602A ar IIC I2C adapteri€9.50
-
Arduino sākumkomplekts 12 nodarbībām NANO€45.00
-
Mini USB kabelis 80cm€1.80
-
Savienošanas vadi 10cm/20cm – 20gab.€3.00 – €4.00
-
Bredbords Mini 170-punktu€2.00
-
Bredbords half+ 400-punktu€5.00
-
Rezistori (pretestības) 0.25W metāla plēves€0.10
-
NodeMcu V3 ESP8266 CH340G ESP-12E WIFI€14.00
-
NANO 3.0 ATmega328P, Mini USB, CH340G€12.00
-
UNO R3 ATmega328P PrinterUSB CH340G€18.00