- Būtina aparatinė įranga:
- Susipažinimas su OLED ekranais:
- Aparatūra ir jungtys:
- SSD1306 OLED ekrano programavimas „Arduino“:
Daugelis iš mūsų būtų susipažinę su 16 × 2 taškų matricos LCD ekranu, kuris naudojamas daugumoje projektų tam, kad vartotojui būtų rodoma tam tikra informacija. Tačiau šie LCD ekranai turi daug apribojimų, ką jie gali padaryti. Šioje pamokoje mes sužinosime apie OLED ekranus ir kaip juos naudoti „Arduino“. Rinkoje yra daugybė OLED ekranų tipų ir yra daugybė būdų, kaip juos veikti. Šioje pamokoje aptarsime jos klasifikacijas ir tai, kas geriausiai tiks jūsų projektui.
Būtina aparatinė įranga:
- 7 kontaktų 128 × 64 OLED ekrano modulis (SSD1306)
- „Arduino UNO“ / „Nano“
- Bandomoji Lenta
- Laidų sujungimas
- Kompiuteris / nešiojamas kompiuteris
Susipažinimas su OLED ekranais:
Terminas OLED reiškia „ organinis šviesos diodas“. Jame naudojama ta pati technologija, kuri naudojama daugumoje mūsų televizorių, tačiau turi mažiau taškų, palyginti su jais. Labai smagu, kad šie šauniai atrodantys ekranų moduliai bus susieti su „Arduino“, nes tai leis mūsų projektams atrodyti šauniai. Čia apžvelgėme visą straipsnį apie OLED ekranus ir jo tipus.
Mes naudojame vienspalvį 7 kontaktų SSD1306 0,96 ”OLED ekraną. Šio ekrano pasirinkimo priežastis yra ta, kad jis gali dirbti su trimis skirtingais ryšio protokolais, tokiais kaip SPI 3 laido režimas, SPI keturių laidų režimas ir IIC režimas. Šioje pamokoje bus aprašyta, kaip naudoti modulį SPI 4 laidų režimu, nes tai greičiausias ir numatytasis ryšio būdas.
Smeigtukai ir jo funkcijos paaiškinti toliau pateiktoje lentelėje.
PIN kodas |
PIN vardas |
Kiti vardai |
Naudojimas |
1 |
Gnd |
Žemė |
Įžemintas modulio kaištis |
2 |
Vdd |
Vcc, 5 V |
Maitinimo kaištis (3-5V toleruojamas) |
3 |
SCK |
D0, SCL, CLK |
Veikia kaip laikrodžio kaištis. Naudojamas tiek I2C, tiek SPI |
4 |
SDA |
D1, MOSI |
Modulio duomenų kaištis. Naudojamas tiek IIC, tiek SPI |
5 |
RES |
RST, RESET |
Iš naujo nustatomas modulis (naudinga SPI metu) |
6 |
DC |
A0 |
Duomenų komandos kaištis. Naudojamas SPI protokolui |
7 |
CS |
Chip Select |
Naudinga, kai pagal SPI protokolą naudojami daugiau nei vienas moduliai |
Šioje pamokoje mes paprasčiausiai valdysime modulį 4 laidų SPI režimu, o likusius paliksime kitai pamokai.
„Arduino“ bendruomenė jau suteikė mums daugybę bibliotekų, kurias galima tiesiogiai naudoti, kad būtų daug paprasčiau. Išbandžiau keletą bibliotekų ir sužinojau, kad „Adafruit_SSD1306“ biblioteka buvo labai paprasta naudotis ir joje buvo keletas grafinių parinkčių, todėl ir šioje instrukcijoje naudosime tas pačias. Bet jei jūsų projekte yra atminties / greičio apribojimų, pabandykite naudoti U8g biblioteką, nes ji veikia greičiau ir užima mažiau programos atminties.
Aparatūra ir jungtys:
Schema už SSD1306 OLED sąsajos su Arduino yra tikrai paprastas ir yra rodomas žemiau
Mes tiesiog užmezgėme SPI ryšį tarp OLED modulio ir „Arduino“. Kadangi OLED veikia su 3V-5V ir sunaudoja labai mažai energijos, jam nereikia išorinio maitinimo šaltinio. Galite paprasčiausiai naudoti laidus, kad sujungtumėte, arba naudokite duonos lentą, kaip aš naudojau, kad būtų lengva eksperimentuoti. Ryšys taip pat nurodytas pasakoje žemiau
S.No |
Prisegti pavadinimą OLED modulyje |
Prisegti vardą „Arduino“ |
1 |
Gnd, Ground |
Žemė |
2 |
Vdd, Vcc, 5V |
5V |
3 |
SCK, D0, SCL, CLK |
10 |
4 |
SDA, D1, MOSI |
9 |
5 |
RES, RST, RESET |
13 |
6 |
DC, A0 |
11 |
7 |
CS, „Chip Select“ |
12 |
Pastaba: negalėsite vizualizuoti jokio OLED modulio apšvietimo / švytėjimo, tik jį įjungę. Turite jį tinkamai užprogramuoti, kad pastebėtumėte pasikeitimus OLED ekrane.
SSD1306 OLED ekrano programavimas „Arduino“:
Kai jungtys bus paruoštos, galėsite pradėti programuoti „Arduino“. Kaip minėjome anksčiau, dirbdami su šiuo OLED moduliu naudosime „Adafruit“ biblioteką ir „GFX“ biblioteką. Atlikite veiksmus, kad išbandytumėte savo OLED ekraną.
1 veiksmas: atsisiųskite „Adafruit“ biblioteką ir „GFX“ biblioteką iš „Github“ naudodami toliau pateiktą nuorodą
- „Adafruit“ biblioteka
- GFX grafikos biblioteka
2 žingsnis: Turėtumėte atsisiųsti du „Zip“ failus. Dabar pridėkite juos prie „Arduino“ sekdami
Eskizas-> Įtraukti biblioteką -> Pridėti „Zip“ biblioteką, kaip parodyta žemiau. Tada pasirinkite ką tik atsisiųstą biblioteką. Vienu metu galite pasirinkti tik vieną biblioteką, todėl šį veiksmą turite pakartoti dar kartą.
3 žingsnis: Paleiskite programos pavyzdį pasirinkdami Failas-> Pavyzdžiai-> Adafruit SSD1306 -> SSD1306_128 * 64_SPI.ino, kaip parodyta paveikslėlyje žemiau.
4 žingsnis: Programos pavyzdyje 64 eilutės viršuje pridėkite eilutę „#define SSD1306_LCDHEIGHT 64“, kaip parodyta paveikslėlyje žemiau.
5 žingsnis: Dabar įkelkite programą ir turėtumėte pamatyti, kad OLED ekranas suaktyvinamas su numatytuoju „Adafruit“ pavyzdžio kodu, kaip parodyta žemiau esančiame paveikslėlyje. Pilna darbo vaizdo skiriamas pabaigoje.
Šis programos pavyzdys rodo visas galimas grafikas, kurios gali būti rodomos OLED ekrane. Šio kodo turėtų pakakti, kad galėtumėte kurti taškinius žemėlapius, piešti linijas / apskritimus / stačiakampius, žaisti su pikseliais, rodyti char ir string su skirtingais šriftais ir dydžiu ir pan…
Jei norite geriau suprasti biblioteką ir jos funkcijas, galite skaityti toliau. Kiekvienas kodo brūkšnys yra padalintas ir paaiškintas komentarų eilutėmis. Pilnas kodas pateikiamas šio straipsnio pabaigoje
Ekrano rodymas ir išvalymas:
Rašymas OLED ekrane yra toks pats kaip rašymas ant juodos lentos, mes turime užrašyti reikšmes ir tada išvalyti, kad ją būtų galima perrašyti. Ekrano rašymui ir išvalymui naudojamos šios komandos
display.display (); // Parašykite, kad būtų rodomas display.clearDisplay (); // išvalyti ekraną
Pateikti simbolio kintamąjį:
Norėdami rodyti turinį kintamajame, galite naudoti šį kodą.
char i = 5; // rodomas kintamasis display.setTextSize (1); // Pasirinkite teksto display.setTextColor (WHITE) dydį; // tik vienspalviam vaizdui galima tik display.setCursor (0,0); // 0,0 yra viršutinis kairysis OLED ekrano ekrano kampas.write (i); // Parašykite rodomą kintamąjį
Linijos, apskritimo, stačiakampio, trikampio piešimas:
Jei norite pridėti keletą simbolių prie savo ekrano, galite naudoti šį kodą, norėdami nupiešti bet kurį iš šių elementų
display.drawLine (display.width () - 1, 0, i, display.height () - 1, WHITE); // anuliuoti drawLine (x0, y0, x1, y1, spalva); display.drawRect (i, i, display.width () - 2 * i, display.height () - 2 * i, WHITE); // negaliojantis drawRect (x0, y0, w, h, spalva); trikampis (display.width () / 2, display.height () / 2-i, display.width () / 2-i, display.height () / 2 + i, display.width () / 2+ i, display.height () / 2 + i, BALTAS); // anuliuoti drawTriangle (x0, y0, x1, y1, x2, y2, color); display.drawCircle (display.width () / 2, display.height () / 2, i, WHITE); // anuliuoti drawCircle (x0, y0, r, spalva);
Styginių piešimas ekrane:
Toliau pateiktą kodo dalį galima naudoti bet kokio pranešimo ekrane rodymui tam tikroje vietoje ir dydžiu
display.setTextSize (2); // nustatykite teksto display.setTextColor (WHITE) dydį; // spalvų nustatymo ekranas.setCursor (10,0); // Eilutė prasidės nuo 10,0 (x, y) display.clearDisplay (); // Ištrinkite bet kurį ankstesnį ekraną ekrane.println ("Circuit Digest"); // Spausdinkite eilutę čia „Circuit Digest“ display.display (); // nusiųskite tekstą į ekraną
Rodomas bitų žemėlapio vaizdas:
Vienas nepatikimas dalykas, kurį galima padaryti naudojant OLED modulį, yra tai, kad jis gali būti naudojamas rodyti bitų žemėlapius. Šis kodas naudojamas rodyti taškų žemėlapio vaizdą
statinis const unsigned char PROGMEM logo16_glcd_bmp = {B00000000, B11000000, B00000001, B11000000, B00000001, B11000000, B00000011, B11100000, B11110011, B11100000, B11111110, B11111000, B01111110, B11111111, B00110011, B10011111, B00011111, B11111100, B00001101, B01110000, B00011011, B10100000, B00111111, B11100000, B00111111, B11110000, B01111100, B11110000, B01110000, B01110000, B00000000, B00110000}; display.drawBitmap (XPO], YPOS, bitmap, w, h, WHITE); // negalioja drawBitmap (x, y, * bitmap, w, h, spalva);
Kaip matote, norint atvaizduoti vaizdą, bitų žemėlapio duomenys turi būti saugomi programos atmintyje kaip PROMGMEM direktyva. Paprasčiau tariant, mes turime nurodyti OLED ekraną, ką daryti su kiekvienu pikseliu, perduodant jam seką ar reikšmes iš masyvo, kaip parodyta aukščiau. Šiame masyve bus paveikslėlio bitų žemėlapio duomenys.
Tai gali skambėti sudėtingai, tačiau naudojant žiniatinklio įrankį labai lengva paversti vaizdą į šiek tiek žemėlapio reikšmes ir įkelti juos į aukščiau pateiktą masyvą.
Tiesiog įkelkite vaizdą ir sureguliuokite nustatymus, kad gautumėte pageidaujamą vaizdo peržiūrą. Tada spustelėkite „Generuoti kodą“, nukopijuokite kodą ir įklijuokite jį į savo masyvą. Įkelkite programą ir viskas. Pabandžiau parodyti „Batman“ logotipą ir taip pasirodė.
Vis dar yra daugybė dalykų, kuriuos galite padaryti naudodami šias bibliotekas. Norėdami sužinoti visas galimybes, apsilankykite „Adafruit GFX grafikos pradmenų“ puslapyje.
Tikiuosi, kad jūs tai atlikote ir esate pasirengęs įdiegti OLED ekraną kai kuriuose savo projektuose. Jei turite kokių nors problemų, pasidalykite jais komentarų skiltyje ir pasistengsiu jas ištaisyti.