Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
To je še en videoposnetek o uvodu v ESP32 LoRa. Tokrat bomo govorili posebej o grafičnem zaslonu (128 x 64 slikovnih pik). Knjižnico SSD1306 bomo uporabili za prikaz informacij na tem zaslonu OLED in predstavitev primera animacije z uporabo slik XBM.
1. korak: Uporabljeni viri
1 Heltec WiFi LoRa 32
Protoboard
2. korak: Zaslon
Zaslon, ki se uporablja na razvojni plošči, je OLED 0,96 palca.
Ima velikost 128 x 64 in je enobarvna.
Ima I2C komunikacijo in je povezan z ESP32 prek 3 žic:
SDA na GPIO4 (za podatke)
SCL na GPIO15 (za uro)
RST na GPIO16 (za ponastavitev in zagon zaslona)
3. korak: Knjižnica SSD1306
To je mogoče najti skupaj z naborom knjižnic, ki jih ponuja Heltec-Aaron-Lee.
Ima več funkcij za pisanje nizov, risanje črt, pravokotnikov, krogov in prikaz slik.
github.com/Heltec-Aaron-Lee/WiFi_Kit_series
4. korak: Datoteke animacije in XBM
Za prikaz animacije bomo uporabili funkcijo knjižnice drawXbm.
Format slike XBM je sestavljen iz niza znakov, kjer vsak element tekstualno predstavlja niz enobarvnih slikovnih pik (vsak po 1 bit) skozi šestnajstiško vrednost. Ti so enakovredni enemu bajtu.
Ker se za predstavitev enega bajta uporablja več znakov, so te datoteke običajno večje od tistih iz trenutno sprejetih formatov. Prednost je, da jih je mogoče sestaviti neposredno brez potrebe po predhodnem zdravljenju.
Poleg matrike sta vključeni še dve nastavitvi, ki določata velikost slike.
Za izdelavo animacije potrebujemo slike, ki bodo tvorile okvirje.
Za delo lahko uporabimo katero koli programsko opremo za urejanje slik. Edini previdnostni ukrepi, ki jih moramo upoštevati, so, da najprej ohranimo velikost združljivo z zaslonom in uporabimo enobarvne datoteke.
Za ustvarjanje datotek jih lahko narišemo ali uvozimo slike. Tu smo se odločili za urejanje barvne slike s pomočjo PaintBrush in narisali vsak okvir
Izvirna slika - 960 x 707 slikovnih pik - format PNG
Naslednji korak je, da ga naredite enobarvnega, tako da ga shranite kot enobarvno bitno sliko.
Nato spremenimo velikost na velikost, ki je združljiva z zaslonom.
Posebno pozornost posvetite merskim enotam. V tem primeru smo sliko prilagodili tako, da je zasedla celotno višino zaslona (navpično = 64 slikovnih pik).
S sliko v pravilni velikosti jo bomo uredili in oblikovali okvirje. Tu izbrišemo vsak lok ravni signala in jih shranimo kot ustrezne okvirje.
Zdaj moramo pretvoriti datoteke BMP v format XBM.
To pretvorbo lahko izvedete na več možnostih programske opreme. Za možnost urejevalnika smo izbrali tudi GIMP.
V našem primeru smo za ustvarjanje in urejanje datotek uporabili PaintBrush. Vsak od teh procesov pa bi lahko izvedli v Gimpu (ali katerem koli drugem urejevalniku).
Za pretvorbo najprej odpremo datoteko.
Ko je slika odprta, lahko izberemo Datoteka => Izvozi kot …
V oknu Export Image moramo spremeniti ciljno razširitev datoteke za XBM. Gimp bo zadolžen za prepoznavanje želene oblike in predstavitev več možnosti …
Pri izvozu bo Gimp predstavil druge možnosti. Privzete vrednosti lahko pustimo.
Po pretvorbi vseh datotek bomo imeli štiri datoteke XBM, po eno za vsak okvir.
Zdaj jih kopirajmo v mapo izvorne kode in jih preimenujmo tako, da njihove razširitve spremenimo v.h.
5. korak: Izhod iz datotek XBM
Datoteke XBM lahko odpremo v katerem koli urejevalniku besedil, kjer bomo videli matriko slike in podatke o velikosti slike, ki sta bili že določeni.
6. korak: izvorna koda
Izvorna koda: Izjave
Vključili bomo potrebne knjižnice in slikovne datoteke. Določimo položaje slike in prehodni interval. Opozorimo tudi na zatiče OLED, priključene na ESP32. Na koncu ustvarimo in prilagodimo objekt Display.
// Vključi kot potrebo po bibliotekah #include #include "SSD1306.h" // Vključi arquivos de imagem #include "frame1.h" #include "frame2.h" #include "frame3.h" #include "frame4.h" // opredeljujemo, da je imagem in intervalo de transição #define posX 21 #define posY 0 #define 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 za krmiljenje programske opreme SSD1306 (0x3c, SDA, SCL, RST); // Cria e ajusta o Objeto display
Izvorna koda: Setup ()
Inicializirajte zaslon in zaslon obrnite navpično. Ukrep ni obvezen.
void setup () {display.init (); // inicia o display display.flipScreenVertical (); // obrni navpično telo (opcijsko)}
Izvorna koda: Loop ()
Prva stvar v zanki je, da počistite zaslon. Okvir 1 naložimo v medpomnilnik z uporabo začetnih položajev posX in posY. Velikost slike sporočamo z okvirji frame_width in frame1_height ter imenom matrike, ki vsebuje bite slike. Na zaslonu prikažemo medpomnilnik in počakamo na interval, preden prikažemo naslednji okvir.
void loop () {display.clear (); // limpa tela // carrega para o buffer o frame 1 // usando as posições iniciais posX e posY // informacije o tamanho da imagem com frame1_width e frame1_height // informacije o imenu da matriz que contem os bits da imagem, no caso frame1_bits display.drawXbm (posX, posY, frame1_width, frame1_height, frame1_bits); // mostra o medpomnilniku brez prikaza display.display (); // aguarda um intervalo antes de mostrar o próximo frame delay (intervalo);
Postopek ponovimo za vse ostale okvirje.
// Ponovi o postopku za izhod iz okvirjev display.clear (); display.drawXbm (posX, posY, frame2_width, frame2_height, frame2_bits); display.display (); zamuda (intervalo); display.clear (); display.drawXbm (posX, posY, frame3_width, frame3_height, frame3_bits); display.display (); zamuda (intervalo); display.clear (); display.drawXbm (posX, posY, frame4_width, frame4_height, frame4_bits); display.display (); zamuda (intervalo); }
7. korak: Izvedite nalaganje kode
Ko je IDE odprt, odprite datoteko z izvorno kodo tako, da dvokliknete datoteko.ino ali odprete meni Datoteka.
Ko je Heltec priključen na USB, izberite meni Orodja => Kartica: "Heltec_WIFI_LoRa_32"
Še vedno v meniju Orodja izberite vrata COM, na katera je priključen Heltec.
Kliknite gumb NALOŽI…
… In počakajte na zaključek.
8. korak: Datoteke
Prenesite datoteke:
JAZ NE