5.1 Katse LCD ekraani kasutamine
Tinkercad

Kood
// lisame LiquidCrystal library
#include <LiquidCrystal.h>
// määrame, milliste digitaalpesadega ekraan ühendatud on
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
// loome erisümbolid
byte smiley[8] ={0b00000,0b00000,0b01010,0b00000,0b00000,0b10001,0b01110,0b00000};
byte armsDown[8] ={0b00100,0b01010,0b00100,0b00100,0b01110,0b10101,0b00100,0b01010};
byte armsUp[8] ={0b00100,0b01010,0b00100,0b10101,0b01110,0b00100,0b00100,0b01010};
byte kass[8] ={0b00000,0b00000,0b00000,0b10000,0b10011,0b11111,0b01110,0b01010};
byte tydruk[8] ={0b00100,0b01010,0b00100,0b11111,0b00100,0b00100,0b01110,0b11111};
byte v2ikesyda[8] ={0b00000,0b00000,0b00000,0b11011,0b11111,0b11111,0b01110,0b00100};
void setup() {
// algväärtustatakse LDC ekraani read ja veerud
lcd.begin(16, 2);
// defineerime erisümbolid
lcd.createChar(1, smiley);
lcd.createChar(3, armsDown);
lcd.createChar(4, armsUp);
lcd.createChar(5, kass);
lcd.createChar(6, tydruk);
lcd.createChar(7, v2ikesyda);
}
void loop() {
// koht kuhu hakkame joonistama - 3. veerg, esimene rida
lcd.setCursor(2, 0);
// joonistame kassi
lcd.write(5);
// ja tüdruku
lcd.write(6);
//muudame kursori asukohta: 2. rida 14. veerg
lcd.setCursor(13, 1);
// joonistame poisi
lcd.write(3);
delay(400);
//muudame kursori asukohta: 1. rida 5. veerg
lcd.setCursor(4, 0);
//joonistame for tsükli abil väikese pausiga 10 smaili
for (int koht = 0; koht < 10; koht++) {
lcd.write(1);
delay(400);
}
lcd.setCursor(13, 1);
lcd.write(4);
//loobime südameid
for (int koht = 13; koht >= 4; koht--) {
lcd.setCursor(koht, 0);
lcd.write(7);
delay(400);
}
delay(400);
}
Kuidas kood töötab
Kood kuvab LCD-ekraanil enda loodud sümbolite abil animatsiooni: tüdruk, kass, poiss ja südamed. Eri sümbolid luuakse alguses ning kuvatakse ekraanile erinevates asukohtades. Smailid joonistatakse järjestikku ja südamed liiguvad tüdruku juurest poisi suunas. Animatsioon kordub pidevalt.
Uued Funktsioonid
lcd.begin(cols, rows)– initsialiseerib LCD-ekraani määratud veergude ja ridade arvuga.lcd.createChar(num, data)– loob kohandatud sümboli, kusnumon ID (0–7) jadataon baitide massiiv.lcd.setCursor(col, row)– seab kursori asukoha LCD-ekraanil, kuhu järgnev tekst/sümbol kuvatakse.lcd.write(value)– kuvab sümboli LCD-ekraanile, näiteks kohandatud sümboli ID.
Kuidas elus kasutada
- Õppematerjalina programmeerimise ja LCD-ekraanide tööpõhimõtete õpetamisel algajatele.
- Dekoratiivse ekraanina näiteks kingituse osana, mis kuvab armsat animatsiooni (tüdruk, poiss, süda).
- Interaktiivse projektina, kus sümbolid või animatsioon muutuvad vastavalt näiteks nupuvajutusele või anduri väärtusele (nt liikumisanduriga armastusrobot).
Ülesanne 5 Interaktiivne infoekraan “Ilmajaam”
Tinkercad

Kood
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int tempPin = A0;
const int lightPin = A1;
unsigned long previousMillis = 0;
int secondsPassed = 0;
void setup() {
lcd.begin(16, 2);
lcd.print("Meteostantsiya");
delay(2000);
lcd.clear();
}
void loop() {
// Обновляем каждые 1000 мс
if (millis() - previousMillis >= 1000) {
previousMillis = millis();
secondsPassed++;
}
// Температура
int tempRaw = analogRead(tempPin);
float voltage = tempRaw * (5.0 / 1023.0);
float temperature = (voltage - 0.5) * 100;
// Освещённость
int lightLevel = analogRead(lightPin);
// "Погода"
String phrase;
if (temperature < 10) phrase = "Prokhladno";
else if (temperature > 28) phrase = "Ochen zharko";
else if (temperature > 18 && lightLevel > 600) phrase = "Solnechny den";
else if (lightLevel < 300) phrase = "Pasmurno";
else phrase = "Teplo i yasno";
// Время (MM:SS)
int minutes = secondsPassed / 60;
int seconds = secondsPassed % 60;
char timeStr[6];
sprintf(timeStr, "%02d:%02d", minutes, seconds);
// Строка 1
lcd.setCursor(0, 0);
lcd.print("T:");
lcd.print(temperature, 1);
lcd.print((char)223);
lcd.print(" L:");
lcd.print(lightLevel);
// Строка 2
lcd.setCursor(0, 1);
lcd.print(phrase);
lcd.setCursor(11, 1); // Пишем время справа
lcd.print(timeStr);
delay(500);
}
Kuidas kood töötab
1. Initsialiseerimine:
Pärast sisselülitamist kuvatakse ekraanile tekst “Meteostantsiya”, seejärel algab põhitsükkel.
2. Andmete kogumine:
- Temperatuur loetakse TMP36 andurilt (A0 pin) ja teisendatakse Celsiuse kraadideks.
- Valgustugevus loetakse LDR-ilt (A1 pin), väärtuses vahemikus 0 kuni 1023.
3. Kuvamine ekraanil:
- Esimene rida: temperatuur (°C) ja valguse tase.
- Teine rida: ilmastikutingimuste kirjeldus sõltuvalt temperatuurist.
4. Fraasid ja tingimused:
temperatuur < 5→ “Prokhladno”5 ≤ temperatuur < 20→ “Pasmurno”20 ≤ temperatuur < 28→ “Teplo i yasno”28 ≤ temperatuur < 35→ “Solnechny den”temperatuur ≥ 35→ “Ochen zharko”
5. Andmete uuendamine: toimub iga sekund, fraas valitakse uuesti vastavalt temperatuurile.
Uued Funktsioonid
millis()– Tagastab millisekundite arvu, mis on möödunud programmi käivitamisest, võimaldades jälgida aega ilmadelay()kasutamata.analogRead(pin)– Analoogsignaali lugemine pinnilt, mis on kasulik andurite, näiteks temperatuuri või valguse taseme mõõtmiseks.(voltage - 0.5) * 100;– Analoogsignaali teisendamine temperatuurianduri väärtuseks, mis võimaldab töötada anduritega, nagu TMP36.String phrase;– Muutujat, millele salvestatakse hetkeilma kirjeldus, mis muutub sõltuvalt temperatuurist ja valguse tasemest.sprintf(timeStr, "%02d:%02d", minutes, seconds);– Aja vormindamine stringiks formaadis MM:SS, mis on kasulik aja kuvamiseks ekraanil.lcd.setCursor(0, 0);– Kursorite positsiooni seadistamine ekraanil, et kuvada teavet, võimaldades teksti paigutuse kontrollimist.lcd.print(temperature, 1);– Temperatuuri kuvamine ekraanil ühe koma järel, mis teeb andmed täpsemaks ja arusaadavamaks.
Kuidas elus kasutada
- Ilmastijaam kodus või aias: Selle seadme abil saab jälgida kliimatingimusi teatud piirkonnas (näiteks toas või õues). Sa saad jälgida temperatuuri ja valgustust, mis on kasulik kasvuhoonetes, talveaedades või lihtsalt mugava elu tagamiseks.
- Ilmajaama süsteem: Seda koodi saab kohandada kasutamiseks ilmajaamades, kus tuleb jälgida temperatuuri ja valgustuse taseme muutusi. Näiteks, kui paigaldada andurid erinevatesse kohtadesse linnas või õues, saab saada reaalajas ilmastikuandmeid.
- Interjöörivalgustus: Valgustuse taseme andmete põhjal saab automaatselt reguleerida valgustuse heledust ruumis. Näiteks, kui valgustuse tase on alla teatud normi, saab sisse lülitada täiendavad valgustusallikad või ühendada automatiseeritud süsteemid valgustuse reguleerimiseks.
Video
https://drive.google.com/file/d/1borwwZkx1wWLfb4G_x__yzbjZJX2-1SN/view?usp=sharing