Përmbajtje:

ESP32 Me Ekran Oled - Shiriti i Progresit: 6 Hapa
ESP32 Me Ekran Oled - Shiriti i Progresit: 6 Hapa

Video: ESP32 Me Ekran Oled - Shiriti i Progresit: 6 Hapa

Video: ESP32 Me Ekran Oled - Shiriti i Progresit: 6 Hapa
Video: Lilygo T-Display S3 Amoled. Модуль на ESP32 пожалуй с лучшим дисплеем для самоделок. 2024, Nëntor
Anonim
Image
Image
Wemos Lolin ESP32 OLED
Wemos Lolin ESP32 OLED

ESP32 për të cilin do të flasim sot është ai që tashmë vjen me Display Oled të integruar. Ky funksion e bën jetën tonë shumë më të lehtë, sepse mund të kemi një përshtypje në lidhje me vlerën e ndryshores që shfaqet. Ju as nuk duhet të shikoni një dritare të korrigjimit. Gjithashtu, mund të mblidhni përfaqësime dhe të vizatoni tabela të performancës, ndër të tjera. Për shkak të këtyre përfitimeve, unë e konsideroj këtë model një produkt fantastik, dhe ne do ta programojmë atë sot duke përdorur Arduino IDE.

Pra, në këtë video ne do të programojmë një shirit përparimi. Importantshtë e rëndësishme të mbani mend se nëse ekrani juaj nuk e ka ekranin të ndezur, është e mundur ta blini veçmas. Gjithashtu, nëse nuk keni programuar kurrë një ESP32, ju sugjeroj të shikoni këtë video: HYRJE VIDEO P ER ESP32, e cila trajton temën në më shumë detaje.

Hapi 1: Biblioteka

Për të përdorur ekranin me ngjyrë, duhet të konfigurojmë bibliotekën në Arduino IDE. Për ta bërë këtë, shkarkoni bibliotekën përmes lidhjes.

Zbërtheni skedarin dhe ngjiteni në dosjen e bibliotekave të Arduino IDE.

C:/ProgramFiles (x86)/Arduino/biblioteka

Hapi 2: Wemos Lolin ESP32 OLED

Wemos Lolin është emri i këtij ESP. Në imazh, pjesa e zezë është ekrani dhe, pranë pajisjes, ne shfaqim të gjithë pinout. Siç tregohet, ka disa IO që na lejojnë të ndezim dhe fikim elementë të ndryshëm. Përveç kësaj, ky model ka brezin e fundit WiFi dhe Bluetooth.

Hapi 3: Shembull

Shembull
Shembull

Në video, ju mund të shihni projektin tonë të gatshëm dhe si të përdorni ekranin e lyer për të shfaqur një shirit përparimi të kontrolluar nga një potenciometër.

Hapi 4: Asambleja

Kuvendi
Kuvendi

Për montimin tonë kam përdorur një potenciometër prej 10k, dhe kam ndezur GPIO25 të kursorit. Ne gjithashtu kemi 3v3 dhe GND, siç mund ta shihni në figurën më poshtë. Fuqia do të vijë nga vetë USB.

Hapi 5: Kodi

Së pari, ne shtojmë bibliotekën "SSD1306.h". Me këtë, ne do të hyjmë në ekranin e lyer. Pas kësaj, ne krijojmë një objekt shfaqjeje të llojit SSD1306 që do të jetë përgjegjës për kontrollin e përmbajtjes së treguar në ekranin e lyer.

#include "SSD1306.h" // alias for #include "SSD1306Wire.h" // objekto controlador do display in led /* 0x3c: um um identificador único para comunicação do display pino 5 e 4 são os de comunicação (SDA, SDC) */ Ekran SSD1306 (0x3c, 5, 4); // pino que ligamos o potenciometro #define PINO_POTENCIOMETRO 25 // përdorim për fazën e kontaminimit të porcentagem int contador;

Konfigurimi

Në funksionin setup (), ne do të inicializojmë objektin tonë të shfaqjes në mënyrë që të mund të kontrollojmë atë që do të shfaqet. Përmes këtij objekti, ne gjithashtu do të konfigurojmë burimin e shkrimit për tekstet që do të shfaqen. Dhe, së fundi, ne vendosëm kunjin (konkretisht, kunjin ku kemi kthyer potenciometrin) në INPUT për të lexuar vlerën.

void setup () {Serial.begin (115200); Serial.println (); Serial.println (); // Inicializa ose objeto que controlará o que será exibido na tela screen.init (); // gira o ekran 180º (deixa de ponta cabeça) // display.flipScreenVertical (); // konfiguroni një bazë të eskritës "ArialMT_Plain_10" screen.setFont (ArialMT_Plain_10); // konfigurimi i pino para fazer a leitura do potenciômetro. pinMode (PINO_POTENCIOMETRO, HYRJE); }

Lak

Në funksionin loop (), ne do të lexojmë vlerën aktuale të potenciometrit. Ne mund të vërejmë se ne po përdorim funksionin "hartë" menjëherë pas leximit të vlerës, sepse vlera e lexuar është shumë e lartë për t'u vendosur në një shirit përparimi, kështu që ne do ta hartojmë vlerën që të jetë brenda intervalit nga 0 në 100.

void loop () {// leitura do valor do potenciometro int valor = analogRead (PINO_POTENCIOMETRO); //Serial.println (vlera); // mapeando o valor do potenciometro para o valor da barra de progresso // potenciometro faz a leitura do valor no intervalo de 0 a 4095 // a barra de progresso espera um valor entre 0 e 100 contador = hartë (trimëri, 0, 4095, 0, 100); // limpa todo o display, apaga o contúdo da tela screen.clear (); // ++ sportel; // kundër> 100? counter = 0: counter = counter; // desenha një bar përparimi drawProgressBar (); // exibe na tela o que foi configurado até então. ekran.shfaq (); vonesa (10); }

Në funksionin "drawProgress ()", ne do të përdorim vlerën e lexuar nga potenciometri që ruhet në ndryshoren "percProgress" për ta vendosur në shiritin e përparimit. Ne gjithashtu do të vendosim një tekst pak mbi shiritin e progresit, duke treguar përqindjen aktuale.

// função para desenhar një progres bar pa shfaqje të shmangshme drawProgressBar () {Serial.print (">>"); Serial.println (contador); // desenha një shirit përparimi / * * drawProgressBar (x, y, gjerësia, lartësia, vlera); parametros (p): p1: x koordinatat X pa plan kartesiano p2: y koordinatat Y pa plan kartesiano p3: gjerësia e komplimentit të barra de progresso p4: lartësia altura da barra de progresso p5: vlera valor que a barra de progresso deve suppir */ screen.drawProgressBar (10, 32, 100, 10, contador); // konfigurimi i alinhamento -s për të bërë tekstin escrito // megjithatë mund të gjeni alinharemos ose tekst në qendër të ekranit.setTextAlignment (TEXT_ALIGN_CENTER); // escreve o texto de porcentagem / * * drawString (x, y, tekst); parametros (p): p1: x koordinata X pa plan kartesiano p2: y koordinatë Y pa plan kartesiano p3: tekst teksti që shërben për ekzibido */ screen.drawString (64, 15, String (contador) + "%"); // se o contador është zero, ruaj një varg "valor mínimo" nëse (contador == 0) {screen.drawString (64, 45, "Valor mínimo"); } // se o contador está em 100, ruaj një varg "valor máximo" tjetër nëse (contador == 100) {screen.drawString (64, 45, "Valor máximo"); }}

Hapi 6: Disa funksione të tjera interesante

Shfaq

// e vendos ekranin me kokë poshtë

void flipScreenVertical ();

Vizatim

// tërheq një piksel të vetëm nga ekrani

void setPixel (int16_t x, int16_t y);

// vizatoni një vijë

void drawLine (int16_t x0, int16_t y0, int16_t x1, int16_t y1);

// vizatoni një drejtkëndësh

void drawRect (int16_t x, int16_t y, int16_t gjerësi, int16_t lartësi);

// vizatoni një rreth

void drawCircle (int16_t x, int16_t y, rreze int16_t);

// plotësoni një rreth

void fillCircle (int16_t x, int16_t y, rreze int16_t);

// vizatoni një vijë horizontale

void drawHorizontalLine (int16_t x, int16_t y, int16_t gjatësi);

// vizatoni një vijë vertikale

void drawVerticalLine (int16_t x, int16_t y, int16_t gjatësi);

Teksti

// vendos rreshtimin e tekstit për tu shkruar

// TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER, TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER_BOTH

void setTextAlignment (OLEDDISPLAY_TEXT_ALIGNMENT tekstAlignment);

Recommended: