
Projekti koostamiseks läheb vaja:
1 x 1602 LCD ekraan
1 x potentsiomeeter
16 x tavalised üksikud isane-isane juhtmed
1 x 220 Ω takisti
// 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);
}
2. Töö kestus milles() abil
Kellaaega lugemine ja kuvamine Arduino sisemise taimeri abil, kasutades funktsiooni millis().
Mis on millis()?
millis() on Arduino sisemine taimer, mis loeb aega alates seadme käivitumisest millisekundites (1 sekund = 1000 ms).
Sellega saad luua lihtsa “peamurdmiseta” kella, mis näitab tööaja kulgu (nt Töö kestus: 00:10:25).
Näide: tööaja loendur Serial Monitoris
unsigned long algusAeg;
unsigned long kestus;
void setup() {
Serial.begin(9600);
algusAeg = millis(); // Salvestame, millal töö algas
Serial.println("Töö algas!");
}
void loop() {
kestus = millis() - algusAeg;
unsigned long sekundid = kestus / 1000;
unsigned int tunnid = sekundid / 3600;
unsigned int minutid = (sekundid % 3600) / 60;
unsigned int sek = sekundid % 60;
Serial.print("Töö kestus: ");
if (tunnid < 10) Serial.print('0');
Serial.print(tunnid);
Serial.print(':');
if (minutid < 10) Serial.print('0');
Serial.print(minutid);
Serial.print(':');
if (sek < 10) Serial.print('0');
Serial.println(sek);
delay(1000); // Uuendame iga sekund
}
Mida see teeb?
- Loeb alates Arduino käivitamisest, kui kaua töö on kestnud.
- Kuvab aega formaadis
HH:MM:SS:Töö kestus: 00:00:05 Töö kestus: 00:00:06 ...
Piirangud:
- Ei tea tegelikku kuupäeva ega kellaaega.
- Iga kord, kui Arduino taaskäivitub, loendus algab uuesti nullist.
Ülesanne 5 Interaktiivne infoekraan “Ilmajaam”
Selle ülesande eesmärk on luua oma kujundatud mini-ilmajaam, mis kuvab andmete põhjal teavet LCD-ekraanil. Kasutades erinevaid andureid (nt temperatuurisensor, valgustundlik andur, kella moodul jne), kuvatakse reaalajas ilmastikutingimused, asjakohased laused ja vastavad pildid, mis võivad muutuda sõltuvalt ajast või mõõdetud andmetest. Õpilased peavad mõtlema oma ilmajaamale nime, looma iseloomuliku tööprotsessi ja kasutama vähemalt 5 erinevat sõnumit ja pilti, mida kuvatakse LCD-ekraanil.

Komponendid
1x LCD Ekraan
1x Temperatuuri Sensori
1x Fotoresistor
1x Potentsiometer
1x 220 Oom Takisti
1x 10K Oom Takisti
20x Juhtmed
Töö protsess
Ekraani algatamine (lcd.begin(16, 2)):
- Kood alustab ekraani seadistamist, et saaksime hiljem andmeid kuvada.
- Sensori andmete lugemine:
- Temperatuur (
analogRead(tempPin)) loetakse temperatuuriandurilt (A1). Pinge teisendatakse temperatuuriks funktsiooniga(voltage - 0.5) * 100.0. - Valgustase (
analogRead(lightPin)) loetakse valgustundlikult sensorilt (A0).
Temperatuuri teisendamine (degreesF = temperature * (9.0 / 5.0) + 32.0):
- Kui temperatuur on loetud, teisendatakse see Celsiuse kraadist Fahrenheit kraadiks vastavalt sellele valemile.
Ekraanile kuvamine:
lcd.clear()puhastab ekraani iga tsükli alguses, et kuvada uus teave.lcd.print("Temp: ")jalcd.print(lightLevel)kuvavad temperatuuri ja valgustunde taseme ekraanil.- Temperatuur kuvatakse kas Celsiuses või Fahrenheitis sõltuvalt sellest, kas
fDegreeson true või false.
Ühiku vahetamine:
- Iga 500 ms tagant (
if (currentMillis - lastDegreeSwitch > 500)), vahetatakse temperatuuride kuvamise ühikut Celsiuse ja Fahrenheiti vahel.
Emotikonide kuvamine (lcd.print(":)") või lcd.print(":(")) :
- Iga 10 sekundi tagant (
if (currentMillis - lastEmojiShowTime >= emojiInterval)), kuvab ekraan kas naeratava või kurva näo, sõltuvalt sellest, kas temperatuur on üle 25°C või mitte.
Ajahaldus:
- Ajatootmiseks kasutatakse
millis()funktsiooni, mis annab koodile jooksva aja. Selle abil saab juhtida, millal andmeid lugeda, kuvada emotikone ja vahetada ühikuid.

