5. Teema LCD ekraan
5.1 Katse LCD ekraani kasutamine

Ülesanne 5 Interaktiivne infoekraan “Ilmajaam”
Töö kirjeldus
See on väike masin, mis mõõdab temperatuuri. Kui ilm on soe, siis ekraanil on kirjas “soe”, päike ja naerunägu. Kui ilm on külm, siis näeb “külm”, kuu ja kurb nägu. Temperatuur kuvatakse ka arvutis.
Kasutatud komponenid
Arduino Uno
Arendusplaat
Potentsioometr 1tk
LCD ekraan 1602
Temperatuuri andur TMP
Takisti 220 Om
Juhtmed 19 tk
Töö protsess:
- Ühendasin temperatuurisensori ja LCD-ekraani Arduino külge.
- Kirjutasin programmi, mis:
- mõõdab temperatuuri,
- näitab, kas on soe või külm,
- kuvab emotsiooni (naer või kurbus),
- saadab temperatuuri ka arvutisse (Serial Monitor).
- Ikoonid (päike, kuu, näod) on tehtud binaarkoodiga.
Kasutamisvõimalused tavaelus
- Kasvuhoonesse – et kontrollida, kas taimedel on soe.
- Tuppa – lihtne viis näha, kas on mõnus temperatuur.
- Lastele õppimiseks – lõbus viis õppida elektroonikat.
- Kooli projekt – hea näide andurite ja ekraani kasutamisest.
Skeem:

Programm:
#include <LiquidCrystal.h> // ühendame LCD-ekraani teegi
// loome LCD-ekraani objekti ja määrame, millised pin-id on ühendatud
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int temperaturePin = A0; // temperatuurianduri sisend pin A0
// tekst, mida näitame, kui on soe
const char* myStrings[] = {
"temperatuur", // 1. rida
"on soe" // 2. rida, kui on soe
};
// tekst, mida näitame, kui on külm
const char* coldStrings[] = {
"temperatuur", // 1. rida
"on kylm" // 2. rida, kui on külm
};
// loome naeratava näo sümboli (smiley)
byte smiley[8] ={
0b00000,
0b00000,
0b01010, // silmad
0b00000,
0b00000,
0b10001, // suu
0b01110,
0b00000
};
// loome kurva näo sümboli (sadface)
byte sadface[8] = {
0b00000,
0b01010, // silmad
0b00000,
0b00000,
0b00000,
0b00000,
0b01110, // kurb suu
0b10001
};
// päikese sümbol (sun)
byte sunSymbol[8] = {
0b10101,
0b01110,
0b01110,
0b11111,
0b11111,
0b01110,
0b01110,
0b10101
};
// kuu sümbol (moon)
byte moonSymbol[8] = {
0b00000,
0b00100,
0b01110,
0b01110,
0b01110,
0b00100,
0b00000,
0b00000
};
void setup() {
lcd.begin(16, 2); // käivitame LCD-ekraani suurusega 16x2
lcd.createChar(0, smiley); // salvestame smiley sümboli kohale 0
lcd.createChar(1, sadface); // salvestame sadface sümboli kohale 1
lcd.createChar(2, sunSymbol); // salvestame päikese sümboli kohale 2
lcd.createChar(3, moonSymbol);// salvestame kuu sümboli kohale 3
Serial.begin(9600); // käivitame Serial Monitori (näitab arvutis temperatuuri)
}
void loop() {
int temperature = analogRead(temperaturePin); // loeme temperatuurianduri väärtuse (0–1023)
float celsius = map(temperature, 0, 1023, -40, 250); // teisendame selle kraadideks
lcd.setCursor(0, 0); // liigutame kursorit esimese rea algusesse
lcd.print(myStrings[0]); // kuvame sõna "temperatuur"
lcd.setCursor(0, 1); // teise rea algusesse
if (celsius > 22) { // kui temperatuur on üle 22 kraadi
lcd.print(myStrings[1]); // näitame "on soe"
lcd.write((uint8_t)2); // päikese sümbol
lcd.write((uint8_t)0); // naeratav nägu
} else {
lcd.print(coldStrings[1]); // kui jahe, näitame "on kylm"
lcd.write((uint8_t)3); // kuu sümbol
lcd.write((uint8_t)1); // kurb nägu
}
// näitame temperatuuri ka arvutis (Serial Monitoris)
Serial.print("Temperature: ");
Serial.print(celsius);
Serial.println("C");
delay(1000); // ootame 1 sekundi, siis uuendame
lcd.clear(); // puhastame ekraani enne uut mõõtmist
}