Tehtud näidisülesanded
5.1 Katse LCD ekraani kasutamine
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);
}
Uuritud funktsioonid
#include <LiquidCrystal.h>
- Lisab LiquidCrystal teegi, mis võimaldab suhelda LCD-ekraaniga (nt 16×2 märgiga ekraan).
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
- Loob
lcd-nimelise objekti, mis määrab, millised Arduino pinnid on ühendatud LCD-ekraani vastavate juhtmetega:- (RS, E, D4, D5, D6, D7)
lcd.begin(16, 2);
- Algväärtustab LCD-ekraani, öeldes, et sellel on 16 veergu ja 2 rida.
lcd.createChar(positsioon, sümbol)
- Loob kasutaja sümboli:
positsioon– koht, kuhu sümbol salvestatakse (vahemikus 0–7)sümbol– 8-bitine massiiv, mis kirjeldab sümboli kuju (5×8 pikslit)
Näited:
lcd.createChar(1, smiley); // loob naerunäo
lcd.createChar(5, kass); // loob kassi
lcd.setCursor(veerg, rida);
- Määrab kursori asukoha LCD-ekraanil:
veerg– 0 kuni 15rida– 0 või 1 (vastavalt esimene või teine rida)
lcd.write(nr);
- Kirjutab kasutaja loodud sümboli ekraanile, viidates selle positsioonile (
createCharkaudu loodud sümbol).- Näide:
lcd.write(5);kuvab ekraanile sümbolikass.
- Näide:
Serial.begin(9600);
- Käivitab Serial Monitori suhtluse kiirusel 9600 bit/s.
- Võimaldab kuvada andmeid arvutiekraanile, nt temperatuuri ja valguse väärtusi.
Temperatuuri ja pinge arvutus:
float voltage = (sensorTempVal / 1024.0) * 5.0;
float temperature = (voltage - 0.5) * 100;
- Arvutab anduri toitepinge põhjal tegeliku temperatuuri kraadides (Celsius).
- See kehtib LM35 tüüpi anduri puhul:
- 10 mV / kraadi kohta, 0.5 V offset.
Serial.print() ja Serial.println()
- Kuvavad teksti või muutuja väärtuse Serial Monitoris.
println()lisab rea lõppu uue rea,print()mitte.
Näited:
Serial.println("Temperatuur");
Serial.println(temperature);
lcd.clear();
- Kustutab kogu ekraanilt näidatava info.
millis();
- Tagastab aja millisekundites, mis on möödunud alates Arduino käivitamisest.
- Selles koodis kasutatakse seda, aga tulemus pole salvestatud ega kasutuses (mittevajalik rida):
int aeg = millis();
Töö kirjeldus
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.
Kasutatud komponeendid
- LCD-ekraan (16×2)
- Temperatuuriandur (TMP36)
- Valguse andur (fototakisti)
- Reaalaegne kell (millis() loendus)
- Juhtmed (23 tk)
- Takisti (2tk: 1tk 220 ohm, 1tk 10k ohm)
- Potentsiomeeter (250 kOhm)
- Arduino Uno plaat
Ühendamise skeem

Programm
#include<LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);
int reply;
int sensorPinTemp=A0;
const int sensorPinValgus=A1;
const float baselineTemp=20.0;
int sensorValgusVal=0;
int ValgusVal=0;
void setup() {
Serial.begin(9600); // alustab serial suhtlust
lcd.begin(16,2); // algväärtustab lcd ekraani suurusega 16x2
lcd.setCursor(0,0);
lcd.print("blessed");
lcd.setCursor(0,1);
lcd.print("Ilmajaam");
delay(2000); // paus ekraani sõnumi lugemiseks
}
void loop() {
int sensorTempVal=analogRead(sensorPinTemp); // loeb temperatuurianduri väärtuse
sensorValgusVal=analogRead(sensorPinValgus); // loeb valgusanduri väärtuse
float voltage=(sensorTempVal/1024.0)*5.0; // teisendab analoogväärtuse pingeks
float temperature=(voltage-.5)*100; // arvutab temperatuuri vastavalt anduri valemile
Serial.println("Temperatuur");
Serial.println(temperature);
Serial.print("Valgus pin: ");
Serial.println(sensorValgusVal);
ValgusVal=sensorValgusVal/4; // skaleerib valgusanduri väärtuse väiksemaks
Serial.print("Uus valgus pin: ");
Serial.println(ValgusVal);
lcd.clear(); // tühjendab ekraani
lcd.setCursor(0,0);
lcd.print("Temp: ");
lcd.setCursor(6,0);
lcd.print(temperature);
lcd.setCursor(0,1);
lcd.print("Nahtavus: ");
lcd.setCursor(10,1);
int aeg = millis(); // aeg alates seadme käivitamisest (praegu kasutamata)
if(ValgusVal<100) // kuvab ilmaolusid vastavalt valguse tasemele
{
lcd.print("Pilves");
}
else if (ValgusVal>=100 && ValgusVal <=220)
{
lcd.print("Osaline");
}
else
{
lcd.print("Selge");
}
delay(5000); // paus enne järgmise lugemise algust
}
Video
Kasutamisvõimalused tavaelus
1. Kodune ilmajaam
Eesmärk: Jälgida temperatuuri ja valguse taset toas, rõdul või kasvuhoones.
Kasu:
- Aitab teada, millal on liiga külm või palav.
- Näitab, kui palju valgust on (nt hommikul kuvatakse: „Pilves“ → „Selge“).
2. Automaatne kardinate või valgustuse juhtimine
Eesmärk: Juhtida kardinaid või lampe vastavalt valgustasemele.
Kuidas:
- Kui „Pilves“ – lülita tuli automaatselt sisse.
- Kui „Selge“ – lülita tuli välja.
3. Näidik ettevõtte fuajees või kontoris
Eesmärk: Näidata külalistele või töötajatele ruumi ilmaolusid.
Kasu:
- Interaktiivne ja visuaalne info nurk.
- Saab lisada näiteks ka kellaaja või õhuniiskuse andurid.
