Arduino 11. nodarbība – LCD ekrāns

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

  1. Arduino kontrolieris Nano (vai Uno ) ar atbilstošu USB kabeli
  2. Bredbords 400 punktu Half+
  3. Bredbords 170 punktu Mini
  4. Savienošanas vadi 10cm male-male 17 gab
  5. Rezistori 2KΩ 1 gab., 220Ω 1 gab.
  6. LCD ekrāns 1602A (vai 1602A ar I2C adapteri )
  7. 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ībaNā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ībaNākamā, 12. nodarbība >>