- Kinakailangan ang Hardware:
- Pag-alam tungkol sa OLED Ipinapakita:
- Hardware at mga koneksyon:
- Pag-program ng SSD1306 OLED display para sa Arduino:
Karamihan sa atin ay magiging pamilyar sa pagpapakita ng 16 × 2 Dot matrix LCD na ginagamit sa karamihan ng mga proyekto upang maipakita ang ilang impormasyon sa gumagamit. Ngunit ang mga LCD display na ito ay may maraming limitasyon sa kung ano ang maaari nilang gawin. Sa tutorial na ito matututunan natin ang tungkol sa mga pagpapakita ng OLED at kung paano gamitin ang mga ito ng Arduino. Maraming mga uri ng mga pagpapakita ng OLED na magagamit sa merkado at maraming mga paraan upang sila ay gumana. Sa tutorial na ito tatalakayin namin ang tungkol sa mga pag-uuri nito at alin din ang magiging pinakaangkop para sa iyong proyekto.
Kinakailangan ang Hardware:
- 7pin 128 × 64 OLED display Module (SSD1306)
- Arduino UNO / Nano
- Breadboard
- Mga Koneksyon sa Mga Wires
- Computer / Laptop
Pag-alam tungkol sa OLED Ipinapakita:
Ang terminong OLED ay nangangahulugang " Organic Light emitting diode" gumagamit ito ng parehong teknolohiya na ginagamit sa karamihan ng aming mga telebisyon ngunit may mas kaunting mga pixel kumpara sa mga ito. Tunay na masaya na magkaroon ng mga cool na naghahanap ng mga module ng pagpapakita na ma-interfaced sa Arduino dahil gagawin nitong cool ang aming mga proyekto. Saklaw namin ang isang buong Artikulo tungkol sa mga pagpapakita ng OLED at mga uri nito dito.
Gumagamit kami ng isang display na Monochrome 7-pin SSD1306 0.96 ”OLED. Ang dahilan para sa pagpili ng display na ito ay maaari itong gumana sa tatlong magkakaibang mga Protocol ng komunikasyon tulad ng SPI 3 Wire mode, SPI apat na wire mode at IIC mode. Saklaw ng tutorial na ito kung paano gamitin ang module sa SPI 4-wire mode dahil ito ang pinakamabilis na mode ng komunikasyon at ang isang default.
Ang mga pin at ang mga pag-andar nito ay ipinaliwanag sa talahanayan sa ibaba.
Numero ng Pin |
Pangalan ng Pin |
Ibang pangalan |
Paggamit |
1 |
Gnd |
Lupa |
Ground pin ng modyul |
2 |
Vdd |
Vcc, 5V |
Power pin (3-5V matitiis) |
3 |
SCK |
D0, SCL, CLK |
Gumagawa bilang pin ng orasan. Ginamit para sa parehong I2C at SPI |
4 |
SDA |
D1, MOSI |
Data pin ng modyul. Ginamit para sa parehong IIC at SPI |
5 |
RES |
RST, I-reset |
I-reset ang module (kapaki-pakinabang sa panahon ng SPI) |
6 |
DC |
A0 |
Data Command pin. Ginamit para sa SPI protocol |
7 |
CS |
Piliin ang Chip |
Kapaki-pakinabang kapag higit sa isang module ang ginamit sa ilalim ng SPI protocol |
Sa tutorial na ito ay simpleng pagpapatakbo namin ang module sa 4-Wire SPI mode, iiwan namin ang natitira para sa ilang iba pang tutorial.
Ang pamayanan ng Arduino ay nagbigay sa amin ng maraming mga Aklatan na maaaring direktang magamit upang gawin itong mas simple. Sinubukan ko ang ilang mga silid-aklatan at nalaman na ang Adafruit_SSD1306 Library ay napakadaling gamitin at may kaunting mga graphic na pagpipilian kung gayon gagamitin namin ang pareho sa tutorial na ito. Ngunit, kung ang iyong proyekto ay may memorya / bilis ng pagpilit subukang gamitin ang U8g Library dahil mas mabilis itong gumagana at mas mababa ang memorya ng programa.
Hardware at mga koneksyon:
Ang Circuit Diagram para sa SSD1306 OLED na nakikipag-interfaces sa Arduino ay talagang simple at ipinapakita sa ibaba
Kami ay nagtaguyod lamang ng isang komunikasyon sa SPI sa pagitan ng OLED module at Arduino. Dahil ang OLED ay tumatakbo sa 3V-5V at kumonsumo ng napakakaunting lakas hindi na ito kailangan ng isang panlabas na supply ng kuryente. Maaari mo lamang gamitin ang mga wire upang makakonekta o gumamit ng isang breadboard tulad ng ginamit ko upang madali itong mag-eksperimento. Ang koneksyon ay nakalista rin sa kuwento sa ibaba
S.Hindi |
Pangalan ng Pin sa module ng OLED |
Pangalan ng Pin sa Arduino |
1 |
Gnd, Lupa |
Lupa |
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 |
Tandaan: Hindi mo magagawang mailarawan ang anumang backlight / glow sa OLED module sa pamamagitan lamang ng pag-power ito. Kailangan mong i-program nang tama upang mapansin ang anumang mga pagbabago sa display na OLED.
Pag-program ng SSD1306 OLED display para sa Arduino:
Kapag handa na ang mga koneksyon maaari mong simulan ang pag-program ng Arduino. Tulad ng sinabi kanina, gagamitin namin ang Adafruit library at GFX library para sa pagtatrabaho sa OLED module na ito. Sundin ang mga hakbang upang subukan ang patakbuhin ang iyong OLED display.
Hakbang 1: I-download ang Adafruit Library at ang GFX library mula sa Github gamit ang link sa ibaba
- Adafruit Library
- GFX Graphics Library
Hakbang 2: Dapat ay mayroon kang pag-download ng dalawang Zip file. Idagdag ngayon ang mga ito sa iyong Arduino sa pamamagitan ng pagsunod
Sketch-> Isama ang Library -> Magdagdag ng Zip library tulad ng ipinakita sa ibaba. Pagkatapos piliin ang aklatan na na-download lamang namin. Maaari kang pumili lamang ng isang library nang paisa-isa, kaya't kailangan mong ulitin muli ang hakbang na ito.
Hakbang 3: Ilunsad ang halimbawa ng Program sa pamamagitan ng pagpili ng File-> Mga halimbawa-> Adafruit SSD1306 -> SSD1306_128 * 64_SPI.ino tulad ng ipinakita sa imahe sa ibaba.
Hakbang 4: Sa loob ng halimbawa ng programa sa tuktok ng linya 64 idagdag ang linya na "#define SSD1306_LCDHEIGHT 64" tulad ng ipinakita sa imahe sa ibaba.
Hakbang 5: Ngayon i-upload ang programa at dapat mong makita ang pagpapakita ng OLED na nagpaputok gamit ang default na code ng halimbawa ng Adafruit tulad ng ipinakita sa larawan sa ibaba. Ang buong gumaganang video ay ibinibigay sa katapusan.
Ipinapakita sa iyo ng halimbawang programa ang lahat ng posibleng mga graphic na maaaring ipakita sa OLED screen. Ang code na ito ay dapat sapat para sa iyo upang lumikha ng mga bitmap, gumuhit ng mga linya / bilog / parihaba, maglaro ng mga pixel, ipakita ang char at string na may iba't ibang mga font at laki atbp.
Kung nais mong maunawaan ang Library at ang mga pag-andar nito ng mas mahusay na maaari mong basahin ang karagdagang. Ang bawat junks ng code ay nahahati at ipinaliwanag sa tulong ng mga linya ng komento. Ang kumpletong code ay ibinibigay sa pagtatapos ng Artikulo na ito
Pagpapakita at pag-clear sa screen:
Ang pagsulat sa screen ng OLED ay tulad ng pagsusulat sa isang itim na board, kailangan naming isulat ang mga halaga at pagkatapos ay linisin ito bago ito mapapatungan. Ang mga sumusunod na utos ay ginagamit upang isulat at i-clear ang display
display.display (); // Sumulat upang ipakita ang display.clearDisplay (); // limasin ang display
Nagpapakita ng variable ng Character:
Upang maipakita ang nilalaman sa loob ng isang variable maaaring magamit ang sumusunod na code.
char i = 5; // ang variable upang maipakita ang display.setTextSize (1); // Piliin ang laki ng display ng teksto.setTextColor (WHITE); // para sa monochrome display lamang whit ang posible na display.setCursor (0,0); // 0,0 ay ang tuktok na kaliwang sulok ng display ng OLED screen. Magsulat (i); // Isulat ang variable na ipapakita
Pagguhit ng isang Linya, Circle, Rectange, Triangle:
Kung nais mong magdagdag ng ilang mga simbolo sa iyong display maaari mong gamitin ang sumusunod na code upang gumuhit ng anuman sa mga sumusunod
display.drawLine (display.width () - 1, 0, i, display.ight () - 1, WHITE); // void drawLine (x0, y0, x1, y1, kulay); display.drawRect (i, i, display.width () - 2 * i, display.height () - 2 * i, WHITE); // void drawRect (x0, y0, w, h, color); display.drawTriangle (display.width () / 2, display.ight () / 2-i, display.width () / 2-i, display.height () / 2 + i, display.width () / 2+ i, display.height () / 2 + i, WHITE); // void drawTriangle (x0, y0, x1, y1, x2, y2, kulay); display.drawCircle (display.width () / 2, display.ight () / 2, i, WHITE); // void drawCircle (x0, y0, r, kulay);
Pagguhit ng isang String sa Screen:
Ang sumusunod na tipak ng code ay maaaring magamit o ipakita ang anumang mensahe sa screen sa isang partikular na lugar at laki
display.setTextSize (2); // itakda ang laki ng display ng teksto.setTextColor (WHITE); // display ng setting ng kulay.setCursor (10,0); // Ang string ay magsisimula sa 10,0 (x, y) display.clearDisplay (); // Burahin ang anumang nakaraang pagpapakita sa screen display.println ("Circuit Digest"); // I-print ang string dito sa display na "Circuit Digest". Ipakita (); // ipadala ang teksto sa screen
Nagpapakita ng isang bitmap na imahe:
Ang isang hindi mapagkakatiwalaang bagay na maaaring magawa sa module ng OLED ay maaari itong magamit upang maipakita ang mga bitmap. Ginagamit ang sumusunod na code upang maipakita ang isang bitmap na imahe
static const unsigned char PROGMEM logo16_glcd_bmp = {B00000000, B11000000, B00000001, B11000000, B00000001, B11000000, B00000011, B11100000, B11110011, B11100000, B11111110, B11111000, B01111110, B11111111, B11111, B11111, B11111, B10011 B10100000, B00111111, B11100000, B00111111, B11110000, B01111100, B11110000, B01110000, B01110000, B00000000, B00110000}; display.drawBitmap (XPO], YPOS, bitmap, w, h, WHITE); // void drawBitmap (x, y, * bitmap, w, h, kulay);
Tulad ng nakikita mo, upang maipakita ang isang imahe ang data ng bitmap ay dapat na nakaimbak sa memorya ng programa sa anyo ng direktibong PROMGMEM. Sa madaling salita, kailangan naming turuan ang display ng OLED kung ano ang gagawin sa bawat pixel sa pamamagitan ng pagpasa nito ng isang pagkakasunud-sunod o mga halaga mula sa isang array tulad ng ipinakita sa itaas. Maglalaman ang array na ito ng data ng bitmap ng imahe.
Maaari itong tunog kumplikado ngunit sa tulong ng isang tool sa web napakadali upang i- convert ang isang imahe sa isang kaunting mga halaga ng mapa at mai- load ang mga ito sa array sa itaas.
I-load lamang ang imahe at ayusin ang mga setting upang makuha ang iyong ginustong pag-preview ng imahe. Pagkatapos i-click ang "Bumuo ng Code" kopyahin ang code at i-paste ito sa iyong Array. I-upload ang programa at tapos ka na lahat. Sinubukan kong ipakita ang isang logo ng batman at ito ang naging resulta.
Marami pa ring mga bagay na maaari mong gawin sa mga silid aklatan na ito. Upang malaman ang kumpletong mga posibilidad na bisitahin ang pahina ng Adafruit GFX graphics Primitives.
Inaasahan kong natakbo mo ito at handa nang magpatupad ng isang OLED display sa ilan sa iyong mga proyekto. Kung mayroon kang anumang problema ibahagi ang mga ito sa seksyon ng komento at susubukan ko ang aking makakaya upang maitama ang mga ito.