Teema 5

Katse LCD ekraani kasutamine

Komponentid:

  1. 1 x 1602 LCD ekraan 
  2. 1 x potentsiomeeter 
  3. 16 x tavalised üksikud isane-isane juhtmed 
  4. 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. 1 x 1602 LCD ekraan 
  2. 1 x potentsiomeeter 
  3. 16 x tavalised üksikud isane-isane juhtmed 
  4. 1 x 330 Ω takisti
  5. 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:

  1. lcd.begin(16, 2); – Algatab LCD ekraani määratud parameetritega – 16 tähemärki igas reas ja 2 rida.
  2. lcd.createChar(0, sun); ja lcd.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.
  3. Serial.begin(9600); – Algatab seerialühenduse arvutiga. Selles juhul on andmeedastuse kiiruseks valitud 9600 bitti/sekundis.
  4. analogRead(temperaturePin); – Loeb analoogsisendilt määratud pin’i väärtust (temperaturePin). Selles juhul loetakse temperatuuri väärtust.
  5. 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.
  6. lcd.setCursor(0, 0); ja lcd.setCursor(0, 1); – Määravad kursori ekraanil kindlaksmääratud asukohta (0, 0) ja (0, 1) vastavalt.
  7. lcd.print(lubat[0]); ja lcd.print(lubat[1]); – Väljastavad LCD ekraanile massiivist lubat esimese ja teise rea.
  8. lcd.write((uint8_t)0); ja lcd.write((uint8_t)1); – Väljastavad LCD ekraanile kasutaja määratud sümbolid koodidega 0 ja 1 vastavalt.
  9. delay(800); – Tehke programmis paus 800 millisekundit (0,8 sekundit).
  10. lcd.clear(); – Puhastab LCD ekraani.

Aitäh!

Leave a Reply

Sinu e-postiaadressi ei avaldata. Nõutavad väljad on tähistatud *-ga