Zaslon Nokia 5110 povezujemo s arduinom. Prednosti rada s grafičkim prikazima. Opis Arduino Uno

Vjerojatno sam, kao i svi graditelji Arduina, imao neku ludu ideju u glavi. Sve potrebne dijelove sam naručio iz Kine. Morali smo čekati jako dugo, ali onda su prije roka isporučeni klon Arduino Uno ploče i LCD zaslon Nokia 5110. Budući da ranije nisam bio upoznat s elektronikom i programiranjem, odlučio sam ne gubiti vrijeme i počeo učiti kako prikazati informacije na ovom modulu.

Prvo što sam napravio bio je Google i naišao na publikaciju “Arduino, Nokia 5110 LCD modul i ćirilica” od autora. I tada sam shvatio da sve što sam ranije planirao neće biti tako lako izvesti.

Skužio sam ćirilicu, tu je sve jednostavno, neću copy-paste zadnji post, ali pravi je problem sa slikama. Zadatak je: trebate nacrtati sliku i postaviti je na zaslon. Suočen s prvim problemom, ulogiran u srijedu Arduino programiranje Vidio sam da ne postoji nešto poput “Insert - Images”, ali sliku trebate zapisati određenim kodom u hex sustavu brojeva. Našao sam nekoliko urednika, ali to nije bio slučaj. Slika se ne prikazuje adekvatno. Počeo sam tražiti probleme koji bi mogli biti.

Kroz hrpu eksperimenata, pokušaja i testova došao sam do algoritma koji ću podijeliti s vama:

1) Potrebno je nabaviti samu sliku, u crno-bijelom .bmp formatu s ekstenzijom od 84 x 48 piksela.
To se može učiniti na mnogo načina za gotovo sve. grafički urednik Postoji funkcija "Spremi kao" gdje specificiramo potrebne parametre.
Napravio sam to u corelDRAW-u. Dobivamo nešto slično. Potrebno je pojasniti da naziv slike mora biti spremljen Latinski izgled klavijature, jer sljedeći program neće ga moći otvoriti.

2) Ako je potrebno, možete urediti sliku u paintu; čudno je da postoji nekoliko jednostavnih i zanimljivih alata.

3) Pomoću ovoga dobivamo heksadecimalni kod slike.

4) Umetnite ovaj kod V programski kod Arduino i prenesite ga na ploču:

// SCK - Pin 8 // MOSI - Pin 9 // DC - Pin 10 // RST - Pin 11 // CS - Pin 12 // #include LCD5110 myGLCD(8,9,10,11,12); extern uint8_t OKO; lebdjeti y; uint8_t* bm; int prostor; void setup() ( myGLCD.InitLCD(); ) void loop() ( myGLCD.clrScr(); myGLCD.drawBitmap(0, 0, OKO, 84, 48); myGLCD.update(); delay(2000); )

#uključi const uint8_t OKO PROGMEM=( //Kopirani heksadecimalni kod GLCD alati );

Prilikom sastavljanja uređaja na Arduinu često se susrećemo s potrebom za autonomnim izlazom informacija. I, kao i uvijek, želim da rješenje bude jeftino. I ovdje se ispostavlja da izbor jeftinih uređaja nije baš bogat.

Ako je prikazano malo informacija, prikladno je koristiti indikatore od sedam segmenata. Vrlo su svijetle i kontrastne. Takva ravnala od 4 znamenke visine 0,36 inča na TM1637 prodaju se za 70 centi i njima se upravlja sa samo 2 igle. Kao što možda pretpostavljate, oni su uglavnom dizajnirani za prikaz vremena, iako mogu lako prikazati, na primjer, temperaturu, tlak i druge parametre, za što su dovoljne 4 znamenke.

Ali ako ima puno izlaznih informacija, oni neće raditi. U takvim slučajevima najčešće se koriste “narodni” LCD 1602 zasloni koji imaju mogućnost prikaza u 2 retka po 16 znakova po cijeni od dolar i pol. Na taj način možete prikazati puno više informacija.

Njegov napredniji 4-redni brat prikazat će čak i više informacija, ali košta osjetno više, oko 5 dolara, a i veličina mu je već prilično velika.

Svi ovi uređaji imaju svoje prednosti i nedostatke. Glavni nedostaci uključuju nedostatak podrške za ruski jezik, jer je kodna tablica čvrsto ugrađena u čip i nemogućnost prikaza grafike. Strogo govoreći, moguće je imati ćirilični firmware u takvim uređajima, ali oni se prodaju uglavnom u Rusiji i po nerazumnim cijenama.
Ako su ovi nedostaci presudni za korištenje u uređaju koji se stvara i odgovara vam rezolucija od 84x48 piksela u crno-bijeloj grafici, onda biste trebali obratiti pozornost na Nokijin 5110 zaslon. Bio jednom, ali bio je vrlo nepotpun , a mjestimično zastario. Konkretno, tamo je navedeno da je nemoguće prikazati ćirilicu. Danas tog problema nema.

Junak naše recenzije, po cijeni manjoj od par dolara, došao je do mene u izdržljivoj kartonskoj kutiji sa zaštitnim filmom na ekranu, za što veliko hvala prodavaču. Uređaj ima tiskanu pločicu veličine 45x45 mm crvenog PCB-a i LCD zaslon rezolucije 84x48 piksela i veličine 40x25 mm. Uređaj je težak 15 g. Ima plavo pozadinsko osvjetljenje koje se može isključiti. Za Arduino, ovaj zaslon će odgristi 5 digitalnih pinova, ne računajući napajanje. Ploča ima 2 reda pinova koji su paralelni, tako da možete koristiti samo jedan red. Od toga je 5 za upravljanje, 2 za napajanje i jedan za uključivanje pozadinskog osvjetljenja. Da biste uključili pozadinsko osvjetljenje, potrebno je kratko spojiti LIGHT pin na masu (postoji još jedna verzija ovog displeja, kako kažu - na plavoj ploči, gdje je ovaj pin spojen na napajanje). Ploča dolazi nezalemljena, u kompletu su dva češlja.
Dakle, spajamo SCLK, DIN, DC, CE i RTS pinove na Arduino pinove, na primjer, 3, 4, 5, 6, 7. VCC pin na 3,3 V (točno 3,3, ne 5!), spojite zemlju i preuzimanje knjižnice.
Funkcije iz ove biblioteke omogućuju vam prikaz grafičkih primitiva (linija, krug, pravokutnik itd.), rasterskih slika i teksta. Knjižnica sadrži primjer koji pokazuje njezine mogućnosti, savjetujem vam da ga pogledate. Ali da bi se tekst prikazao na ruskom, morat ćete podesiti font. No, srećom, dobri ljudi su već sve učinili za nas i zamjenska datoteka se može preuzeti.
U nastavku ću dati primjer skice, a rezultat ispisa teksta na ruskom može se vidjeti gore. Lako je izračunati da na najmanjoj veličini slova (br. 1) možete prikazati 84 znaka (14 u 6 redaka), što je sasvim dovoljno za prikaz, primjerice, opsežnih dijagnostičkih poruka. Font #2 dvostruko je veći.
Razlučivost zaslona omogućuje prikaz prilično dobrih rasterskih slika u dvije boje, koje se mogu koristiti kao ikone u programu.

Stvaranje takvih ikona vrlo je jednostavno. Pod spojlerom ću vam pokazati kako se to radi.

Kako brzo izraditi rastersku sliku na primjeru logotipa web stranice MYSKU

Prvo, napravimo snimku ekrana s logotipom (tipka Print Screen).
Pokrenite Paint iz standardnih programa i pritisnite Ctrl+V. Cijeli zaslon s logom nam je na raspolaganju.


Odaberite željeni fragment i pritisnite gumb TRIM. Uzmimo naš fragment.

Sada moramo ovaj fragment pretvoriti u dvije boje. Sama boja može to podnijeti. Kliknite "Spremi kao" i odaberite vrstu "Monokromatska slika (*.bmp)". Ignoriramo upozorenje urednika i kliknemo OK i vidimo sljedeću sliku:

Sada moramo pretvoriti ovaj skup piksela u niz kodova za Arduino. Našao sam jedan koji se nosi s ovim zadatkom.
Treba predati bmp datoteku kao ulaz, ali mora imati 256 boja! Stoga ćemo ponovno kliknuti "Spremi kao" i odabrati vrstu "256 color bmp art". Prisjetimo se sada dimenzija stranica rezultirajuće datoteke, morat ćete ih naznačiti u skici (pogledajte ili u Paintu na dnu u statusnoj traci ili otvaranjem Svojstva datoteke -> kartica Detalji) i idite na mrežni pretvarač .


Odaberimo našu datoteku, provjerimo heksadecimalne brojeve i kliknemo PRETVORI.
Uzmimo niz koji nam treba:


Kopiramo ovaj niz u skicu, kompajliramo ga i vidimo što će se dogoditi.


Sada isključimo pozadinsko osvjetljenje i vidimo kako će slike izgledati bez njega.


Kao što vidite, i tekst i ikone su čitljivi. Štoviše, što je svjetlo jače, to je čitljivost bolja (oh, sjećam se kako je bilo ugodno koristiti Nokiu 1100 po sunčanom danu, dok su ljudi skrivali svoje slušalice s matricama u boji u sjenu da biraju broj). Općenito, možete koristiti zaslon u ovom načinu rada ako ima dovoljno osvjetljenja ili pozadinsko osvjetljenje smeta ili radi uštede baterije. Ako je nečiji ekran teško vidljiv, poigrajte se s kontrastom na skici. Najbolji kontrast sa i bez pozadinskog osvjetljenja dobiva se pri različitim vrijednostima, to se mora uzeti u obzir.

Primjer skice za prikaz teksta i slika

#uključi #uključi // pin 3 - izlaz serijskog sata (SCLK) // pin 4 - izlaz serijskih podataka (DIN) // pin 5 - odabir podataka/naredbi (D/C) // pin 6 - odabir LCD čipa (CS) // pin 7 - LCD reset (RST) Adafruit_PCD8544 zaslon = Adafruit_PCD8544(3, 4, 5, 6, 7); const static unsigned char PROGMEM ku59x39 = ( 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xc0, 0x7f, 0xff, 0 xff, 0xff, 0xff, 0xff, 0xf0, 0xe0, 0x1f, 0xff, 0xff, 0xe0, 0x0, 0x3, 0xf0, 0xfc, 0xf, 0xff, 0xfc, 0x0, 0x0, 0x0, 0x0, 0xff, 0x87, 0xff 0xc0, , 0x0, 0x0, 0x7f, 0xc0, 0xff, 0xe3, 0xff, 0x0, 0x0, 0x7f, 0xff, 0x90, 0xff, 0xf1, 0xfc, 0x0, 0x7, 0xff, 0xff, 0x30, 0xff, 0xf8, 0xf0, 0x0, 7f , 0xff, 0xfe, 0x30, 0xff, 0xfc, 0x40, 0x3, 0xff, 0xff, 0xfc, 0x70, 0xff, 0xfe, 0x0, 0xf, 0xff, 0xff, 0xf8, 0xf0, 0xff, 0xff, 0x0, 0x7f, 0xff, 0xf0 , 0xf0, 0xff, 0xff, 0x81, 0xff, 0xff, 0xff, 0xe1, 0xf0, 0xff, 0xff, 0xc7, 0xff, 0xff, 0xff, 0xe3, 0xf0, 0xff, 0xff, 0xc3, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xff, 0x83, 0xf0, 0xff, 0xff, 0xe1, 0xff, 0xff, 0xff, 0x87, 0xf0, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0x87, 0xff, 0xff, 0xf 0, 0xff, 0xff , 0xff, 0x87, 0xf0, 0xff, 0xff, 0xf8, 0x7f, 0xff, 0x1f, 0x87, 0xf0, 0xff, 0xff, 0xf8, 0x7f, 0x0, 0x0, 0x7, 0xf0, 0 xff, 0xff, 0xfc, 0x38, 0x0, 0x0, 0x1, 0xf0, 0xff, 0xff, 0xfc, 0x20, 0x0, 0x0, 0xbf, 0xf0, 0xff, 0xff, 0xfe, 0x0, 0x3, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xfe, 0x0, 0 x3f, 0xe1, 0xff, 0xf0, 0xff, 0xff, 0xfe, 0x3, 0xf0, 0x0, 0x1, 0xf0, 0xff, 0xff, 0xfe, 0xf, 0x80, 0x0, 0x0, 0xf0, 0xff, 0xff, 0xff, 0xe, 0x0, 0x 3f, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xc, 0x3, 0xff, 0xe1, 0xf0, 0xff, 0xff, 0xff, 0x0, 0x1f, 0xff, 0xc0, 0xf0, 0xff, 0xff, 0xff, 0x7f, 0xff, 0x88, 0xf0, 0xff, 0xff, 0xff, 0x80, 0xff, 0xff, 0x9c, 0xf0, 0xff, 0xff, 0xff, 0x83, 0xff, 0xff, 0x38, 0xf0, 0xff, 0xff, 0xff, 0xc3, , 0xff, 0x19, 0xf0, 0 xff, 0xff, 0xff , 0xf0, 0xff, 0xff, 0x3, 0xf0, 0xff, 0xff, 0xff, 0xe0, 0x7f, 0xff, 0x87, 0xf0, 0xff, 0xff, 0xff, 0xce, 0x7f, 0xdf, 0xf0, 0xff, 0xff, 0 xff, 0xce, 0x7f , 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0x9e, 0x7f, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0x8c, 0xff, 0xff, 0xff 0, xf0, 0xff, 0xff, 0xff, 0x80 , 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xc1, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xff, 0xff, 0xe3, 0xff, 0xff, 0xff, 0xf0 ); void setup() ( display.begin(); display.setContrast(50); display.setTextSize(1); display.setTextColor(BLACK); // postavljanje boje teksta ) void loop() ( display.clearDisplay(); display .drawBitmap(10, 5, ku59, 39, BLACK); display.setCursor(0,0); ne samo balističke mete - avioni" ; display.display(); odgoda(2000);


Pa, a budući da je Arduino (Procesor+RAM+Bootloader-BIOS)+pogon (EEPROM) + ulazno/izlazni sustav (IRDA Remote i Nokia 5110) zapravo punopravno računalo, zašto onda ne napisati punopravno igra za to? Naravno, naše računalo Arduino neće se moći nositi s igrom kao što je GTA, ali može se lako nositi s jednostavnom ležernom igračkom! Napišimo igru ​​za sva vremena - Tetris.
Za svakog programera ovo je poput jutarnje tjelovježbe, lake vježbe za mozak, stoga samo naprijed! I kao da se ovo nikad prije nije dogodilo na musku. A igra će otkriti potencijal subjekta.
Kao ulazni sustav, odlučio sam koristiti IRDA daljinski upravljač sa BILO KOG uređaja. Uz ovo rješenje, trebamo samo jedan, po cijeni od 4 rublje po komadu. A IC daljinski upravljač nalazi se u svakom stanu. Za glasovnu glumu također ćemo koristiti piezo visokotonac sa stare matične ploče - to će biti naš proračunski analog multimedije)). Sad mi dolazi hladniji, ali ovo već diže cijenu našeg superračunala za cijeli dolar! Snaći ćemo se za sada. Bit će već kod njega.
Na matičnu ploču povezujemo izlazne i ulazne uređaje i našu “multimediju”. Ispalo je ovako:


Koristio sam Arduino Uno, budući da već ima 3,3 V koji nam trebaju, ali ako koristite Mini, morat ćete dobiti potrebnih 3,3 od 5 volti za ekran. Najlakši način s interneta je staviti dvije silicijske diode u seriju (odaberi).
Kako ne bih crtao električni dijagram, jednostavno ću naznačiti Arduino pinove koje sam koristio.
Spajanje zaslona Nokia 5110:
pin 3 - izlaz serijskog sata (SCLK)
pin 4 - izlaz serijskih podataka (DIN)
pin 5 - odabir podataka/naredbi (D/C)
pin 6 - odabir LCD čipa (CS)
pin 7 - LCD reset (RST)
Da bismo osvijetlili LIGHT pin na zaslonu, bacamo ga na GND Arduina. (Samo za crvenu ploču!). Plus napajanje na 3.3V. Uzemljenje na GND.
Veza IR prijemnika:
pin 8 - IR (kontrola). Napajanje na +5V odnosno GND.
Spajanje piezo visokotonca:
pin 9 - zvučnik, uzemljenje na GND.
Nakon instalacije prenesite skicu

Skica igre Tetris

//// © Klop 2017 #uključi #uključi #uključi #uključi #define rk 4 // širina kvadrata #define rz 5 // širina sjedala #define smeX 1 #define smeY 1 #define MaxX 10 // stakleni broj sjedala horizontalno #define speaker 9 #define RECV_PIN 8 // foot na IRDA prijemniku // pin 3 - izlaz serijskog sata (SCLK) // pin 4 - izlaz serijskih podataka (DIN) // pin 5 - odabir podataka/naredbi (D/C) // pin 6 - odabir LCD čipa (CS) // pin 7 - LCD reset (RST) Adafruit_PCD8544 zaslon = Adafruit_PCD8544(3, 4, 5, 6, 7); IRrecv irrecv(RECV_PIN); decode_results rezultati; bajt mstacan; bajt Lst, SmeH, centar, NumNext; bajt MaxY; // stakleni broj mjesta okomito int dxx, dyy, FigX, FigY, Victory, myspeed,tempspeed; nepotpisano dugo ok, lijevo, pravo, vniz, moj zapis; unsigned long flfirst=1234; // prva oznaka za pokretanje bajta fig= (((0,0,0,0), (0,0,0,0), (0,0,0,0), (0,0,0,0)) , ((0,1,0,0), (0,1,0,0), (0,1,0,0), (0,1,0,0)), ((0,0,0 ,0), (0,1,1,0), (0,1,1,0), (0,0,0,0)), ((0,1,0,0), (0,1 ,1,0), (0,0,1,0), (0,0,0,0)), ((0,1,0,0), (0,1,0,0), (0 ,1,1,0), (0,0,0,0)), ((0,1,0,0), (0,1,1,0), (0,1,0,0), (0,0,0,0)), ((0,0,1,0), (0,1,1,0), (0,1,0,0), (0,0,0,0 )), ((0,0,1,0), (0,0,1,0), (0,1,1,0), (0,0,0,0)), ((0,0 ,0,0), //8 (0,0,0,0), (0,0,0,0), (0,0,0,0)) ); //================================================== ============= void mybeep () // zvuk (analogWrite(zvučnik, 100); kašnjenje(100); analogWrite(zvučnik, 0); ) //======= =============== ======================== void figmove(bajt a, bajt b) ( za (bajt i=0;i<4;i++) for (byte j=0;j<4;j++) fig[a][i][j]=fig[b][i][j]; } //============================================== void figinit(byte a) { for (byte i=0;i<4;i++) for (byte j=0;j<4;j++) { fig[i][j]=fig[i][j]; if (fig[a][j][i]==1) // покажем след фигуру display.fillRect(i*rz+60, 20+(j)*rz, rk , rk, BLACK); else display.fillRect(i*rz+60, 20+(j)*rz, rk , rk, WHITE); } display.display(); NumNext=a; tempspeed=myspeed-(Victory/30)*50; // через каждые 30 линий увеличим скорость падения; dxx=0; for (byte i=0;i0) display.fillRect(i*rz+1, SmeH+(j-4)*rz, rk , rk, CRNO); else display.fillRect(i*rz+1, SmeH+(j-4)*rz, rk , rk, BIJELO); ds(pobjeda,1); prikaz.prikaz(); ) //================================================= ================ = void ds(int aa, int b) ( display.fillRect(55, 10, 29, 10, WHITE); display.setCursor(55,b* 10); display.println(aa); //=== ============================= ========================== bool iffig(int dx , int dy) (int i,j; bool zastavica=true; bool pov=false ; za (i=0;i MaxX-1) dx=-1;// pokušajte ga odmaknuti od zida s desne strane za 1 ) ) ) za (i=0;i<4;i++) for (j=0;j<4;j++) if (fig[j][i]==1) if (i+FigX+dx<0 || i+FigX+dx>MaxX-1 || SlikaY+j+dy>MaxY-1 || mstacan>0) (flag=false; break;) // provjereno za nove koordinate if (flag) (FigX=FigX+dx; FigY=FigY+dy;byte k=0; for (i=0;i)<4;i++) for (j=0;j<4;j++) if (fig[j][i]==1) {mstacan=1; dxx=0; } } // переместили фигуру на новые координаты else { if (pov) figmove(0,8); for (i=0;i<4;i++) // восстановили фигуру for (j=0;j<4;j++) if (fig[j][i]==1) mstacan=1; } return(flag); } //================================================ void clearstacan() { for (byte i=0;imyrecord) ( myrecord=Pobjeda; EEPROM_write(16, myrecord); ) display.setCursor(5,0); display.print("Zapis"); display.setCursor(5,10); display.print(myrecord); prikaz.prikaz(); display.setCursor(5,20); odgoda(2000);irrecv.resume(); display.println("Klik"); tb=getbutton("OK"); if (tb!=ok) ( ok=tb; levo=getbutton("Lijevo"); pravo=getbutton("Desno"); vniz=getbutton("Dolje"); EEPROM_write(0, ok); EEPROM_write(4, levo); EEPROM_write(12, vniz); display.fillRect(5, 0, (MaxX-1)*rz, 40, WHITE); moja brzina=800; tempspeed=mojabrzina; Pobjeda=0; ) //================================================= ================ = void setup() ( unsigned long tr; word gg=0; randomSeed(analogRead(0)); irrecv.enableIRIn(); // Pokretanje IRDA receiver display.begin(); display.setTextSize(1); // postavljanje boje teksta display.clearDisplay(); staklo u pikselima MaxY=display()/rz+4; u kockama SmeH=display()%rz; // gornji pomak za prikaz random(7); EEPROM_read (20, tr); if (tr==flfirst) EEPROM_read(16, myrecord); else (myrecord=0; EEPROM_write(20, flfirst); ) newgame(); //=== ==================================================== =========== void dvoiki() ( za (bajt i=0;i
I možete se boriti. Igra podržava vezanje na bilo koji daljinski upravljač. Da biste to učinili, na početku igre, na upit "Pritisni OK", pritisnite gumb na daljinskom upravljaču koji će biti odgovoran za rotiranje figure. Ako je daljinski upravljač igre već poznat, igra će započeti odmah. Ako je daljinski upravljač nov, šifra za tipku OK neće odgovarati memoriranoj i igra će od vas zahtijevati da redom pritisnete tipke "lijevo", "desno" i "dolje". Ovi gumbi bit će snimljeni u trajnu memoriju Arduina i naknadno će ovaj konkretni daljinski upravljač biti prepoznat odmah nakon pritiska na gumb "OK".


Kada “ne uspijete” na skupljenoj liniji, oglasit će se squeak. Implementiran je na temelju nekoliko Arduino pinova (u našem slučaju 9) za proizvodnju PWM-a na zadanoj frekvenciji.
Igra podržava sve atribute normalne igre. Tu je i savjet za sljedeću brojku i trenutni rezultat. Igra prati zapise. Ova vrijednost je pohranjena u Arduino stalnoj memoriji. Za ponovno postavljanje zapisa samo promijenite vrijednost flfirst=1234 u skici u bilo koju drugu vrijednost. Igra također automatski povećava brzinu padanja svakih 30 ispisanih redaka, tako da nećete moći igrati beskonačno). Skica nije optimizirana niti pažljivo vođena, već je napisana u slobodno vrijeme iz zabave. Ako netko nađe grešku neka piše. O ©. Možete urediti skicu kako želite. Samo kada negdje objavite svoje opcije, navedite vezu na izvorni izvor).
Zašto sam to učinio - dugi vikendi + “iz ljubavi prema umjetnosti.” Da mi je kći mala, vjerojatno bih joj za 8. mart napravila mini automat za lutkinu sobu, baš na vrijeme. Dodao bih nekoliko igrica kao što su Snake i Arkanoid, i vjerojatno izrezao tijelo od PCB-a. Samo moja kći već brani doktorat ove godine, tako da je promašaj, ali možda ova ideja bude od koristi još nekome).

Ukratko za zaslon Nokia 5110:
profesionalci
+Mogućnost prikaza grafike;
+Nema problema s ćirilicom;
+ Mala težina;
+Odličan omjer dimenzija/količina prikazanih informacija;
+Prednosti korištene LCD tehnologije su niska potrošnja energije i dobra čitljivost pri jakom svjetlu;
+ Promjenjivo pozadinsko osvjetljenje;
+Cijena.

minusi
-Pozadinsko osvjetljenje je neravnomjerno;
-Slika je crno-bijela (bez sjenčanja);
-Potrebno je voditi računa o 3.3V, nema svaki Arduino takav napon.

Presuda: Za svoj novac, na temelju svih njegovih karakteristika, pouzdano zauzima svoju nišu; nije uzalud tako duga jetra među uređajima za prikaz za Arduino.

Planiram kupiti +102 Dodaj u favorite Svidjela mi se recenzija +148 +269

Philips PCD8544.
Za povezivanje modula s drugim uređajima, ploča sadrži utikač konektora i rupe za lemljenje žica. Tu su i 4 rupe za montažu koje se nalaze na uglovima ploče.
Monokromatski zaslon Nokia 5110 LCD (plavi zaslon) ima pozadinsko osvjetljenje plavim LED diodama. Tijekom godina proizvodnje, Nokia 5110 korištena je i koristi se u širokom rasponu aplikacija. Zaslonski modul olakšava Nokia povezivanje i instalaciju u uređaj. Zahvaljujući modulu, prvo upoznavanje elektroničara ili programera s LCD zaslonom Nokia 5110 je pojednostavljeno. U početku korišten kao indikator mobilnog telefona, zaslon se proširio na druge kategorije uređaja. Pogodno je koristiti u mjernim instrumentima: voltmetrima, ampermetrima, ohmmetrima i drugima. Zaslon je također koristan za prikaz očitanja s medicinskih mobilnih uređaja. Zanimljivo ga je koristiti za ljestvicu radijskog prijamnika ili indikatora razine signala u opremi za reprodukciju zvuka. Zaslon rezolucije 84x48 piksela omogućuje vam prikaz simboličkih i grafičkih informacija.
Ako imate iskustva s Nokia 3310 LCD-om, bit će lako svladati Nokia 5110 LCD, budući da su ovi indikatori izgrađeni na istom PCD8544 kontroleru.

Specifikacije LCD modula Nokia 5110

Prehrana
napon 2,7…3,3 V
Trenutno
pozadinsko osvjetljenje isključeno 5 mA
pozadinsko osvjetljenje na 20 mA

Temperatura zraka tijekom rada 0…50
Temperatura skladištenja -10…70

LCD indikator Nokia 5110

Glavne karakteristike

Glavna komponenta LCD modula Nokia 5110 je LCD indikator. Ima ugrađene generatore napona napajanja i bias LCD elemenata, a tu je i LED pozadinsko osvjetljenje. SPI sučelje za unos informacija. Nokia 5110 može raditi u četiri načina rada: normalno, inverzija slike, prazan zaslon i "sve točke uključene". Korisnik također može kontrolirati temperaturu, napon napajanja i prednapon.

Prehrana
napon 2,7…3,3 V
struja do 320 µA
Frekvencija takta do 4 MHz
Vrijeme resetiranja najmanje 100 ns

Struktura prikaza

Zaslon je matrica LCD elemenata i PCD8544 mikro krug za njihovu kontrolu, smješten u kućištu postavljenom na ploči. Također sadrži četiri LED diode za pozadinsko osvjetljenje ekrana. Informacije o stanju točaka prikaza pohranjuju se u RAM kontrolera PCD8544; svaka točka odgovara jednom bitu memorije. Tu je i ugrađeni brojač adresa, koji se automatski povećava kada se sljedeći bajt informacija upiše u memoriju.

Kontrola zaslona

Provedeno preko SPI sučelja, zaslon je podređeni uređaj. Međutim, umjesto uobičajene četiri kontrolne linije, postoje samo tri. To su CLK sat, odabir SCE čipa i MOSI ulazne podatkovne linije. Nema MISO izlazne linije. To dovodi do potrebe za korištenjem posebnih metoda upravljanja, više o tome u nastavku. Sučelje radi u SPI-0 ili SPI-3 modovima. Nokia 5110 također ima dodatnu informacijsku/naredbenu kontrolnu liniju - D/C̅. Svaki bajt poslan na zaslon može se protumačiti kao naredba ili informacijski bajt, ovisno o razini na liniji D/C̅.
Prijenos informacija je jednosmjeran, a podaci se ne mogu čitati iz memorije i registara prikaza. Stoga program mora osigurati mogućnost kontrole stanja prikaza. Međutim, postoji još jedna značajka koja komplicira upravljanje. Ova značajka povezana je s organizacijom pamćenja.

Memorija se sastoji od šest banaka od kojih svaka sadrži 84 ćelije kapaciteta 1 bajta.

Adresiranje svakog indikatorskog piksela. Ukupno imamo 84x48 piksela, organiziranih u 6 horizontalnih nizova (nula do pet) i 84 stupca.

Svaka banka sadrži 8 vertikalno raspoređenih piksela, koji u zbroju šest banaka daju 48 linija. Slika prikazuje kako će određeni piksel biti prikazan iz RAM-a na zaslonu; svaka linija na slici predstavlja jednu banku.
Informacije se u memoriju zapisuju bajt po bajt, a ne bit po bit, i ne postoji način da se kontrolira svaka točka, već samo skupine od osam točaka. To, u kombinaciji s činjenicom da se informacije s LCD memorije Nokie 5110 ne mogu očitati, znači da je prije slanja potrebno zapamtiti koji su podaci pohranjeni u kojoj ćeliji. U suprotnom, podaci se mogu izgubiti kada se novi podaci pošalju na zaslon. Ova značajka je ilustrirana slikom koja prikazuje zamjenu simbola. Prilikom pisanja upravljačkog programa potrebno je predvidjeti mogućnost pohranjivanja podataka.

Zamjena simbola L simbolom A.

Zaslon je veličine 84x48 piksela. Informacije se izlaze u okomitim blokovima visine 8 piksela, čije su vrijednosti određene bitnim vrijednostima u izlaznom bajtu. Bit najmanjeg značaja kodira gornji piksel.
Gledajući unaprijed na opise naredbi, recimo. Naredbe 1xxxxxxx i 01000yyy definiraju koordinate kursora - liniju i poziciju na kojoj će biti prikazano sljedećih 8 bitova podataka. Nakon što je bajt ispisan, kursor se automatski pomiče na susjednu poziciju.
Ako je vodoravni način adresiranja V=0 odabran naredbom 00100PDVH, kursor se pomiče udesno i sljedeći bajt podataka bit će prikazan na susjednoj poziciji desno. Kada se dosegne desni rub zaslona, ​​kursor se pomiče na početak sljedećeg retka. Ako je odabrano okomito adresiranje V=1, kursor se pomiče prema dolje u sljedeći red, a nakon zadnjeg retka kursor se pomiče za jednu horizontalnu poziciju udesno i postavlja se u gornji red.
Kao međumemoriju možete koristiti memoriju upravljačke jedinice koja će pohraniti kopiju podataka na zaslonu. Prije slanja potrebno je podesiti podatke, ovisno o tome koji su podaci pohranjeni u međumemoriji.

Kontrolne naredbe za Nokia 5110

Zaslonom se upravlja slanjem naredbene riječi preko SPI sučelja. Veličina riječi je 1 bajt. Upravljačke naredbe podijeljene su u 3 kategorije.

Vrhovne funkcije menadžmenta

Postavi vrstu funkcije - označava s kojom će vrstom funkcija modul raditi, osnovne ili napredne.
Postavite način napajanja - uključuje ili isključuje napajanje.
Postavi način adresiranja - određuje vrstu adresiranja memorije: okomito ili vodoravno. U prvom slučaju, nakon upisa bajta podataka, brojač Y-adrese će se povećati, odnosno snimanje će se odvijati po stupcima. U drugom - brojaču X-adresa, snimanje će ići redak po redak.
Funkcije se prenose na Nokia 5110 LCD kada je linija D/C̅ niska. Definirani su jednom naredbenom riječi. Ova se riječ mora poslati na zaslon na početku rada. Format:

0 0 1 0 0 PD V H

Bit PD određuje način napajanja, postavljen na PD znači način rada prema dolje.
Način adresiranja bita V: 1 - okomito, 0 - vodoravno.
Bit H je vrsta funkcija koje će se koristiti za daljnji rad: 0 - normalno, 1 - prošireno.
Kao što vidite, potrebno je zapamtiti trenutno stanje zaslona tako da prilikom postavljanja nove vrijednosti parametra ne izgubite informacije o vrijednostima drugih. Naredba 00100PDVH prisutna je u oba skupa naredbi.

Glavne funkcije

Postavite način prikaza na 00001D0E. Definira način prikaza: prazan zaslon, sve točke uključene, normalan prikaz, inverzni prikaz. E - znak inverzije slike, D - izlaz slike. Ako je D=0, tada je ekran potpuno čist E=0 ili potpuno crn E=1.
Postavite naredbu X-adrese 1xxxxxxx ili 0x80 + x odabir vodoravne pozicije u trenutnom retku gdje će se slika prikazati. Gdje je x=0 krajnja lijeva pozicija, 83 je krajnja desna.
Naredba SetY-address 01000yyy postavlja Y-adresu ćelije u koju će biti upisan sljedeći bajt. Naredba ili 0x40+y odaberite broj retka (stranice) na kojem se prikazuje slika. Y=0 je gornja linija, 5 je donja linija. Linija je visoka 8 točaka.

Napredne postavke

Prošireni skup naredbi odabire se nakon slanja naredbe 00100PDV1.
Podesite temperaturu. Naredba 000001tt ili 0x04 + t odaberite jedan od četiri načina korekcije temperature. Ovisno o načinu rada, napon zaslona mijenjat će se drugačije s promjenom temperature.
Postavite prednapon elemenata LCD zaslona. Naredba 00010bbb ili 0x10 + b odabire jedan od osam načina za izračunavanje pomaka razine za kontrolu LCD-a. Za obične Nokia zaslone preporučeni način je 0001011 ili 0x13.
Postavite napon napajanja za elemente LCD zaslona. Naredba 1vvvvvvv, ili 0x80 + v odaberite napon na generatoru pojačanog napona za LCD. Kada je v=0 generator je isključen. Izlazni napon izračunava se pomoću formule VLCD = 3,06 V + v * 0,06 V. Ovisno o izboru metode korekcije napona, ova se vrijednost mijenja ovisno o temperaturi. Kako biste izbjegli oštećenje zaslona pri niskim temperaturama, preporučuje se da ta vrijednost bude manja od 8,5 V, tj. v<=90. Для обычных дисплеев Nokia это нормальное рабочее значение этого параметра примерно равно 56, т. е. команда принимает вид 10111000, или 0xB8.
Rad s osnovnim i naprednim funkcijama lakši je jer svaka ima svoju naredbenu riječ.
Morate imati na umu da za rad s određenom vrstom funkcija morate postaviti zaslon da radi s tim funkcijama. Inače će slanje naredbene riječi dovesti do netočnog izvršenja ove naredbe. Više detalja o upravljačkim naredbama možete pronaći u dokumentaciji na stranici 11.

Inicijalizacija zaslona

Mora se izvršiti unutar 30 ms nakon što se napajanje pojavi sljedećim redoslijedom:
poništiti postavljanjem odgovarajućeg ulaza nisko na 100 ns ili više,
uključite zaslon i odaberite prošireni skup naredbi slanjem 0x21,
pošalji naredbu za pomak napona 0x13,
postavite korekciju temperature naredbom 0x04,
uključite generator visokog napona na razinu od 6,42 V pomoću naredbe 0xB8,
povratak na standardni skup naredbi slanjem 0x20,
omogućite grafički način rada naredbom 0x0C.
Nakon ovih koraka, Nokia 5110 LCD je spremna za korištenje.

Spajanje Nokia 5110 LCD modula

Izlaz signala na kontakte modula prikazan je na slici na vrhu stranice. Na slici može postojati i drugačiji raspored kontakata.

Jedna od opcija za lokaciju kontakata.

Modul signala i vodova

VCC napajanje 3,3 V
GND Zajednička žica
SCE Omogući, aktivno nisko
Reset Reset, aktivno nisko
D/C̅ Podaci/naredba: 0 - podaci, 1 - naredba
Ulaz SDIN sučelja
SCLC signal sata
LED pozadinsko osvjetljenje. Za module na crvenoj ploči spojite na zajednički, za plave module spojite na napajanje. Koristite otpornik od 330 Ohma u krugu pozadinskog osvjetljenja. Neke modifikacije već imaju instaliran otpornik, druge ne. Da biste utvrdili prisutnost otpornika i odabrali optimalni način pozadinskog osvjetljenja, trebali biste pratiti struju modula i struju pozadinskog osvjetljenja. Ne smije prelaziti 20 mA.

Ako nijedan drugi uređaj nije spojen na SPI sučelje mikrokontrolera, tada da biste sačuvali kontakte glavnog upravljačkog modula uređaja i smanjili broj komunikacijskih linija, SCE aktivni pin za odabir uređaja treba biti spojen na GND pin na modulu odbor. Ali postoji nedostatak. Ako je Nokia kontroler izgubio sinkronizaciju s MK, sada je nemoguće otkriti.
Na ovaj način treba napraviti pouzdaniju vezu. Povucite ovaj vod na visoku razinu s otpornikom od 100-500 kOhm kako biste spriječili da smetnje utječu na regulator dok je MK u stanju resetiranja.
Kada radite s AVR mikrokontrolerima, prikladno je koristiti USART sučelje u SPI master modu. SPI-3 način (CPHA=1, CPOL=1). To znači da dok nema razmjene, linija SCLK je visoka, a kontroler čita podatke iz linije SDIN na uzlaznom rubu na liniji SCLK tijekom 100 ns. U tom slučaju moraju biti postavljeni najmanje 100 ns prije uzlaznog ruba. Prijenos se provodi u 8 bitova, najvažniji prvi.
Razina na liniji D/C̅ određuje kako interpretirati primljene podatke. Visoka razina znači da se preneseni podaci trebaju prikazati, niska razina znači da se prenosi naredba. Kontroler čita vrijednost u ovom retku zajedno sa zadnjim (najnižim) bitom svakog prenesenog bajta podataka. Ovo može biti teško kada se koristi asinkroni prijenos hardvera. Prije postavljanja razine morate pričekati da prethodni bajt završi prijenos.

Spajanje Nokia 5110 LCD modula i Arduino UNO.

Ulazni signali modula moraju odgovarati logičkim razinama sklopa napajanog naponom od 3,3 V. Pri radu s mikrokontrolerom s napajanjem od 5 V moraju se koristiti sklopovi za usklađivanje razina.

Grafička umjetnost

Na početku pripreme grafičke slike potrebno je u bilo kojem grafičkom uređivaču pripremiti crno-bijelu sliku u *.bmp formatu rezolucije 84x48 piksela. Pripremili smo takvu sliku u Paint-u, evo je:

Naziv slikovne datoteke mora biti spremljen latiničnim slovima. Korištenje programa

Sjećate li se onih vremena kada su mobilni telefoni bili "hrastovi", imali su zasebnu tipkovnicu s tipkama i mali jednobojni zaslon s tekućim kristalima?

Sada ovo tržište pripada svim vrstama iPhonea, Galaxyja itd., ali zasloni pronalaze novu namjenu: DIY projekti!

Crno-bijeli zaslon od 84x48 piksela koji ćemo razmotriti korišten je u telefonima Nokia 3310. Njihova glavna prednost je jednostavnost rada. Takav zaslon savršeno će se uklopiti u vaš projekt za interaktivnu razmjenu informacija s korisnikom.

U ovom ćemo članku pogledati upravljanje ovim grafičkim zaslonom pomoću Arduina. Uzimaju se u obzir sve mogućnosti povezivanja, tehničke karakteristike zaslona i programa za Arduino.

Potrebni materijali

  • Arduino ili njegov klon.
  • Priključci.
  • tiskana ploča.

Specifikacije zaslona za Nokia 5110

Prije spajanja zaslona i programiranja Arduina, pogledajmo neke opće informacije o njemu.

Prikaz izvoda

Za povezivanje i prijenos podataka, zaslon koristi dva paralelna reda od 8 konektora. Svaka je igla označena na stražnjoj strani zaslona.


Kao što je već spomenuto, igle su spojene paralelno jedna s drugom. Informacije o namjeni svakog priključka navedene su u nastavku.


Prehrana

Već ste primijetili da LCD zaslon 5110 ima dva priključka za napajanje. Prvi je najvažniji - napajanje logike prikaza. U podatkovnoj tablici stoji da ga treba odabrati u rasponu od 2,7 - 3,3 V. U normalnom radu zaslon će trošiti od 6 do 7 mA.

Drugi konektor za napajanje je za pozadinsko osvjetljenje zaslona. Uklonite li sam zaslon s ploče (ovo nije potrebno, možete samo pogledati sliku ispod), vidjet ćete da je pozadinsko osvjetljenje implementirano vrlo jednostavno: četiri bijele LED diode, koje se nalaze u kutovima ploče. Imajte na umu da nema otpornika za ograničavanje struje.


Stoga morate biti pažljiviji s prehranom. Možete koristiti otpornik za ograničavanje struje kada spajate "LED" pin ili koristiti maksimalni napon napajanja od 3,3 V. Ne zaboravite da LED diode mogu apsorbirati jake struje! Bez ograničenja, oni će povući oko 100 mA pri naponu napajanja od 3,3 V.

Upravljačko sučelje

Zaslon ima ugrađeni kontroler: Philips PCD8544, koji pretvara masivno paralelno sučelje u praktičnije serijsko. PCD8544 se kontrolira pomoću sinkronog serijskog protokola, koji je sličan SPI. Imajte na umu da postoje pinovi za brojač vremena (SCLK) i serijski unos podataka (DN), kao i izbor aktivnog niskog čipa (SCE).

Iznad razmatranih serijskih konektora ugrađen je još jedan konektor - D/C, preko kojeg se prima informacija da li se podaci koji se prenose mogu prikazati.

Za popis naredbi, pogledajte odjeljak "Upute" podatkovne tablice PCD8544 (stranica 11). Postoje naredbe koje brišu zaslon, invertiraju piksele, isključuju napajanje itd.

Sastavljanje i spajanje 5110 zaslona

Prije učitavanja skice i prijenosa podataka na zaslon, morate razumjeti vezu. Da biste to učinili, morate riješiti pitanje sastavljanja i povezivanja s Arduinom.

Skupština

Za "sastavljanje" zaslona možda će vam trebati konektori. 8 komada će biti dovoljno. Možete koristiti ravne noge ili one od 90 stupnjeva. Ovisi o daljnjoj upotrebi. Ako planirate koristiti tiskanu ploču, tračnica s ravnim konektorima vjerojatno će biti najbolji izbor.

LCD zaslon iz Nokie 5110 postavljen na mini tiskanu ploču:


Također možete izravno zalemiti adaptere na zaslon.

Spajanje 5110 zaslona na Arduino

U ovom primjeru spojit ćemo LCD zaslon na Arduino. Slična tehnika može se lako prilagoditi drugim pločama i mikrokontrolerima. Za spajanje pinova za prijenos podataka - SCLK i DN(MOSI) - koristimo Arduino SPI pinove, koji omogućuju brzi prijenos podataka. Pinovi za odabir čipa (SCE), resetiranje (RST) i podaci/kontrola (D/C) mogu se spojiti na bilo koji digitalni pin. Izlaz iz LED-a spojen je na pin na Arduinu, koji podržava PWM modulaciju. Zahvaljujući tome, moguće je fleksibilno podešavanje svjetline pozadinskog osvjetljenja.

Nažalost, maksimalni napon napajanja 5110 zaslona može doseći 3,6 volti, tako da se ne može spojiti izravno na standardni izlaz od 5 V na Arduinu. Potrebno je podesiti napon. Sukladno tome, pojavljuje se nekoliko opcija povezivanja.

Izravna veza s Arduinom

Najlakša opcija je izravno spajanje na Arduino. U ovom slučaju morate koristiti Arduino ploče Pro 3.3V/8MHz ili 3.3V Arduino Pro Mini. Dolje predložena opcija radi s Arduino 5V pločama. Ovo je radna opcija, ali životni vijek zaslona može biti malo smanjen.


Pinovi su povezani na sljedeći način:


Dobra i jeftina opcija za pružanje dodatne zaštite je ugradnja otpornika između podatkovnih pinova od Arduina do LCD 5110. Ako koristite Arduino Uno(ili sličnu 5-voltnu ploču), možete koristiti otpornike s nominalnom vrijednošću od 10 kOhm i 1 kOhm. Dijagram spajanja zaslona pomoću otpornika prikazan je na donjoj slici:


Spajanje je isto kao u prvom primjeru, ali je u svaki signalni krug ugrađen otpornik. Otpornici od 10 kOhm instalirani su između SCLK, DN, D/C i RST pinova. Otpornik od 1 kOhm je između SCE pinova i pina 7. Pa, 330 Ohma ostaje između pina 9 i pina s LED-om. i pin 7.

Pretvarači razine

Treća opcija povezivanja je korištenje pretvarača razine za prebacivanje između 5 i 3,3 V. U te svrhe možete koristiti dvosmjerni logički pretvarač razine ili module TXB0104.


Nažalost, na displeju postoji pet ulaza za signal od 3,3 V, a četiri na pretvaračima razine. RTS izlaz možete ostaviti visokim (spajanjem pomoću otpornika od 10 k ohma). Kao rezultat toga, više nećete moći kontrolirati kako se zaslon ponovno pokreće, ali će sve ostale funkcije biti dostupne.

Prvi Arduino primjer skice: LCD Demo

Nakon uspješne veze možete pristupiti preuzimanju skice i prikazu podataka na displeju!

Program za Arduino

Komentari u gornjem kodu trebali bi vam pomoći da razumijete program. Većina radnji događa se unutar funkcije lcdFunTime().

Skica na djelu

Nakon učitavanja na Arduino, skica će početi raditi i pokrenuti demo - skup standardnih animacija i testiranje grafičkih funkcija. Prvo, prikažimo nekoliko piksela. Nakon toga prelazimo na prikaz linija, pravokutnika i krugova, učitavanje bitmape itd.


Nakon završetka skice, monitor će se prebaciti u način rada za prijenos podataka putem serijskog protokola. Otvorite serijski monitor (s brzinom prijenosa od 9600 bps). Ono što ispišete na serijskom monitoru pojavit će se na LCD monitoru.

Ako vas zanimaju mogućnosti prikaza rasterskih slika, čitajte dalje. Pogledat ćemo kako točno možete uvesti vlastitu bitmapnu sliku veličine 84x48 i prikazati je na zaslonu.

Drugi primjer Arduino skice: učitavanje i prikazivanje bitmapa

U ovom primjeru izradit ćemo novu bitmapu veličine 84x48, integrirati je u Arduino kod i poslati na LCD monitor.


Pronađite/Stvorite/Promijenite bitmapu

Najprije pronađite sliku koju želite prikazati na 5110 LCD zaslonu. Nećete je moći previše proširiti na 84x48 piksela, ali je i dalje moguće. Evo nekoliko primjera:

Nakon što odaberete sliku, trebate je ispraviti: učiniti je jednobojnom (2-bitna boja); zadržite veličinu 84x48 piksela. Za to možete koristiti većinu programa za uređivanje slika. Uključujući Paint, ako imate Windows. Spremite dobivenu sliku.

Pretvaranje bitmape u polje

Sljedeći korak je pretvoriti ovu datoteku u niz znakova od 504 bajta. Da biste to učinili, možete koristiti različite programe. Na primjer, LCD Assistant.

Za učitavanje slike u LCD Assistant, idite na File > Load Image. Trebao bi se otvoriti prozor sa slikom za pregled. Provjerite je li slika ispravne veličine - 84 piksela široka, 48 piksela visoka, i je li orijentacija bajta postavljena na okomito, a endianness veličine na malo. Ostatak zadanih postavki trebao bi biti ispravno postavljen (8 piksela/bajt)

Nakon toga idite na karticu Datoteka > Spremi izlaz da biste generirali privremenu tekstualnu datoteku. Otvorite ovu tekstualnu datoteku da vidite svoj prekrasan novi niz. Promijenite vrstu polja u char (ne unsigned ili const). Također provjerite je li niz ispravno imenovan (bez crtice, ne počinje brojem itd.).

Uvezi u skicu i nacrtaj!

Kopirajte kreirani niz u Arduino skicu. Možete koristiti skicu iz prvog primjera. Zalijepite svoj niz bilo gdje. Sada, da biste prikazali svoju skicu, zamijenite setup() i loop() u svojoj skici s redovima ispod (ostale funkcije i varijable neka budu iste):

// ...varijable, konstante i niz bitmapa definirani su gore

lcdPočetak(); // Postavljanje pinova i inicijalizacija LCD zaslona

postavi Kontrast(60); // Podesite kontrast (preferirani raspon je od 40 do 60)

setBitmap(flameBitmap); // flameBitmap treba zamijeniti imenom vašeg niza

ažurirajPrikaz(); //Ažuriraj prikaz za prikaz niza

// Funkcije za kontrolu i grafiku na LCD zaslonu definirane su u nastavku...

Stvarno, ispalo je cool? Između ostalog, možete uvesti više slika i izraditi male animacije! Probajte, sigurna sam da će vam se svidjeti!

Veze za preuzimanje dodatnih programa, biblioteka i podatkovnih tablica

Podatkovne tablice za LCD zaslon i upravljačke programe
  • LCD podatkovna tablica – nije potpuno isti kao 5110, ali vrlo sličan u specifikacijama
Arduino knjižnice i skice
  • PCD8544 Arduino knjižnica – knjižnica za rad Arduina s PCD8544 LCD drajverom
Programi za izradu rasterskih slika
  • TheDotFactory – Izvrstan alat za stvaranje prilagođenih nizova fontova

Ostavite svoje komentare, pitanja i podijelite svoja osobna iskustva u nastavku. Nove ideje i projekti često se rađaju u raspravama!

Novi članci

● Projekt 16: Grafički indikator. Veza Nokia zaslon 5110

U ovom eksperimentu, pogledat ćemo grafički zaslon Nokia 5110, koji se može koristiti u Arduino projektima za prikaz grafičkih informacija.

Potrebne komponente:

Zaslon s tekućim kristalima Nokia 5110 jednobojni je zaslon rezolucije 84×48 na PCD8544 kontroleru, dizajniran za prikaz grafičkih i tekstualnih informacija. Napon napajanja zaslona trebao bi biti između 2,7-3,3 V (maksimalno 3,3 V; ako se na VCC pin dovodi 5 V, zaslon se može oštetiti). Ali pinovi kontrolera su tolerantni na +5 V, tako da se mogu izravno spojiti na Arduino ulaze. Važna točka je niska potrošnja, koja vam omogućuje napajanje zaslona s Arduino ploče bez vanjskog izvora napajanja.
Dijagram povezivanja Nokie 5110 s Arduinom prikazan je na sl. 16.1.

Riža. 16.1. Dijagram spajanja Nokie 5110 na Arduino

Za rad sa zaslonom Nokie 5110 koristit ćemo biblioteku Adafruit_GFX koja ima bogate mogućnosti za prikaz grafike i teksta. U našem eksperimentu ćemo dobiti podatke o osvjetljenju od fotootpornika spojenog na analogni ulaz Arduino A0 i poslati podatke o osvjetljenju u numeričkom i grafičkom prikazu. Dijagram povezivanja prikazan je na sl. 16.2.

Riža. 16.2. Dijagram spajanja Nokie 5110 i fotootpornika na Arduino

Kôd za našu skicu eksperimenta prikazan je u ispisu 16.1. Očitavamo podatke s fotootpornika i prikazujemo brojčanu vrijednost, kao i grafički (traka napretka), vrijednost osvijetljenosti u postotku od maksimalne vrijednosti. Vrijednosti minimalnog i maksimalnog osvjetljenja uzimamo iz eksperimenta 13.

// Povezivanje knjižnice #uključiti #uključiti // PIN 7 - RST Pin 1 na LCD-u // PIN 6 - CE Pin 2 na LCD-u // PIN 5 - DC Pin 3 na LCD-u // PIN 4 - DIN Pin 4 na LCD-u // PIN 3 - CLK Pin 5 na LCD-u Adafruit_PCD8544 zaslon = Adafruit_PCD8544(3, 4, 5, 6, 7); const int SVJETLO=A0; // Pin A0 za ulaz fotootpornika const int MIN_LIGHT=200 ; // Donji prag osvjetljenja const int MAX_LIGHT=900 ; // Gornji prag osvjetljenja // Varijabla za pohranu podataka fotootpornika int val1,val2 = 0 ; void setup()( display.begin(); // postavljanje kontrasta pozadine zaslona // vrlo važan parametar! display.setContrast(60); prikaz.clearDisplay(); // očisti ekran kašnjenje (2000); ) void petlja()( val1 = analogRead(LIGHT); // Očitajte očitanja fotootpornika nacrtajTekst(val1,1); // prikaz teksta // skaliranje vrijednosti potenciometra na 0-75 val2= karta (val1, MIN_LIGHT, MAX_LIGHT, 0, 75); // izlaz crnog pravokutnika u % display.fillRect(5, 25, val2, 10, 1); // izlaz bijelog dijela pravokutnika display.fillRect(5 +val2,25, 75 -val2, 10, 0); prikaz.prikaz(); kašnjenje (1000); // pauza prije novog mjerenja nacrtajTekst(val1,2); // brisanje teksta) // postupak ispisa teksta void drawText( nepredpisani dugi broj, int boja)( display.setTextSize(2); // veličina fonta display.setCursor(20,5); // pozicija kursora if (color==1 ) display.setTextColor(BLACK); // ispis vrijednosti else display.setTextColor(WHITE); // brisanje (bijelo na bijelom) prikaz.ispis(broj); )
Redoslijed spajanja:

1. Spojite senzor zaslona Nokia 5110 i fotootpornik prema dijagramu na sl. 16.2.
2. Učitajte skicu iz ispisa 16.1 na Arduino ploču.
3. Blokirajući protok svjetlosti rukom, pogledajte promjenu očitanja osvjetljenja na zaslonu.

Popisi programa