- OLED-näyttö
- Tarvittavat komponentit
- SPI-nastaliitännät NodeMCU: n ja OLED-näytön välillä
- NodeMCU: n ohjelmointi OLED-liitäntää varten
- Muunna kuva bittikartan arvoiksi
Tässä opetusohjelmassa käsittelemme OLED-näyttöä NodeMCU ESP8266: n kanssa. NodeMCU on avoimen lähdekoodin IoT-alusta, joka sisältää laiteohjelmiston, joka toimii Espressif Systemsin edullisella Wi-Fi-yhteensopivalla ESP8266 Wi-Fi SoC: llä. Siinä on GPIO-nastat muiden oheislaitteiden liittämistä varten ja se tukee sarjaliikennettä SPI-, I2C- ja UART-nastojen avulla. Siinä on myös nastat ADC: lle ja PWM: lle. Olemme aiemmin liittäneet OLED: n muihin mikrokontrollereihin, mukaan lukien ESP-perheen ohjain (ESP32):
- SSD1306 OLED -näytön ja Raspberry Pi: n yhdistäminen
- SSD1306 OLED -näytön ja Arduinon yhdistäminen
- Rakenna älykello yhdistämällä OLED-näyttö Android-puhelimeen Arduinoa käyttämällä
- Internet-kello ESP32: n ja OLED-näytön avulla
Tässä opetusohjelmassa käytämme SPI-protokollaa yksivärisen 7-nastaisen SSD1306 0,96 OLED -näytön liittämiseen NodeMCU: n kanssa ja opimme näyttämään kuvan OLED-näytöllä NodeMCU ESP8266: lla.
OLED-näyttö
Orgaaninen valoa emittoiva diodi (OLED) on eräänlainen valoa emittoiva diodi, jossa orgaanisesta yhdisteestä valmistettu valoa emittoiva kerros lähettää valoa, kun sähkövirtaa syötetään. Tämä kerros sijoitetaan kahden elektrodin väliin. Tätä tekniikkaa käytetään näyttöruuduissa, kuten tietokoneissa, televisioissa, älypuhelimissa jne.. Yksi lisäetu OLED-näyttöjen käytöstä LCD-näytöllä on suurten ja parempien grafiikkojen näyttäminen OLED-näytöillä. Lue lisää OLED-näyttötekniikasta täältä.
Markkinoilla on erilaisia OLED-näyttöjä. Näille näytöille on ominaista väri, nastojen lukumäärä, ohjaimen IC ja näytön koko. Värien perusteella OLED: itä on saatavana yksivärisenä sinisenä, yksivärisenä valkoisena ja kelta / sinisenä. Ja viestinnän perusteella on saatavilla pääasiassa kahden tyyppisiä OLED-malleja - 3pin ja 7pin. 3-nastaista OLED-tekniikkaa voidaan käyttää I2C-tiedonsiirtotilassa ja 7-nastaista OLED-tekniikkaa voidaan käyttää joko SPI- tai I2C-tilassa.
Tässä opetusohjelmassa käytämme “ yksiväristä 7-nastaista SSD1306 0,96 ” OLED-näyttöä, jonka leveys on 128 pikseliä ja pituus 64 pikseliä. Tämä näyttö voi toimia sekä SPI- että I2C-yhteyskäytännöissä. Käytämme SPI-protokollaa tässä opetusohjelmassa. SSD1306 IC on tässä OLED- laitteessa, joka auttaa näyttämään pikselit ruudulla.
Tarvittavat komponentit
- Yksivärinen 7-nastainen SSD1306 0,96 tuuman OLED-näyttö
- SolmuMCU ESP8266
- Mikro-USB-kaapeli
- Leipälauta
- Uros-uros-hyppyjohdot
SPI-nastaliitännät NodeMCU: n ja OLED-näytön välillä
Alla on piirikaavio 7-nastaisen OLED-näytön yhdistämiseksi NodeMCU: n kanssa SPI-sarjaliikenneprotokollaa käytettäessä.
Alla oleva taulukko näyttää yhteydet OLED-näytön ja NodeMCU ESP8266: n välillä. GND-nasta menee NodeMCU GND: lle, VDD-nasta voidaan liittää 3,3 V: een tai 5 V: een, SCK on OLED-näytön kellotappi, joka on kytketty NodeMCU: n SP5-kellon D5: ään. SDA-nasta, joka on MOSI-tappi SPI-liitännän OLED: ssä, menee NodeMCU: n D7: een. RESET-tappi menee kohtaan D3. DC, datakomentotappi on kytketty NodeMCU: n D2: een. Viimeinen tappi on CS menee D8: een, NodeMCU: n siruvalinta.
Ei. |
Oled-näyttö |
SolmuMCU |
1 |
GND |
GND |
2 |
VDD |
3,3 V |
3 |
SCK |
D5 |
4 |
MOSI (SPI) tai SDA (I2C) |
D7 |
5 |
NOLLAA |
D3 |
6 |
DC |
D2 |
7 |
CS |
D8 |
Tässä käytämme ” Adafruit _SSD1306.h” - ja “ Adafruit_GFX.h ” -kirjastoja OLED: n liittämiseen NodeMCU: han. Avaa Arduino IDE ja asenna uusin versio Arduino IDE: stä ( Luonnos> Sisällytä kirjasto> Hallinnoi kirjastoja tai Ctrl + Vaihto_I ).
Koska OLED-näyttötunnuksemme pikselikoko on 128x64, meidän on muutettava Adafruit_SSD1306-otsikkotiedostoa. Avaa Arduino-kirjastot, siirry osoitteeseen Adafruit_SSD1306 ja avaa sen otsikkotiedosto ( Adafruit _SSD1306.h ). Kommentoi rivi " #define SSD1306_128_32 " ja poista komento " #define SSD1306_128_64 ", kuten alla olevassa kuvassa näkyy, ja tallenna sitten tiedosto. Oletusarvoisesti tämän kirjaston mukana tulee "# define SSD1306_128_32 ".
Muuta lopuksi PIN-numerot esimerkissä “ ssd1306_128x64_spi ” Adafruit SSD1306 alla olevan taulukon mukaisesti. Nyt kun suoritat luonnoksen muodostettuasi OLED-näytön oikein NodeMCU: n kanssa, näet Adafruit-logon OLED-näytössä, joka on oletuksena tallennettu kirjastoon. Adafruit-logon jälkeen se näyttää monia muita grafiikoita, kuten viivat, suorakulmiot, kolmio, ympyrät, merkkijonot, numerot, animaatiot ja bittikartan. Tässä Tässä opetusohjelmassa opitaan, miten mitä tahansa kuvaa voidaan näyttää OLED: ssä NodeMCU ESP8266: lla.
NodeMCU: n ohjelmointi OLED-liitäntää varten
Kuten aina täydellinen koodi on lopussa, tässä olemme selittäneet koodin yksityiskohtaisesti.
Käynnistä koodi tuomalla tarvittavat kirjastot. Koska käytämme SPI-protokollaa, tuomme "SPI.h" -kirjaston ja myös "Adafruit_GFX.h" ja "Adafruit_SSD1306.h" OLED-näyttöön.
#sisältää
OLED-koko on 128x64, joten asetamme näytön leveydeksi ja korkeudeksi 128 ja 64. Joten määritä muuttujat NodeMCU: han liitetyille OLED-nastoille SPI-viestintää varten.
#define SCREEN_WIDTH 128 // OLED-näytön leveys pikseleinä #define SCREEN_HEIGHT 64 // OLED-näytön korkeus pikseleinä // Ilmoitus SSD1306-näytölle, joka on liitetty SPI-ohjelmistolla (oletusarvo): #define OLED_MOSI D7 #define OLED_CLK D5 #define OLED_DC D2 #define OLED_CS D8 #define OLED_RESET D3 Adafruit_SSD1306-näyttö (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
Alusta OLED-näyttö käyttämällä SSD1306_SWITCHCAPVCC -toimintoa 3,3 V: n luomiseksi sisäisesti näytön alustamiseksi.
if (! display.begin (SSD1306_SWITCHCAPVCC)) { Serial.println (F ("SSD1306: n allokointi epäonnistui")); varten (;;); // Älä jatka, silmukka ikuisesti }
OLED-näytön näyttö tyhjennetään ennen kuin mitään näytetään soittamalla toimintonäyttö display.clearDisplay (). Asetamme fontin kooksi 2 kutsumalla funktion setTextSize (font-size), ja tekstin värin ja kohdistimen sijainnin käyttämällä setTextColor- ja setCursor- toimintoja . Display.display () -komentoa käytetään tietojen siirtämiseen SSD1306-ohjaimen sisäiseen muistiin. Siirron jälkeen pikseli näkyy näytöllä. Nyt voimme aloittaa tekstin vierittämisen eri tavoin soittamalla näyttöön.startscrollright (x-pos, y-pos) ja display.startscrollleft (x-pos, y-pos) viivetoiminnossa annetulle ajalle. Tekstin vieritys voidaan lopettaa toiminnon display.stopscroll () avulla.
void testscrolltext (void) {display.clearDisplay (); // tyhjennä OLED-näytön näyttöruutu.setTextSize (2); // Piirrä 2X-mittakaavan tekstinäyttö.setTextColor (VALKOINEN); display.setCursor (0, 0); display.println (F ("CIRCUIT")); display.println (F ("DIGEST")); display.display (); // Näytä tekstin alkuviive (100); // Vieritä eri suuntiin keskeyttämällä väli: display.startscrollright (0x00, 0x0F); viive (2000); display.stopscroll (); viive (1000); display.startscrollleft (0x00, 0x0F); viive (2000); display.stopscroll (); viive (1000); display.startscrolldiagright (0x00, 0x07); viive (2000); display.startscrolldiagleft (0x00, 0x07); viive (2000); display.stopscroll (); viive (1000); }
Kutsumme display.drawBitmap () -toiminnon, joka vie 6 parametria (x-koordinaatti, y-koordinaatti, bittikarttaryhmä, leveys, korkeus ja väri) kuvan piirtämiseksi OLED: lle. Koska näytön koko on 128x64, asetamme leveydeksi ja korkeudeksi vastaavasti 128 ja 64. Tässä bittikarttaryhmä sisältää pikselitiedot pikselin piirtämiseksi ruudulle kuvan luomiseksi. Tämä bittikarttataulukko voidaan luoda verkossa, joka selitetään alla, tai on olemassa monia ohjelmistoja, jotka voivat muuntaa kuvan bittikarttaryhmäksi.
const allekirjoittamaton merkki myBitmap PROGMEM = { 0xff, 0xff, 0xff, 0xe0, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff0xx0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xC0, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc7, 0x80, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x01, 0xcx, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFE, 0x0F, 0x03, 0xff, 0xC0, 0x7F, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1e, 0x03, 0x3f, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x3e, 0x03, 0x3f, 0xfc, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x3c, 0x03, 0x7f, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xC0, 0x7c, 0x03, 0xF0, 0x3f, 0x83, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x78, 0x00, 0xc0, 0x0f, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0xf8, 0x00, 0x00, 0x07, 0xe0, 0xff, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xFE, 0x01, 0xF0, 0x00, 0x00, 0x03, 0xf8, 0x7F, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x01, 0xF0, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x03, 0xe0, 0x00, 0x0f, 0x00, 0x7e, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x07, 0xc0, 0x3f, 0xff, 0xff, 0xff 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x7f, 0xf9, 0x80, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xx 0x80, 0xff, 0xf9, 0x80, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0xff, 0xff, 0x80, 0x03, 0xff, 0xff, 0xx 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0xf0, 0x1f, 0x80, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff0, 0xff, 0xff, 0xff0 0x06, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff0xx, 0xff, 0xc0, 0x00, 0x07, 0xc0, 0x00, 0x00, 0x00, 0x00 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x0f, 0x00, 0x80, 0x00, 0x00, 0x01, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x1e, 0x01, 0xe0, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x3c, 0x03, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff , 0x03, 0x3f, 0xff, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xx 0xf8, 0x01, 0xe0, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x01, 0xF0, 0x00, 0x00, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x03, 0xb0, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x03, 0x18, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x03, 0xbc, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff , 0x00, 0xff 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x00, 0xff, 0xff, 0x80, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x1f, 0xff, 0x00, 0x3, 0x00 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFE, 0x00, 0x07, 0xfc, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x03, 0xf0, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe0, 0x01, 0xc0, 0x00, 0x00, 0x0f, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x03, 0xff 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0xff, 0xe0, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xffc, 0x00, 0x3f, 0xe0, 0x00, 0x1f, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFE, 0x00, 0x0E, 0x30, 0x00, 0x7F, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x07, 0x70, 0x00, 0xff, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x03, 0xe0, 0x1b, 0xfc, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x01, 0xc0, 0x7f, 0xf0, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 0xff 0x7f, 0xc0, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x67, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x00, 0xff, 0x00, 0x1f, 0xff 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xFE, 0x00, 0x00, 0x7e, 0x00, 0x7F, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x3c, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xC0, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0 xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }; display.drawBitmap (35, 0, myBitmap, 128, 64, MUSTA, VALKOINEN); display.display ();
Muunna kuva bittikartan arvoiksi
Online-bittikartta voidaan luoda osoitteesta http://javl.github.io/image2cpp/. Lataa kuvatiedosto, jonka haluat näyttää OLED: llä, ja aseta koolle 128x64. Esikatselukuva näytetään ja sitten bittikarttaryhmä luodaan.
Kuvakaappausten alla näkyy prosessi minkä tahansa kuvan bittikartta-arvon luomiseksi.
Lataa lopuksi koko koodi NodeMCU ESP8266: een, ja kuva näkyy OLED-näytöllä. Tässä näytetään CircuitDigest-logo OLED-näytöllä.