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 ar IIC I2C adapteri, tad papildu informācija lapas apakšā.

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

Tikai tiem, kuri lieto LCD ekrānu ar IIC I2C adapteri

Slēgums ar tikai 4 vadiem:
GND – GND | VCC – 5V | SDA – A4 | SCL – A5

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)

Augstāk redzamo kodu definīcijas nomainīt ar šī 2 rindām un zem “void setup” pievienot lcd.init(); un lcd.backlight();

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2);
void setup() { 
lcd.init();
lcd.backlight();

Ekrāna kontrastu regulēt ar zilo potenciometru.

<< Iepriekšējā, 10. nodarbībaNākamā, 12. nodarbība >>