5.1 Katse
Kasutatud komponeendid
- Adruino Uno R3 – 1
- Breadboard Small – 1
- Potentsiomeeter – 1
- Takisti – 1
- Juhe – 15
Ühendamise skeem (www.tinkercad.com)

Programm/kood kommentaridega
// 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);
}
5.3. Töö kestus milles() abil
Kasutatud komponeendid
- Adruino Uno R3 – 1
- Breadboard Small – 1
- Potentsiomeeter – 1
- Takisti – 1
- Juhe – 15
Ühendamise skeem (www.tinkercad.com)

Programm/kood kommentaridega
unsigned long algusAeg;
unsigned long kestus;
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() {
lcd.begin(16,2);
Serial.begin(9600);
algusAeg = millis();
Serial.println("Too 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("Too 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);
lcd.setCursor(0, 0);
lcd.print("Too kestus: ");
lcd.setCursor(0, 1);
if (tunnid < 10) lcd.print('0');
lcd.print(tunnid);
lcd.print(':');
if (minutid < 10) lcd.print('0');
lcd.print(minutid);
lcd.print(':');
if (sek < 10) lcd.print('0');
lcd.print(sek);
delay(1000);
}
Interaktiivne infoekraan “Ilmajaam”
Töö kirjeldus
Koodi kirjutamine, virtuaalse skeemi loomine koodi testimiseks ja valmis tulemus päris skeemil.
Kasutatud komponeendid
- Adruino Uno R3 – 1
- Breadboard Small – 1
- Photoresistor – 1
- Potentsiomeeter – 1
- Temperatuuti andur — 1
- LCD ekraan – 1
- Takisti – 3
- Juhe – 25
Töö protsess
Kood laaditakse Arduinole, mis loeb fotorresistori ja temperatuurianduri andmeid.
- Kui on pime, kuvatakse “öö”, kui valge – “päev”.
- Temperatuur kuvatakse LCD-ekraanile.
- Ikoon ja sõnum vahetuvad iga 5 sekundi järel.
- Iga 30 sekundi järel ilmub ekraanile meeldetuletus “Joo vett!” koos südamega.
Ühendamise skeem (www.tinkercad.com)

Programm/kood kommentaridega
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
const int tempPin = A0;
const int lightPin = A1;
float voltage;
char* weatherMessages[] = {
"Tana on selge paev!",
"Valmistu vihmaks!",
"Udu piirab nahtavust!",
"Pane soojad riided selga!",
"Naudi suve meeleolu!"
};
byte sun[] = {
0b00100,
0b10101,
0b01110,
0b11111,
0b01110,
0b10101,
0b00100,
0b00000
};
byte cloud[] = {
0b00000,
0b00110,
0b01111,
0b11111,
0b11111,
0b01110,
0b00000,
0b00000
};
byte rain[] = {
0b00100,
0b01110,
0b11111,
0b01010,
0b10101,
0b00000,
0b10101,
0b00000
};
byte snow[] = {
0b01010,
0b10101,
0b01110,
0b11111,
0b01110,
0b10101,
0b01010,
0b00000
};
byte heart[] = {
0b00000,
0b01010,
0b11111,
0b11111,
0b01110,
0b00100,
0b00000,
0b00000
};
unsigned long lastUpdate = 0;
const long updateInterval = 5000;
int messageIndex = 0;
unsigned long lastAd = 0;
const long adInterval = 30000;
void setup() {
Serial.begin(9600);
lcd.begin(16, 2);
lcd.createChar(0, sun);
lcd.createChar(1, cloud);
lcd.createChar(2, rain);
lcd.createChar(3, snow);
lcd.createChar(4, heart);
lcd.setCursor(0, 0);
lcd.print("Ilm: Paikseline");
lcd.setCursor(0, 1);
lcd.print("Laen andmeid...");
delay(2000);
lcd.clear();
}
float readTemperature() {
const int numReadings = 10;
long total = 0;
for (int i = 0; i < numReadings; i++) {
total += analogRead(tempPin);
delay(10);
}
int tempRaw = total / numReadings;
voltage = tempRaw * (5.0 / 1024.0);
Serial.print("tempRaw: ");
Serial.println(tempRaw);
Serial.print("Voltage: ");
Serial.println(voltage);
float degreesC = (voltage - 0.5) * 100.0;
degreesC += 2.0;
degreesC = constrain(degreesC, -40.0, 60.0);
Serial.print("Temperature: ");
Serial.println(degreesC);
return degreesC;
}
void loop() {
unsigned long currentTime = millis();
float degreesC = readTemperature();
int lightLevel = analogRead(lightPin);
lightLevel = map(lightLevel, 0, 1023, 0, 255);
lightLevel = constrain(lightLevel, 0, 255);
Serial.print("Light Level (0-255): ");
Serial.println(lightLevel);
if (currentTime - lastAd >= adInterval) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Paikseline utleb:");
lcd.setCursor(0, 1);
lcd.print("Joo vett!");
lcd.write(byte(4));
delay(3000);
lcd.clear();
lastAd = currentTime;
}
if (currentTime - lastUpdate >= updateInterval) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(weatherMessages[messageIndex]);
byte icon;
switch (messageIndex) {
case 0: icon = 0; break;
case 1: icon = 2; break;
case 2: icon = 1; break;
case 3: icon = 3; break;
case 4: icon = 0; break;
}
lcd.setCursor(15, 0);
lcd.write(icon);
lcd.setCursor(0, 1);
lcd.print("T:");
lcd.print((int)degreesC);
lcd.print("C ");
if (lightLevel < 200) {
lcd.print("Paev");
} else {
lcd.print("Oo");
}
messageIndex = (messageIndex + 1) % 5;
lastUpdate = currentTime;
}
}
Video
https://drive.google.com/file/d/1Sp7AzrN7LF5sXGtCBo4egjr7mnm1Uv8A/view?usp=sharing

