Indholdsfortegnelse:

ESP32 With Display Oled - Statuslinje: 6 trin
ESP32 With Display Oled - Statuslinje: 6 trin

Video: ESP32 With Display Oled - Statuslinje: 6 trin

Video: ESP32 With Display Oled - Statuslinje: 6 trin
Video: Изучите Arduino за 30 минут: примеры и проекты 2024, November
Anonim
Image
Image
Wemos Lolin ESP32 OLED
Wemos Lolin ESP32 OLED

Den ESP32, vi skal tale om i dag, er en, der allerede leveres med Display Oled indbygget. Denne funktion gør vores liv meget lettere, fordi vi kan have et indtryk af værdien af den variabel, der vises. Du behøver ikke engang se på et fejlfindingsvindue. Du kan også sammensætte repræsentationer og tegne præstationsdiagrammer, blandt andet. På grund af disse fordele betragter jeg denne model som et fantastisk produkt, og vi programmerer den i dag ved hjælp af Arduino IDE.

Så i denne video programmerer vi en statuslinje. Det er vigtigt at huske, at hvis din ESP32 ikke har displayet oled, er det muligt at købe det separat. Hvis du aldrig har programmeret en ESP32, foreslår jeg også, at du ser denne video: VIDEO INTRODUCTION TO ESP32, der omhandler emnet mere detaljeret.

Trin 1: Bibliotek

For at bruge oled -displayet skal vi konfigurere biblioteket i Arduino IDE. For at gøre dette skal du downloade biblioteket via linket.

Pak filen ud, og indsæt den i biblioteksmappen i Arduino IDE.

C:/ProgramFiles (x86)/Arduino/biblioteker

Trin 2: Wemos Lolin ESP32 OLED

Wemos Lolin er navnet på denne ESP. På billedet er den sorte del displayet, og ved siden af enheden viser vi hele pinout. Som vist er der flere IO'er, der giver os mulighed for at tænde og slukke forskellige elementer. Derudover har denne model den nyeste generation af WiFi og Bluetooth.

Trin 3: Eksempel

Eksempel
Eksempel

I videoen kan du se vores klare projekt, og hvordan du bruger det oled -display til at vise en statuslinje, der styres af et potentiometer.

Trin 4: Montering

montage
montage

Til vores samling brugte jeg et potentiometer på 10k, og jeg tændte markørens GPIO25. Vi har også 3v3 og GND, som du kan se i figuren herunder. Strømmen kommer fra selve USB'en.

Trin 5: Kode

Først tilføjer vi biblioteket "SSD1306.h". Med dette får vi adgang til oled -displayet. Derefter opretter vi et visningsobjekt af typen SSD1306, der vil være ansvarlig for at kontrollere indholdet, der vises på det oled -display.

#include "SSD1306.h" // alias for #include "SSD1306Wire.h" // objeto controlador do display de led /* 0x3c: é um identifierador único para comunicação do display pino 5 and 4 são os de comunicação (SDA, SDC) */ SSD1306 skærm (0x3c, 5, 4); // pino que ligamos o potenciometro #define PINO_POTENCIOMETRO 25 // utilizado para fazer o contador de porcentagem int contador;

Opsætning

I funktionen setup () vil vi initialisere vores displayobjekt, så vi kan styre, hvad der skal vises. Gennem dette objekt vil vi også konfigurere skrivekilden til de tekster, der skal vises. Og endelig satte vi stiften (specifikt stiften, hvor vi drejede potentiometeret) til INPUT for at aflæse værdien.

ugyldig opsætning () {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 (); // konfigurer en fonte de escrita "ArialMT_Plain_10" screen.setFont (ArialMT_Plain_10); // konfiguration o pino para fazer a leitura do potenciômetro. pinMode (PINO_POTENCIOMETRO, INPUT); }

Sløjfe

I loop () -funktionen læser vi den aktuelle potentiometerværdi. Vi kan bemærke, at vi bruger "kort" -funktionen kort efter aflæsning af værdien, fordi læseværdien er for høj til at indsætte en statuslinje, så vi kortlægger værdien til at være inden for området 0 til 100.

void loop () {// leitura do valor do potenciometro int valor = analogRead (PINO_POTENCIOMETRO); //Serial.println(valor); // 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 = map (valor, 0, 4095, 0, 100); // limpa todo o display, apaga o contúdo da tela screen.clear (); // ++ tæller; // tæller> 100? tæller = 0: tæller = tæller; // desenha en statuslinje drawProgressBar (); // exibe na tela o que foi configurado até então. skærm. display (); forsinkelse (10); }

I funktionen "drawProgress ()" vil vi bruge værdien læst fra potentiometeret, der er gemt i variablen "percProgress" til at indstille i statuslinjen. Vi vil også placere en tekst lige over statuslinjen, der angiver den aktuelle procentdel.

// função para desenhar a progress bar no displayvoid drawProgressBar () {Serial.print (">>"); Serial.println (contador); // desenha en statuslinje / * * drawProgressBar (x, y, bredde, højde, værdi); parametros (p): p1: x coordenada X no plano cartesiano p2: y coordenada Y no plano cartesiano p3: width comprimento da barra de progresso p4: height altura da barra de progresso p5: value valor que a barra de progresso deve assumir */ screen.drawProgressBar (10, 32, 100, 10, contador); // konfiguration 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, tekst); parametros (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, opret en streng "valor mínimo" if (contador == 0) {screen.drawString (64, 45, "Valor mínimo"); } // se o contador está em 100, opret en streng "valor máximo" ellers hvis (contador == 100) {screen.drawString (64, 45, "Valor máximo"); }}

Trin 6: Nogle andre interessante funktioner

Skærm

// sætter displayet på hovedet

void flipScreenVertically ();

Tegning

// tegner en enkelt pixel fra skærmen

void setPixel (int16_t x, int16_t y);

// tegne en streg

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

// tegne et rektangel

void drawRect (int16_t x, int16_t y, int16_t bredde, int16_t højde);

// tegne en cirkel

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

// udfyld en cirkel

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

// tegne en vandret linje

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

// tegne en lodret streg

void drawVerticalLine (int16_t x, int16_t y, int16_t længde);

Tekst

// indstiller den tekstjustering, der skal skrives

// TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER, TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER_BOTH

void setTextAlignment (OLEDDISPLAY_TEXT_ALIGNMENT textAlignment);

Anbefalede: