5. Katse LCD ekraani kasutamine
Projekti koostamiseks läheb vaja:
1 x 1602 LCD ekraan
1 x potentsiomeeter
16 x tavalised üksikud isane-isane juhtmed
1 x 330 Ω takisti
1 x arduino uno plaat
/*
// 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.2. DateTime (RTClib.h teeke kasutamine)
Projekti koostamiseks läheb vaja:
1 x arduino uno plaat
#include <Wire.h>
#include <RTClib.h>
RTC_DS1307 rtc;
void setup() {
Serial.begin(9600);
Wire.begin();
rtc.begin();
// Проверка, работает ли RTC
if (!rtc.isrunning()) {
Serial.println("RTC is NOT running!");
// Если RTC не работает, установим текущее время
rtc.adjust(DateTime(__DATE__, __TIME__));
}
}
void loop() {
// Получение текущего времени из RTC
DateTime now = rtc.now();
// Вывод текущей даты и времени в монитор последовательного порта
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
// Задержка перед следующим обновлением времени
delay(1000);
}
Ülesanne 5 Interaktiivne infoekraan “Ilmajaam”
23 ühtmed
2 takisti 220 ом
temperaturi mõtmise andur TMP36
1 servo
1 pote
1 LCD экран.
Töö protsess:
Kui temperatuur on alla 22 kraadi, on servo “suletud” olekus. Kui temperatuur tõuseb, “avaneb” servo järk-järgult. Temperatuur kuvatakse ekraanil, et soovida head päeva ja nädalapäeva.

Programm:
#include <LiquidCrystal.h>
#include <Servo.h>
Servo servo1;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int sensorPin = 0;
const char *daysOfWeek[] = {"esm", "teis", "kol", "nel", "reede", "lau", "Puh"};
void setup() {
lcd.begin(16, 2);
servo1.attach(9);
}
void loop() {
lcd.clear();
int reading = analogRead(sensorPin);
float voltage = reading * 5.0;
voltage /= 1024.0;
float temperatureC = (voltage - 0.5) * 100;
unsigned long currentTime = millis();
unsigned long seconds = currentTime / 1000;
unsigned long minutes = seconds / 60;
unsigned long hours = minutes / 60;
unsigned long days = hours / 24;
unsigned long currentDay = days % 7; // Определение текущего дня недели
lcd.setCursor(0, 0);
lcd.print("Head paeva, ");
lcd.print(daysOfWeek[currentDay]); // Выводим текущий день недели
lcd.setCursor(0, 1);
lcd.print(temperatureC);
lcd.println(" kraadid. C ");
delay(1000);
if (temperatureC > 22) {
servo1.write(map(temperatureC, 22, 100, 0, 180));
delay(1250);
} else {
servo1.write(0);
delay(1000);
}
}
Video:
Uued funktsioonid:
lcd.begin()
: LCD-ekraani algseadistusfunktsioon, mis määrab ekraani suuruse.lcd.createChar()
: Funktsioon, mis loob kohandatud tähemärgid (emotikonid) LCD-ekraanile.lcd.clear()
: Funktsioon, mis puhastab LCD-ekraani sisu.lcd.setCursor()
: Funktsioon, mis seab kursori LCD-ekraanil konkreetsele positsioonile.lcd.write()
: Funktsioon, mis kirjutab määratud tähemärgi (emotikoni) LCD-ekraanile.lcd.print()
: Funktsioon, mis kuvab teksti LCD-ekraanile.
Kus saab neid komponente veel kasutada?
Näiteks ventilaator, mis näitab pöörlemiskiirust ja lülitub sisse ainult siis, kui ruumis läheb kuumaks.