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 (piem. Uno, Nano) ar USB kabeli
  2. Bredbords 400 punktu Half+
  3. Bredbords 170 punktu Mini
  4. Savienošanas vadi 10cm male-male 14 gab
  5. Rezistori 2KΩ 1 gab., 220Ω 1 gab.
  6. LCD ekrāns HD44780 1602 (16×2)

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

Nākamā, 12. nodarbība – Temperatūra un mitrums, bibliotēkas instalēšana