Su ostukorv on hetkel tühi!
Ülesanne 5 Interaktiivne infoekraan “Ilmajaam”
5. Katse LCD ekraani kasutamine

https://www.tinkercad.com/things/lWZagK9TQ0j-bodacious-fulffy
Tööpõhimõte Katse LCD :
- Töö tulemusena kujunevad ekraanil joonistused
Komponeendid Katse LCD :
- 1 1602 LCD ekraan ;
- 1 potentsiomeeter ;
- 16 juhtmed ;
- 1 resistor ;
- 1 Breadboard Small ;
- 1 Arduino Uno R3
Katse LCD 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);
}
Ilmajaam

https://www.tinkercad.com/things/cbzgvnH1xQ5-funky-elzing-duup
Ilmajaam kasutamine :
- Muudab temperatuuri TMP36 abil.
- Ekraan lülitatakse sisse potentsiomeeteriga.
- Temperatuur kuvatakse ekraanil.
- Kui kraadi on alla 95 kraadi, näitab see “Very hot” ja sun pilti.
- Kui kraad on väiksem kui 95 ja suurem kui 75, ilmub kiri “Hot” ja note pilt.
- Kui kraad on väiksem kui 75 ja suurem kui 45, ilmub kiri “Warm” ja heart pilt.
- Kui kraad on väiksem kui 45 ja suurem kui 25, ilmub kiri “Cold” ja umbrella pilt.
- Kui kraad on väiksem kui 25, siis ilmub kiri “Very cold” ja scull pilt.
Ilmajaam komponeendid :
- 1 resistor ;
- 1 Andur TMP36 ;
- 1 1602 LCD ekraan ;
- 1 potentsiomeeter ;
- 19 juhtmed ;
- 1 Breadboard Small ;
- 1 Arduino Uno R3
Ilmajaam kood :
#include<LiquidCrystal.h>
LiquidCrystal lcd(12,11,5,4,3,2);
int numRows = 2; //Количество строк на LCD
int numCols = 16; //Количество столбцов на LCD.
const int temperaturePin = A0;
const int lightPin = 0;
byte sun[8] = {
0b10101,
0b01110,
0b11111,
0b01110,
0b10101,
0b00000,
0b00000,
0b00000
};
byte note[8] = {
0b00000,
0b00011,
0b00101,
0b01001,
0b01001,
0b01011,
0b11011,
0b11000
};
byte heart[8] = {
0b00000,
0b01010,
0b11111,
0b11111,
0b01110,
0b00100,
0b00000,
0b00000
};
byte umbrella[8] = {
0b00000,
0b00100,
0b01110,
0b11111,
0b00100,
0b00100,
0b00100,
0b00000
};
byte scull[8] = {
0b00000,
0b01110,
0b10101,
0b10101,
0b11011,
0b01110,
0b01110,
0b01110
};
void setup()
{
Serial.begin(9600);
lcd.begin(numCols, numRows);
lcd.createChar(1, sun);
lcd.createChar(2, note);
lcd.createChar(3, heart);
lcd.createChar(4, umbrella);
lcd.createChar(5, scull);
}
void loop()
{
float voltage, degreesC, degreesF;
voltage = getVoltage(temperaturePin);
degreesC = (voltage - 0.5) * 100;
degreesF = degreesC * (9.0/5.0) + 32.0;
lcd.setCursor(0,1);
lcd.print(degreesC);
lcd.println(" degrees C ");
delay(800);
if (degreesC > 45)
{
lcd.setCursor(1, 0);
lcd.write(1);
texts(" Very hot ");
delay(800);
lcd.clear();
}
else if (degreesC > 35)
{
lcd.setCursor(1, 0);
lcd.write(2);
texts(" Hot ");
delay(800);
lcd.clear();
}
else if (degreesC > 20)
{
lcd.setCursor(1, 0);
lcd.write(3);
texts(" Warm ");
delay(800);
lcd.clear();
}
else if (degreesC > 5)
{
lcd.setCursor(1, 0);
lcd.write(4);
texts(" Cold ");
delay(800);
lcd.clear();
}
else if (degreesC < 5)
{
lcd.setCursor(1, 0);
lcd.write(5);
texts(" Very cold ");
delay(800);
lcd.clear();
}
}
float getVoltage(int pin)
{
return (analogRead(pin) * 0.004882814);
}
void texts(char *text)
{
int length = strlen(text);
if(length < numCols)
lcd.print(text);
else
{
int pos;
for(pos = 0; pos < numCols; pos++)
lcd.print(text[pos]);
delay(800);
while(pos < length)
{
lcd.scrollDisplayLeft();
lcd.print(text[pos]);
pos = pos + 1;
delay(500);
}
}
}
Photo / Video :
Video :
https://drive.google.com/file/d/1NwrsVEwOJuCwoUhfwLdZLmcwRT0gMznr/view?usp=drivesdk
Photo :


Kommentaatorid (uued võimalused) :
- for (int koht 0;koht<10;koht++) See on Arduino for tsükkel, mida korratakse 10 korda, suurendades muutujat koht igal iteratsioonil alates 0 kuni 9.
- rtc.begin () Reaalajakell (Real Time Clock, RTC) on elektrooniline skeem, mis on spetsiaalselt ette nähtud jooksva aja, kuupäeva, nädalapäeva ja muude aja- ja kalendriandmete arvestamiseks.
- LCD.clear (); on Arduino meetod, mida kasutatakse LCD (Liquid Crystal Display) ekraani sisu puhastamiseks. Pärast selle meetodi väljakutsumist muutub ekraan tühjaks, ilma kuvatava teksti või sümboliteta.
- if (length < numCols) on Arduino tinglik operaator, mis kontrollib, kas muutuja length väärtus on väiksem kui muutuja numCols väärtus. Kui tingimus on tõene, täidetakse if-ploki sees olev kood.
- if (rtc.isrunning () ) on Arduino tinglik operaator, mis kontrollib, kas reaalaja kellamoodul (RTC) töötab. Kui isrunning meetod () tagastab tõe, siis RTC töötab ja tingimus on täidetud.
- LCD.write () on Arduino meetod, mida kasutatakse sümboli väljutamiseks LCD (Liquid Crystal Display) ekraanil. See võimaldab kuvada ASCII kodeeringus esitatud sümboleid, näiteks tähti, numbreid, kirjavahemärke ja muid erimärke.
Näiteid elust :
- Tänavatermomeeter
- Toatermomeeter
Lisa kommentaar