Veronika Milovzorova portfolio/ est

5. Katse LCD ekraan

Ekraani ühendamine ja teksti kuvamine 1602 LCD ekraanil

Mis see on – LCD?

  • TFT (inglise keelesThin film transistor liquid crystal display) on vedelkristallkuvari põhitüüp, milles pildielemente tüüritakse kiletransistoride (TFT) vahendusel.[1] Enamasti kasutatakse polükristallilise räni alusel valmistatud väljatransistore. pildielementide läbipaistvuse juhtimise niisugust skeemi nimetatakse aktiivmaatriksiks. Maatriksi iga pildielement ehk piksel koosneb tegelikult kolmest alampikslist, millest väljuva valguse muudavad värviliseks nende ees paiknevad punased, rohelised ja sinised värvifiltrid (RGB). Kiletransistori ülesanne pole aga mitte ainult piksli tüürpinge sisselülitamine, vaid ka selle pinge püsivana hoidmine ühe pildiperioodi vältel (nt teleri 100 Hz värskendussageduse korral 0,01 sekundi kestel). Tüürpingele vastavat elektrilaengut hoiab alal kiletransistoriga seotud mahtuvus. Niisiis ülalnimetatud uksehoidjad hoiavad ukse ühtlaselt avatuna kogu kaadriperioodi jooksul (ilma transistori abita hakkaks uks kohe tüürimpulsi saabumise järel sulguma).
  • ikslid on ekraanile paigutatud rastrina[2] ehk maatriksina, mis koosneb ridadest ja veergusest. Igal real ja veerul on oma juhe, mille kaudu saabuvad tüürsignaalid. Rea ja veeru juhtmete abil leitakse üles üliväiksed kiletransistorid (TFT), mis paiknevad vahetult selle piksli (vedelkristalli) taga, mille läbipaistvust on vaja muuta.[3] Konkreetse piksli poole pöördumisel lülitatakse sisse sobiv rida ja ühtlasi saadetakse signaal vajalikule veerule. Kuna kõik teised veerud on välja lülitatud, siis jõuab signaal ainult õige pikslini.[3]
  • Kiletransistorid ise töötavad piltlikult öeldes uksehoidjatena, kes hoiavad ust vastavalt saadud käsule vähem või rohkem lahti, kusjuures usteks on vedelkristallid. Vastavalt rakenduvale pingele muudab vedelkristall oma molekulaarset struktuuri[4]. Selle tulemusena lasevad vedelkristallid vastavalt tüürpingele kas vähem või rohkem valgust läbi. Valguse saavad pikslid ekraani taga olevatest valgusallikatest (tänapäeval leedlampidest).
LCD ekraan
#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);
}

katse 5. lcd ekraan

Programm kuvab ekraanil emotikone ja muudab kuvatavat emotikone olenevalt potentsiomeetri asendist.

Kasutasin:
1 lcd
17 juhet
2 takisti
1 potentsiomeeter
Arduino
Plaat

#include <LiquidCrystal.h> //liin ühendab raamatukogu
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); //tähistab kontakte, millega signaalid on ühendatud
byte smileys[4][8] = {
  {0b00000, 0b01010, 0b00000, 0b10001, 0b01110, 0b00000, 0b00000, 0b00000},
  {0b00000,
	0b01010,
	0b01010,
	0b00000,
	0b01110,
	0b10001,
	0b00000,
	0b00000},
  {0b00000, 0b01110, 0b01010, 0b00000, 0b10001, 0b01110, 0b00000, 0b00000},
  {0b00000, 0b00000, 0b01110, 0b01010, 0b00000, 0b10001, 0b01110, 0b00000}
}; //baidimassiivid
char smileyTexts[4][9] = {
  "Happy",
  "Cool",
  "Cute",
  "Funny"
}; //sisaldab iga emotikoni tekstikirjeldust. Massiivi iga rida sisaldab märgimassiivi pikkusega 9, mis salvestab tekstikirjelduse
int potPin = A0; // deklareerida muutujaid
int currentSmileyIndex = 0;
void setup() { //Funktsiooni sees määratakse ekraani suurus
  lcd.begin(16, 2);
  for (int i = 0; i < 4; i++) { //
    lcd.createChar(i + 1, smileys[i]);
  }
} //ikl loob LCD-ekraanil kohandatud tähemärke. See kordab i väärtusi vahemikus 0 kuni 3 ja kutsub funktsiooni välja
void loop() {
  int potValue = analogRead(potPin);
  int smileyIndex = map(potValue, 0, 1023, 0, 3);
//funktsioon loop() käivitatakse tsüklina pärast seda, kui funktsioon setup() on lõppenud. See loeb väärtust potentsiomeetrilt
  if (smileyIndex != currentSmileyIndex) {
    currentSmileyIndex = smileyIndex;
    lcd.clear();
    lcd.setCursor(0, 0);
    for (int i = 0; i <= currentSmileyIndex; i++) {
      lcd.write(i + 1); //kuvab ekraanil naeratuse sümboli.
      lcd.print(" "); //väljastab tühiku. //kuvab emotikoni kirjeldava teksti.
      lcd.print(smileyTexts[i]);
      delay(2000); // 2 sekundit viivitust
      lcd.setCursor(0, 0); //seab kursori tsükli järgmise iteratsiooni algusasendisse (0, 0).
      lcd.print("                "); // Liini puhastamine
      lcd.setCursor(0, 0); // очищает строку на дисплее. 
    }
  }
}

Vedelkristallkuvarit kasutatakse graafilise või tekstilise teabe kuvamiseks arvutimonitoridel (ka sülearvutites), telerites, telefonides, digikaamerates, e-raamatutes, navigaatorites, tahvelarvutites, elektroonilistes tõlkides, kalkulaatorites, kellades.

et