Turinys:

ESP32 su ekranu „Oled“- pažangos juosta: 6 žingsniai
ESP32 su ekranu „Oled“- pažangos juosta: 6 žingsniai

Video: ESP32 su ekranu „Oled“- pažangos juosta: 6 žingsniai

Video: ESP32 su ekranu „Oled“- pažangos juosta: 6 žingsniai
Video: Arduino ile Oled Ekrana Resim Yansıtma Nasıl Yapılır? 2024, Lapkritis
Anonim
Image
Image
„Wemos Lolin ESP32 OLED“
„Wemos Lolin ESP32 OLED“

ESP32, apie kurį šiandien kalbėsime, jau yra su integruotu „Display Oled“. Ši funkcija labai palengvina mūsų gyvenimą, nes galime susidaryti įspūdį apie rodomo kintamojo vertę. Jums net nereikia žiūrėti į derinimo langą. Be to, be kitų dalykų, galite surinkti vaizdus ir piešti našumo diagramas. Dėl šių privalumų aš laikau šį modelį fantastišku produktu ir šiandien jį programuosime naudodami „Arduino IDE“.

Taigi, šiame vaizdo įraše užprogramuosime progreso juostą. Svarbu prisiminti, kad jei jūsų ESP32 neturi ekrano, galite jį nusipirkti atskirai. Be to, jei niekada neužprogramavote ESP32, siūlau pažiūrėti šį vaizdo įrašą: VIDEO ĮVADAS Į ESP32, kuriame išsamiau aptariama ši tema.

1 žingsnis: biblioteka

Norėdami naudoti „OLED“ekraną, turime sukonfigūruoti biblioteką „Arduino IDE“. Norėdami tai padaryti, atsisiųskite biblioteką per nuorodą.

Išpakuokite failą ir įklijuokite jį į „Arduino IDE“bibliotekų aplanką.

C:/ProgramFiles (x86)/Arduino/bibliotekos

2 žingsnis: „Wemos Lolin ESP32 OLED“

Wemos Lolin yra šios ESP pavadinimas. Paveikslėlyje juoda dalis yra ekranas, o šalia įrenginio - visa pinout. Kaip parodyta, yra keletas IO, leidžiančių įjungti ir išjungti įvairius elementus. Be to, šis modelis turi naujausios kartos „WiFi“ir „Bluetooth“.

3 žingsnis: pavyzdys

Pavyzdys
Pavyzdys

Vaizdo įraše galite pamatyti mūsų paruoštą projektą ir tai, kaip naudojant „OLED“ekraną rodyti progreso juostą, valdomą potenciometru.

4 žingsnis: Surinkimas

Surinkimas
Surinkimas

Mūsų surinkimui naudojau 10 k potenciometrą ir įjungiau žymeklio GPIO25. Mes taip pat turime 3v3 ir GND, kaip matote paveikslėlyje žemiau. Maitinimas ateis iš paties USB.

5 žingsnis: kodas

Pirmiausia pridedame biblioteką „SSD1306.h“. Tokiu būdu mes pateksime į esamą ekraną. Po to sukuriame SSD1306 tipo rodymo objektą, kuris bus atsakingas už „OLED“ekrane rodomo turinio valdymą.

#include "SSD1306.h" // slapyvardis #include "SSD1306Wire.h" // objeto controlador do display de led /* 0x3c: é um identifador único para comunicação do display pino 5 e 4 são os de comunicação (SDA, SDC) */ SSD1306 ekranas (0x3c, 5, 4); // pino que ligamos o potenometro #define PINO_POTENCIOMETRO 25 // utilizado para fazer o contador de porcentagem int contador;

Sąranka

Funkcijoje setup () inicijuosime rodymo objektą, kad galėtume valdyti, kas bus rodoma. Per šį objektą taip pat sukonfigūruosime teksto, kuris bus rodomas, rašymo šaltinį. Ir galiausiai nustatome kaištį (konkrečiai, kaištį, kuriame pasukome potenciometrą) į ĮVESTI, kad nuskaitytumėte vertę.

void setup () {Serial.begin (115200); Serial.println (); Serial.println (); // Inicializa o objeto que controlará o que será exibido na tela screen.init (); // gira o display 180º (deixa de ponta cabeça) // display.flipScreenVertically (); // konfigūruoti „ArialMT_Plain_10“ekraną. setFont (ArialMT_Plain_10); // configura o pino para fazer a leitura do potenciômetro. pinMode (PINO_POTENCIOMETRO, INPUT); }

Kilpa

Funkcijoje loop () mes perskaitysime esamą potenciometro reikšmę. Galime pastebėti, kad netrukus perskaitę vertę naudojame „žemėlapio“funkciją, nes skaitymo vertė yra per didelė, kad būtų galima įrašyti eigos juostą, todėl susiejame vertę, kuri yra nuo 0 iki 100.

void loop () {// leitura do valor do potenometro int valor = analogRead (PINO_POTENCIOMETRO); //Serial.println(valor); // mapeando o valor do potenciometro para o valor da barra de progressso // potenometro faz a leitura do valor no intervalo de 0 a 4095 // a barra de progresso espera um valor entre 0 e 100 contador = žemėlapis (valor, 0, 4095), 0, 100); // limpa todo o display, apaga o contúdo da tela screen.clear (); // ++ skaitiklis; // skaitiklis> 100? skaitiklis = 0: skaitiklis = skaitiklis; // desenha a progress bar drawProgressBar (); // exibe na tela o que foi configurado até então. ekranas.display (); vėlavimas (10); }

Funkcijoje „drawProgress ()“naudosime iš potenciometro nuskaitytą reikšmę, kuri išsaugoma kintamajame „percProgress“, kad nustatytume eigos juostą. Mes taip pat įdėsime tekstą tiesiai virš pažangos juostos, nurodydami dabartinį procentą.

// função para desenhar a progress bar no displayvoid drawProgressBar () {Serial.print (">>"); Serial.println (kontadorė); // desenha progreso juosta / * * drawProgressBar (x, y, plotis, aukštis, vertė); parametrai (p): p1: x coordenada X no plano cartesiano p2: y coordenada Y no plano cartesiano p3: pločio apskaičiavimas plius p4: aukštis al bar da de progresso p5: vertė valor que a barra de progressso deve assumir */ screen.drawProgressBar (10, 32, 100, 10, kontador); // configura o alinhamento do texto que será escrito // nesse caso alinharemos o texto ao centro screen.setTextAlignment (TEXT_ALIGN_CENTER); // escreve o texto de porcentagem / * * drawString (x, y, text); parametrai (p): p1: x coordenada X no plano cartesiano p2: y coordenada Y no plano cartesiano p3: string texto que será exibido */ screen.drawString (64, 15, String (contador) + "%"); // se o contador está em zero, suveskite eilutę "valor mínimo", jei (contador == 0) {screen.drawString (64, 45, "Valor mínimo"); } // se o contador está em 100, ištraukite eilutę "valor máximo" else if (contador == 100) {screen.drawString (64, 45, "Valor máximo"); }}

6 žingsnis: kai kurios kitos įdomios funkcijos

Ekranas

// uždeda ekraną aukštyn kojom

void flipScreenVertically ();

Piešimas

// piešia vieną pikselį iš ekrano

void setPixel (int16_t x, int16_t y);

// nubrėžti liniją

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

// piešti stačiakampį

void drawRect (int16_t x, int16_t y, int16_t plotis, int16_t aukštis);

// nupiešk apskritimą

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

// užpildyti ratą

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

// nubrėžkite horizontalią liniją

void drawHorizontalLine (int16_t x, int16_t y, int16_t ilgis);

// nubrėžkite vertikalią liniją

void drawVerticalLine (int16_t x, int16_t y, int16_t ilgis);

Tekstas

// nustato teksto lygiavimą, kuris turi būti parašytas

// TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER, TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER_BOTH

void setTextAlignment (OLEDDISPLAY_TEXT_ALIGNMENT textAlignment);

Rekomenduojamas: