Katse LCD ekraani kasutamine
Komponentid:
- 1 x 1602 LCD ekraan
- 1 x potentsiomeeter
- 16 x tavalised üksikud isane-isane juhtmed
- 1 x 330 Ω takisti
Ühendamine:
Tulemuseks on liikuv pilt, kus poiss ja tüdruk üksteiseke südameid ja naerunägusid saadavad.
Skeem:

https://www.tinkercad.com/things/ciRCUYVAL6L-terrific-jaiks/editel?sharecode=azNcoSZxHl6TU3yrLzij3dLSld6CcbpAbNRDj8E4I4M
C++ 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);
}
Kuidas see töötab:
Nüüd võib arendusplaadi USB juhtme abil arvutiga ühendada ning testida ekraani arenduskeskkonna näidisprogrammiga. Arenduskeskkonna LCD ekraani testimiseks mõeldud näited asuvad File -> Exampes -> LyquidCrystal valime nendest näiteks “Hello World”.
Seejärel leida koodi setup () meetodist üles rida lcd.print(«hello, world!»); ning asendada sõna world enda nimega. Peale koodi plaadile laadimist peaks ekraani ülemisele reale ilmuma kiri “hello, teie nimi” ning alumisele sekundiloendur. Keerata potentsiomeetrit nii palju vasakule kui võimalik, et tagada maksimaalne kontrastsus. Teksti mitteilmumise korral peaks üle kontrollima potentsiomeetri ühendused, taustavalguse probleemide korral kahe viimane pesa (A ja K) ühendused.
Esimene katsetus tehtud, saab proovida ekraanile joonistada endale meelepärast liikuvat pilti. Selleks avada erisümbolite näide File -> Exampes -> LyquidCrystal —
>CustomCharacter, mille katsetamisel ilmub käsi üles-alla liigutav mehike. Ekraan ise koosneb 32 kastikesest (16 veergu 2 rida), millest igaüks on 5 x8 pikslit. Kujutiste kuvamine toimub 8-baitiste järjendite abil, kus iga baidi 5 parempoolset bitti defineerivad ühe pikslirea. Järgnevas koodiplokis on toodud CustomCharacker koodist inspireeritud liikuva pildi kood.
Saate seda rakendada mis tahes mängu loomisel.
Ülesanne 5 Interaktiivne infoekraan
Komponentid:
- 1 x 1602 LCD ekraan
- 1 x potentsiomeeter
- 16 x tavalised üksikud isane-isane juhtmed
- 1 x 330 Ω takisti
- temperatuuriandur
Tööpõhimõte: Ekraani abil näidatakse, kas ilmastiku tõttu on võimalik meres ujuda või mitte. See jäljendab punast, kollast ja rohelist lippu rannas, kuid tehnoloogiaga. Kokku on 3 režiimi: ujumine on lubatud, ujumine on lubatud kuni 30 meetrit ja ujumine on keelatud
Skeem:

C++ kood:
#include <LiquidCrystal.h>
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
int temperaturePin = A1;//задаем пины
const char* lubat[] = {//создаем надписи
"Ujumine on ",
"lubatud"
};
const char* keelat[] = {
"Ujumine on",
"keelatud"
};
byte cloud[8] = {//создаем изображения солнца и тучи
0b01110,
0b11111,
0b01100,
0b00000,
0b01001,
0b00100,
0b10001,
0b01000
};
byte sun[8] = {
0b00100,
0b01010,
0b01010,
0b01110,
0b01110,
0b01010,
0b01010,
0b00100
};
void setup() {
lcd.begin(16, 2);
lcd.createChar(0, sun);
lcd.createChar(1, cloud);
Serial.begin(9600);
}
void loop() {
int temperature = analogRead(temperaturePin);//считываем значени етемператыр
float celsius = map(temperature, 0, 1023, -40, 250); //задаем радиус температуры
lcd.setCursor(0, 0);
lcd.print(lubat[0]);
lcd.setCursor(0, 1);
if (celsius > 22) {//если тепло
lcd.print(lubat[1]);
lcd.write((uint8_t)0);
}
else {
lcd.print(keelat[1]); //если холодно
lcd.write((uint8_t)1);
}
delay(800);
lcd.clear();//очистка дисплея
}
https://www.tinkercad.com/things/gEdl6vVwzk1-shiny-kasi-fulffy/editel?sharecode=q-3jdu_JY6MVzN4W90wRz9ETCCYnQQg9kqp2rjIdp_U
Video kuidas seda töötab:
Töö tulemus: Minu arvates on see töö kõige huvitavam, kuna ekraaniga töötamine on palju huvitavam. Õppisin bittraate looma ja õppisin uusi funktsioone.
Kasutatud funktsioonid:
lcd.begin(16, 2);
— Algatab LCD ekraani määratud parameetritega — 16 tähemärki igas reas ja 2 rida.lcd.createChar(0, sun);
jalcd.createChar(1, cloud);
— Loovad kasutaja määratud sümbolid kindlate koodidega (0 ja 1) ja määratud bittmustritega (sun ja cloud vastavalt). See võimaldab kuvada ekraanil kohandatud sümbolid.Serial.begin(9600);
— Algatab seerialühenduse arvutiga. Selles juhul on andmeedastuse kiiruseks valitud 9600 bitti/sekundis.analogRead(temperaturePin);
— Loeb analoogsisendilt määratud pin’i väärtust (temperaturePin). Selles juhul loetakse temperatuuri väärtust.map(temperature, 0, 1023, -40, 250);
— Muudab temperatuuri väärtuse diapasoonist 0-1023 uude diapasooni -40 kuni 250. See võimaldab saada temperatuuri väärtust kraadides Celsius.lcd.setCursor(0, 0);
jalcd.setCursor(0, 1);
— Määravad kursori ekraanil kindlaksmääratud asukohta (0, 0) ja (0, 1) vastavalt.lcd.print(lubat[0]);
jalcd.print(lubat[1]);
— Väljastavad LCD ekraanile massiivist lubat esimese ja teise rea.lcd.write((uint8_t)0);
jalcd.write((uint8_t)1);
— Väljastavad LCD ekraanile kasutaja määratud sümbolid koodidega 0 ja 1 vastavalt.delay(800);
— Tehke programmis paus 800 millisekundit (0,8 sekundit).lcd.clear();
— Puhastab LCD ekraani.
Aitäh!