![]() | ![]() |
![]() |
| ![]() |
| |||||||||||||||||
Arduino: Rad sa ekranom (2)
Nokia do Tokia Oni koji se sećaju vremena dolaska mobilne telefonije u naše krajeve svakako će se setiti i modela Nokia 5110 koji je uz Nokia 3210 (posle i 3310) predstavljao najpopularniji telefon na tržištu. Ovi telefoni su za prikazivanje podataka koristili Filipsov displej PCD8544 koji generiše crno-belu sliku rezolucije 84 × 48 tačaka, što je dovoljno za prikazivanje šest redova od po četrnaest karaktera sa matricom 5 × 8 tačaka. Danas se ovakvi displeji, montirani na module pogodne za priključivanje na Arduino, mogu nabaviti već po ceni od oko 1,5 do dva evra, što ih čini odličnim izborom za projekte gde je potreban prikaz jednostavnije monohromne grafike, animacije ili tekstualnih podataka uz minimalnu potrošnju energije (oko 200 mikroampera).
Najcesci rasporedi konektora za displeje PCD8544 Pin Tip1 Tip2 Tip3 1 RST VCC GND 2 CE GND VCC 3 DC SCE CLK 4 DIN RST DIN 5 CLK D/C D/C 6 VCC DN(MOSI) CS 7 LIGHT SCLK RST 8 GND LED LED Osnovna razlika među njima je ta da kod jednih (mahom sa crvenom štampanom pločicom) na pin napajanja pozadinskog osvetljenja dovodimo signal GND, dok kod drugih (plavih) tu povezujemo napajanje od 3,3 volta.
Oznaka Funkcija VCC napajanje modula GND uzemljenje CE, SCE, CS aktiviranje cipa (Chip Enable) RST restart DC, D/C rezim: Data/Command DIN, SDIN, DN(MOSI) ulazni kanal podataka (Data IN) CLK, SCLK, SCLC klok sinhronizacija prenosa LIGHT, LED, BL napajanje pozad. osvetljenja Preostaje nam da džamperima povežemo ekran sa linijama napajanja i data pinovima Arduina. Ukoliko želimo da oslobodimo jednu od linija za prenos podataka, moguće je povezati ekranski pin RST sa RESET pinom na Arduinu (obratiti pažnju na napomenu u donjem kodu). Isto tako, ukoliko ne nameravamo da koristimo pozadinsko osvetljenje, jednostavno isključimo žicu koja dovodi uzemljenje na pin LIGHT. Arduino LCD D3 1 (RST) D4 2 (CE) D5 3 (DC) D6 4 (DIN) D7/RESET 5 (CLK) 5V 6 (VCC) GND 7 (LIGHT) GND 8 (GND)
Jedan primer korišćenja ove biblioteke bi izgledao od prilike ovako: #include <Adafruit_GFX.h> #include <Adafruit_PCD8544.h> Adafruit_PCD8544 display = Adafruit_PCD8544(3, 4, 5, 6, 7); // stavljamo 0 umesto 7 ako koristimo pin RESET void setup() { display.begin(); // inicijalizacija display.clearDisplay(); display.display(); display.setContrast(45); // kontrast ekrana delay(1000); display.setTextSize(2); // velicina teksta display.setTextColor(BLACK); // boja display.setCursor(0,0); // pozicija display.println("NOKIA\nDo\nTokia"); display.display(); } void loop() { }
Kada u narednom poglavlju budemo govorili o povezivanju TFT displeja putem hardverskog SPI interfejsa, videćemo kako funkcioniše mehanizam koji možemo primeniti i kod ekrana sa kontrolerom PCD8544. Za to će nam biti potrebna biblioteka koju možemo preuzeti sa lokacije goo.
Postoji i drugi (komplikovaniji) način povezivanja ovog displeja uz pomoć „šiftera” (IC koji pomera napon sa pet volti na 3,3 volta) ali to zbog ograničenog prostora ovde nećemo obrađivati. Boje su u nama
Mi ćemo u ovom primeru koristiti modul: 1.8TFT SPI 128*160 v1.1, koji je baziran na displej kontroleru pod nazivom ST7735R. Osim modela koje pokreće taj čip, često se sreću i oni koji su zasnovani na kontroleru ILI9163. Generalno, ovaj prvi je bolji izbor zbog bolje podrške po pitanju programskih biblioteka. Arduino IDE ima ugrađenu biblioteku za ispis na TFT ekranima, ali je ona jako spora, pa se preporučuje izbor alternativnih biblioteka koje donose ubrzanje od dva do deset puta. Moduli vrlo često osim TFT displeja koji prikazuje 262144 boje na sebi imaju i slot za standardne SD memorijske kartice. Kao što je obično slučaj sa vrlo jeftinim stvarima, o njima nećete od prodavca dobiti mnogo informacija, pa ćete morati da se snalazite kako znate i umete. Situacija je slična kao kod opisanih Nokia displeja, pa i ovde imamo više modela sa različitom bojom, rasporedom elemenata i izvoda.
pin displej funkcija 1 VCC napajanje modula 2 GND uzemljenje 3 CS izbor uredjaja 4 RESET reset 5 A0 linija komandi 6 SDA signal podataka 7 SCK klok signal 8 LED napajanje svetla Na zadnjoj stranici modula nalazi se mesto označeno sa J1 i koje predstavlja selektor napona sa kojim će uređaj funkcionisati. Ukoliko dva izvoda nisu spojena lemom, on će raditi na pet volti, dok u slučaju spajanja radi na 3,3 volta. Pri ovome morate biti oprezni jer ukoliko koristite displej sa spojenim konektorom J1 na naponu od pet volti, on će pregoreti. Napajanje osvetljenja displeja obavezno ide na 3,3 volta (ili na GND kod nekih modela). Inače, različiti naponi su stvar koja izaziva glavobolju. Zbog nedostatka dokumentacije smo prisiljeni da informacije tražimo po internetu. Na dosta mesta ćemo pročitati da je rad sa naponom od pet volti (iako ga po specifikaciji podržava) štetan po sam uređaj i da doprinosi njegovom preranom kvarenju. Zato se preporučuje postavljanje otpornika na linijama prenosa podataka. Mi ćemo u našem primeru, jednostavnosti radi, koristiti direktno povezivanje bez otpornika, ali u slučaju realizacije nekog praktičnog projekta, ne košta nas mnogo da ih postavimo.
Kod modela Arduino Uno, sledeći pinovi obavljaju funkciju hardverskog SPI interfejsa: pin skraćenica puni naziv 13 SC(L)K Serial Clock 12 MISO Master In, Slave Out 11 MOSI Master Out, Slave In 10 SS Slave Select
Hardverski SPI pin TFT Arduino 1 VCC +5V 2 GND GND 3 CS 10 4 RESET 8 5 A0 9 6 SCK 13 7 SDA 11 8 LED +3,3V Prilikom implementacije softverskog SPI interfejsa moguće je koristiti proizvoljne digitalne izlaze. Jedan takav slučaj bi mogao da izgleda ovako: Softverski SPI pin TFT Arduino 1 VCC +5V 2 GND GND 3 CS 2 4 RESET 3 5 A0 4 6 SCK 5 7 SDA 6 8 LED +3,3V Treba odmah reći da upotreba hardverskog SPI ima za posledicu veoma brže iscrtavanje na ekranu pa bi je trebalo koristiti kad god je to moguće. Softverski SPI je od koristi kada su linije hardverskog SPI iz nekog razloga zauzete. Navodimo primer jednostavnog koda zasnovanog na standardnoj TFT Arduino biblioteci: #include <TFT.h> // Arduino LCD biblioteka #include <SPI.h> // podrska SPI interfejsa #define RST 8 // pin za reset #define A0 9 // pin prenosa podataka #define CS 10 // pin izbora uredjaja // inicijalizacija biblioteke TFT displej = TFT(CS, A0, RST); void setup() { displej.begin(); // uvek ide na pocetku displej.background(50, 0, 0); //tamno plava displej.stroke(0, 0, 255); // crvena boja ispisa displej.setTextSize(1); // najmanji font displej.text("Svet Kompjutera\n ", 0, 0); displej.stroke(0, 255, 0); // zelena displej.setTextSize(2); // veci font displej.text("Svet\nKompjutera\n ", 0, 15); displej.stroke(255, 255, 255); // bela displej.setTextSize(3); // jos veci font displej.text("Svet\nKompjutera\n ", 0, 50); } void loop() {} Prvo u projekat uključujemo kôd iz biblioteka TFT i SPI, da bismo zatim definisali na koje pinove Arduina su priključene tri navedene linije prenosa. Onda te vrednosti prosleđujemo kao argumente funkcije za inicijalizaciju biblioteke. Funkcija Begin se poziva pre početka ispisivanja na ekran (inicijalizacija). Zatim sledi funkcija za postavljanje boje pozadine i nakon nje blok linija za ispis tri niza znakova na ekranu. Svakom nizu karaktera zadajemo veličinu fonta i boju ispisa. Treba napomenuti da se boje definišu u formatu BGR umesto mnogo češćeg RGB. Kao i u slučaju kada smo pisali o ekranu Nokia i ovde je preporučljivo korišćenje biblioteka pod nazivom Adafruit ST7735 i Adafruit GFX (ova druga je potrebna za funkcionisanje prve) koje u sebi sadrže rašireni set komandi za crtanje i ispis teksta. • • • U sledećem broju bavićemo se načinima povezivanja uređaja Arduino sa modulima za bežičnu komunikaciju. Igor S. RUŽIĆ |
| |||||||||||||||||||
![]() | |
![]() | ![]() |
Home / Novi broj | Arhiva • Opšte teme | Internet | Test drive | Test run | PD kutak | CeDeteka | WWW vodič • Svet igara Svet kompjutera Copyright © 1984-2018. Politika a.d. • Redakcija | Kontakt | Saradnja | Oglasi | Pretplata • Help • English | |
SKWeb 3.22 |