Obsah:
- Krok 1: Použité zdroje
- Krok 2: Displej
- Krok 3: Knižnica SSD1306
- Krok 4: Animácia a súbory XBM
- Krok 5: Ukončenie súborov XBM
- Krok 6: Zdrojový kód
- Krok 7: Vykonanie načítania kódu
- Krok 8: Súbory
Video: Úvod OLP displej ESP32 Lora: 8 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:59
Toto je ďalšie video týkajúce sa úvodu do ESP32 LoRa. Dnes budeme hovoriť konkrétne o grafickom displeji (128 x 64 pixelov). Na zobrazenie informácií na tomto OLED displeji použijeme knižnicu SSD1306 a uvedieme príklad animácie pomocou obrázkov XBM.
Krok 1: Použité zdroje
1 Heltec WiFi LoRa 32
Protoboard
Krok 2: Displej
Displej použitý na vývojovej doske je OLED 0,96 palca.
Má 128 x 64 a je monochromatický.
Má komunikáciu I2C a je pripojený k ESP32 pomocou troch káblov:
SDA na GPIO4 (pre dáta)
SCL na GPIO15 (pre hodiny)
RST na GPIO16 (pre reset a spustenie displeja)
Krok 3: Knižnica SSD1306
Nájdete ho spolu so sadou knižníc, ktoré poskytuje Heltec-Aaron-Lee.
Má niekoľko funkcií na písanie reťazcov, kreslenie čiar, obdĺžnikov, kruhov a zobrazovanie obrázkov.
github.com/Heltec-Aaron-Lee/WiFi_Kit_series
Krok 4: Animácia a súbory XBM
Na zobrazenie animácie použijeme funkciu drawXbm knižnice.
Formát obrazu XBM pozostáva z radu znakov, kde každý prvok textovo predstavuje množinu monochromatických pixelov (každý 1 bit) prostredníctvom hexadecimálnej hodnoty. Tieto sú ekvivalentné jednému bajtu.
Pretože na zobrazenie jedného bajtu je použitých viac znakov, tieto súbory bývajú väčšie ako súbory z aktuálne prijatých formátov. Výhodou je, že sa dajú zostaviť priamo bez predchádzajúceho ošetrenia.
Okrem poľa sú zahrnuté aj dve nastavenia, ktoré určujú veľkosť obrázka.
Na zostavenie animácie potrebujeme obrázky, ktoré budú tvoriť rámce.
Na prácu môžeme použiť akýkoľvek softvér na úpravu obrázkov. Jediné preventívne opatrenie, ktoré by sme mali urobiť, je najskôr udržať veľkosť kompatibilnú s displejom a používať monochromatické súbory.
Na vygenerovanie súborov ich môžeme nakresliť alebo importovať obrázky. Tu sme sa rozhodli upraviť farebný obrázok pomocou PaintBrush a nakreslili sme každý z rámov
Pôvodný obrázok - 960 x 707 pixelov - formát PNG
Ďalším krokom je, aby bol monochromatický uložením ako monochromatická bitová mapa.
Potom zmeníme veľkosť na veľkosť kompatibilnú s displejom.
Osobitnú pozornosť venujte merným jednotkám. V tomto prípade sme upravili obrázok tak, aby zaberal celú výšku displeja (vertikálne = 64 pixelov).
Keď bude obrázok v správnej veľkosti, upravíme ho tak, aby tvoril rámy. Tu vymažeme každý oblúk úrovne signálu a uložíme ich ako zodpovedajúce rámce.
Teraz musíme previesť súbory BMP do formátu XBM.
Túto konverziu môže vykonať niekoľko softvérových možností. Ako možnosť editora sme tiež vybrali GIMP.
V našom prípade sme na generovanie a úpravu súborov použili PaintBrush. Každý z týchto procesov však mohol byť vykonaný v Gimpe (alebo v inom editore).
Na konverziu najskôr otvoríme súbor.
Keď je obrázok otvorený, môžeme vybrať Súbor => Exportovať ako …
V okne Exportovať obrázok musíme zmeniť cieľovú príponu súboru pre XBM. Gimp bude mať na starosti identifikáciu požadovaného formátu a prezentáciu ďalších možností …
Pri exporte vám Gimp predstaví ďalšie možnosti. Predvolené hodnoty môžeme nechať.
Po konverzii všetkých súborov budeme mať štyri súbory XBM, jeden pre každý rámec.
Teraz ich skopírujeme do priečinka zdrojového kódu a premenujeme ich tak, že zmeníme ich rozšírenia na.h.
Krok 5: Ukončenie súborov XBM
Súbory XBM môžeme otvoriť v ľubovoľnom textovom editore, kde uvidíme informácie o matici a veľkosti obrázka, ktoré už boli definované.
Krok 6: Zdrojový kód
Zdrojový kód: Vyhlásenia
Zahrneme potrebné knižnice a tiež obrazové súbory. Definujeme polohy obrazu a prechodový interval. Namierime tiež na piny OLED pripojené k ESP32. Nakoniec vytvoríme a upravíme objekt Display.
// Incluindo as bibliotecas nutárias #include #include "SSD1306.h" // Incluindo os arquivos de image #include "frame1.h" #include "frame2.h" #include "frame3.h" #include "frame4.h" // definícia snímok a prechodov medzi prenosmi #definovať posX 21 #definovať posY 0 #definovať intervalo 500 // Pinos do OLED estão conctados ao ESP32: I2C // OLED_SDA - GPIO4 // OLED_SCL - GPIO15 // OLED_RST - - GPIO16 #define SDA 4 #define SCL 15 #define RST 16 // O RST vyvinie sériové ovládanie softvérového displeja SSD1306 (0x3c, SDA, SCL, RST); // Cria e ajusta o Objeto display
Zdrojový kód: Nastavenie ()
Inicializujte zobrazenie a vertikálne prevráťte obrazovku. Akcia je voliteľná.
void setup () {display.init (); // inicia o zobrazenie display.flipScreenVertically (); // inverte verticalmente a tela (opcional)}
Zdrojový kód: Loop ()
Prvá vec, ktorú musíte urobiť v slučke, je vyčistiť obrazovku. Načítame rámec 1 do vyrovnávacej pamäte pomocou počiatočných polôh posX a posY. O veľkosti obrázka informujeme pomocou parametra frame1_width a frame1_height a názvu poľa obsahujúceho bity obrázku. Vyrovnávaciu pamäť zobrazíme na displeji a pred ďalším rámcom počkáme určitý interval.
void loop () {display.clear (); // limpa tela // carrega para o buffer o frame 1 // usando as posições initiais posX e posY // informa o tamanho da imagem com frame1_width e frame1_height // informa o nome da matriz que uvaž os bits da imagem, no caso frame1_bits display.drawXbm (posX, posY, frame1_width, frame1_height, frame1_bits); // mostra o buffer no display display.display (); // oneskorenie medzi oneskoreniami rámca alebo oneskorením rámca (intervalo);
Tento postup opakujeme pre všetky ostatné snímky.
// repete o proces para todos os outros frames display.clear (); display.drawXbm (posX, posY, frame2_width, frame2_height, frame2_bits); display.display (); oneskorenie (intervalo); display.clear (); display.drawXbm (posX, posY, frame3_width, frame3_height, frame3_bits); display.display (); oneskorenie (intervalo); display.clear (); display.drawXbm (posX, posY, frame4_width, frame4_height, frame4_bits); display.display (); oneskorenie (intervalo); }
Krok 7: Vykonanie načítania kódu
Keď je IDE otvorené, otvorte súbor so zdrojovým kódom dvojitým kliknutím na súbor.ino alebo v ponuke Súbor.
Keď je Heltec pripojený k USB, zvoľte menu Nástroje => Karta: „Heltec_WIFI_LoRa_32“
Stále v ponuke Nástroje vyberte port COM, ku ktorému je pripojený Heltec.
Kliknite na tlačidlo NAHRAŤ …
… A počkajte na záver.
Krok 8: Súbory
Stiahnite si súbory:
INO
Odporúča:
Používajte jeden displej a ponúkajte 4 -ciferný 8886 displej Con Wemos ESP8266 Arduino NodeMCU: 6 krokov
Používame jeden veľký displej so 4 ciframi 8886 s procesorom ESP8266 Arduino NodeMCU: viac ako jedna jednoduchá verzia 8886 displeja, ktorá má jednu noc, jednu veľkú D1 - potrebujem pre Arduino alebo jeden NodeMCU o kvalitných mikrokontroléroch môžete informovať o tom, ako postupovať
TTGO (farebný) displej s mikropythonom (TTGO T-displej): 6 krokov
TTGO (farebný) displej s mikropythonom (TTGO T-displej): TTGO T-Display je doska založená na ESP32, ktorá obsahuje 1,14 palcový farebný displej. Dosku je možné kúpiť za cenu nižšiu ako 7 $ (vrátane poštovného, ceny, ktorú môžete vidieť na BangGood). Je to neuveriteľná cena za ESP32 vrátane displeja.
LCD displej I2C / IIC - Použite SPI LCD na I2C LCD displej pomocou modulu SPI až IIC s Arduino: 5 krokov
LCD displej I2C / IIC | Použite SPI LCD na I2C LCD displej pomocou modulu SPI až IIC s Arduino: Ahoj, pretože normálny SPI LCD 1602 má príliš veľa káblov na pripojenie, takže je veľmi ťažké prepojiť ho s arduino, ale na trhu je k dispozícii jeden modul, ktorý môže preveďte displej SPI na displej IIC, takže potom potrebujete pripojiť iba 4 vodiče
LCD displej I2C / IIC - Premeňte SPI LCD na I2C LCD displej: 5 krokov
LCD displej I2C / IIC | Premeňte SPI LCD na I2C LCD displej: používanie spi LCD displeja vyžaduje príliš veľa pripojení, čo je skutočne ťažké. Našiel som modul, ktorý dokáže previesť i2c LCD na spi LCD, takže môžeme začať
Výškomer Arduino pomocou OLP BMP a SPI alebo I2C: 5 krokov
Výškomer Arduino využívajúci BMP a SPI alebo I2C OLED: Dlho som hľadal výškomer a teplotu pomocou jedného senzora a zobrazoval ho na OLED na báze SPI. Keďže som nič presné nenašiel, napadlo ma, že by som si postavil vlastné pomocou knižnice U8glib. V youtubu je jeden návod