LCD Ekraan
skeem:

Komponendid:
- Arduino Uno
- LCD Ekraan
- Fotoristor
- Arendusplaat
- 220Ω takisti
- Juhtmed
Mida skeem teeb?:
see on lihtne animatsioon 10-sekundilises tsüklis. See toimib nii, et konkreetsed pikslid lülitatakse sisse või välja. Kokkuvõttes: on võimalus näidata LED-ekraanil mida iganes soovite.
KATSE 5:
Töö kirjeldus:
see on temperatuuriandur aia jaoks, see annab välja uudiseid temperatursist
Asutatud komponendid:
- Arduino Uno
- TMP36 temperatuuriandur
- Fototakisti
- 10 kΩ takisti
- 2 x 220 Ω takisti
- 16×2 LCD-ekraan
- Ühenduskaablid
- Arendusplaat
- :3
Töö protsess:
see on LCD-ekraan, mis näitab iga 2 sekundi järel temperatuuri ja valguse olekut. See töötab nii, et sellel on nimekiri piltidest, mida näidatakse koos konkreetse väärtusega. Sellel on temperatuuri sensor ja fotoresistor. Nende abil annab LCD-ekraan teavet. Täpsemalt öeldes: Ekraan on kahes reas – tekst koos ikooniga ülemises reas, temperatuur ja kellaaeg alumises reas – ning iga viienda läbimise järel asendub tavaline vaade reklaamiaknaga.
Töö on tehtud koos minu sõbra Maksimiga.
Skeem:

Kood:
#include <LiquidCrystal.h>
LiquidCrystal lcd(2, 3, 5, 6, 7, 8);
const int TEMP_PIN = A0, LDR_PIN = A1;
bool toggleVariant = false;
int lastIdx = -1; // eelmise sõnumi indeks
// Eemalda 'const' – nüüd on õige tüüp uint8_t*
byte icons[5][8] = {
{0b00100,0b10101,0b01110,0b11111,0b01110,0b10101,0b00100,0b00000},
{0,0b00110,0b01111,0b11111,0b11111,0b00000,0,0},
{0b00110,0b01111,0b11111,0b00100,0b01010,0b10001,0,0},
{0b01110,0b10101,0b11011,0b00100,0b11011,0b10101,0b01110,0},
{0,0b01010,0b11111,0b11111,0b01110,0b00100,0,0}
};
const char* msgs[5] = {
"Selge taevas",
"Pilvine ilm",
"Vihm varitseb",
"Lumi langeb",
"Armasta ilma"
};
const char* alts[5] = {
"Taevas puhas",
"Pilv katmas",
"Tibutab vett",
"Karge lumi",
"Naudi ilma"
};
float readTemp() {
float v = analogRead(TEMP_PIN) * (5.0 / 1023.0);
return (v - 0.5) * 100.0;
}
int readLdr() {
return analogRead(LDR_PIN);
}
int frameCount = 0;
void setup() {
lcd.begin(16, 2);
for (int i = 0; i < 5; i++) {
lcd.createChar(i, icons[i]);
}
lcd.setCursor(0, 0);
lcd.print("IlmaNurk");
delay(2000);
lcd.clear();
Serial.begin(9600);
}
void loop() {
frameCount++;
// Iga 5. iteratsiooni järel näita reklaami
if (frameCount >= 5) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("IlmaNurk soovitab");
lcd.setCursor(0, 1);
lcd.print("Joo teed! :)");
delay(3000);
frameCount = 0;
return;
}
float t = readTemp();
int l = readLdr();
int idx = (l > 800) ? 4 : (t > 25) ? 0 : (t < 0) ? 3 : (l < 300) ? 2 : 1;
if (idx != lastIdx) {
lastIdx = idx;
toggleVariant = false;
}
// vali kas peamine või variant
const char* txt = toggleVariant ? alts[idx] : msgs[idx];
toggleVariant = !toggleVariant;
lcd.clear();
lcd.setCursor(0, 0);
lcd.print(txt);
lcd.setCursor(15, 0);
lcd.write(idx);
lcd.setCursor(0, 1);
lcd.print("T:");
lcd.print(t, 1);
lcd.print("C S:");
lcd.print(millis() / 1000);
Serial.print("Temp: ");
Serial.print(t, 1);
Serial.print(" C, Light: ");
Serial.print(analogRead(LDR_PIN));
Serial.print(", Index: ");
Serial.println(idx);
delay(2000);
}
Video:
Uued funktsioonid:
LiquidCrystal lcd() – konstrueerib objekti, mille kaudu juhitakse LCD-ekraani.
lcd.begin(cols, rows) – initsialiseerib ekraani mõõtude (cols × rows) jaoks.
lcd.setCursor(x, y) – seab kursori veeru x ja rea y positsiooni.
lcd.print(tekst) – kuvab ekraanil mustri kursoripositsioonist alates (C-string või arv).
const char* – tüübimääre, mis osutab muutumatule C-stringile (tekstile).
byte icons[5][8] = {} – defineerib massiivi, kuhu salvestatakse 5 kohandatud 8-baiti pikkust ikooni.
lcd.write(indeks) – kuvab ekraanil kohandatud sümbolit salvestatud indeksiga.
lcd.clear() – tühjendab kogu ekraani sisu ja liigub kursoriga algusse.

