Sisällysluettelo:

ESP32 ja näyttö Oled - edistymispalkki: 6 vaihetta
ESP32 ja näyttö Oled - edistymispalkki: 6 vaihetta

Video: ESP32 ja näyttö Oled - edistymispalkki: 6 vaihetta

Video: ESP32 ja näyttö Oled - edistymispalkki: 6 vaihetta
Video: Learn Arduino in 30 Minutes: Examples and projects 2024, Marraskuu
Anonim
Image
Image
Wemos Lolin ESP32 OLED
Wemos Lolin ESP32 OLED

ESP32, josta aiomme puhua tänään, on jo varustettu sisäänrakennetulla Display Oledilla. Tämä toiminto helpottaa elämäämme paljon, koska voimme saada vaikutelman näkyvän muuttujan arvosta. Sinun ei tarvitse edes katsoa virheenkorjausikkunaa. Voit myös koota esityksiä ja piirtää suorituskykykaavioita muun muassa. Näiden etujen vuoksi pidän tätä mallia fantastisena tuotteena, ja aiomme ohjelmoida sen tänään Arduino IDE: n avulla.

Joten tässä videossa ohjelmoimme edistymispalkin. On tärkeää muistaa, että jos ESP32 -laitteessasi ei ole näyttöä, voit ostaa sen erikseen. Jos et ole koskaan ohjelmoinut ESP32 -ohjelmaa, suosittelen, että katsot tämän videon: ESP32 -VIDEON JOHDANTO, jossa käsitellään aihetta tarkemmin.

Vaihe 1: Kirjasto

Jotta voit käyttää OLED -näyttöä, meidän on määritettävä kirjasto Arduino IDE: ssä. Voit tehdä tämän lataamalla kirjaston linkin kautta.

Pura tiedosto ja liitä se Arduino IDE: n kirjastojen kansioon.

C:/ProgramFiles (x86)/Arduino/kirjastot

Vaihe 2: Wemos Lolin ESP32 OLED

Wemos Lolin on tämän ESP: n nimi. Kuvassa musta osa on näyttö ja laitteen vieressä koko pinout. Kuten on esitetty, on olemassa useita IO: ita, joiden avulla voimme kytkeä päälle ja pois erilaisia elementtejä. Lisäksi tässä mallissa on uusimman sukupolven WiFi ja Bluetooth.

Vaihe 3: Esimerkki

Esimerkki
Esimerkki

Videolla näet valmis projektimme ja kuinka olet -näytön avulla voit näyttää potentiometrin ohjaaman edistymispalkin.

Vaihe 4: Kokoonpano

Kokoonpano
Kokoonpano

Kokoonpanossani käytin 10k potentiometriä ja käynnistin kohdistimen GPIO25: n. Meillä on myös 3v3 ja GND, kuten näet alla olevasta kuvasta. Virta tulee itse USB: ltä.

Vaihe 5: Koodi

Lisäämme ensin kirjaston "SSD1306.h". Näin pääsemme OLED -näyttöön. Luomme tämän jälkeen SSD1306 -tyyppisen näyttöobjektin, joka vastaa olet -näytössä näkyvän sisällön ohjaamisesta.

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

Perustaa

Setup () -toiminnossa alustamme näyttöobjektimme, jotta voimme hallita näytettävää. Tämän objektin kautta määritämme myös näytettävien tekstien kirjoituslähteen. Ja lopuksi asetimme tapin (erityisesti tapin, jossa käänsimme potentiometrin) arvoon INPUT arvon lukemiseksi.

void setup () {Serial.begin (115200); Sarja.println (); Sarja.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 (); // määritä "ArialMT_Plain_10" screen.setFont (ArialMT_Plain_10); // configura o pino para fazer a leitura do potenciômetro. pinMode (PINO_POTENCIOMETRO, INPUT); }

Silmukka

Silmukka () -funktiossa luemme potentiometrin nykyisen arvon. Voimme huomata, että käytämme "kartta" -toimintoa pian arvon lukemisen jälkeen, koska lukuarvo on liian korkea edistymispalkkiin asettamista varten, joten kartoitamme arvon välille 0-100.

void loop () {// leitura do valor do potenciometro int valor = analogRead (PINO_POTENCIOMETRO); //Sarja.println (arvo); // mapeando o valor do potenciometro para o valor da barra de progressso // potentometro faz a leitura do valor no intervalo de 0 a 4095 // a barra de progressso espera um valor entre 0 e 100 contador = kartta (valor, 0, 4095), 0, 100); // limpa todo o display, apaga o contúdo da tela screen.clear (); // ++ laskuri; // laskuri> 100? laskuri = 0: laskuri = laskuri; // desenha edistymispalkki drawProgressBar (); // exibe na tela o que foi configurado até então. näyttöruutu(); viive (10); }

Funktiossa "drawProgress ()" käytämme potentiometristä luettua arvoa, joka on tallennettu muuttujaan "percProgress", asettaaksesi edistymispalkkiin. Sijoitamme myös tekstin edistymispalkin yläpuolelle, joka ilmaisee nykyisen prosenttiosuuden.

// função para desenhar edistymispalkki no displayvoid drawProgressBar () {Serial.print (">>"); Sarja.println (jatkoa); // desenha edistymispalkki / * * drawProgressBar (x, y, leveys, korkeus, arvo); parametrit (p): p1: x coordenada X no plano cartesiano p2: y coordenada Y no plano cartesiano p3: leveysmittaus barra de progresso p4: korkeus albar da barra de progressso p5: arvo valor que a barra de progressso deve assumir */ screen.drawProgressBar (10, 32, 100, 10, contador); // 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); parametrit (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, escreve a string "valor mínimo" if (contador == 0) {screen.drawString (64, 45, "Valor mínimo"); } // se o contador está em 100, luo merkkijono "valor máximo" else if (contador == 100) {screen.drawString (64, 45, "Valor máximo"); }}

Vaihe 6: Jotkut muut mielenkiintoiset toiminnot

Näyttö

// laittaa näytön ylösalaisin

void flipScreenVertically ();

Piirustus

// piirtää yhden pikselin näytöltä

mitätön setPixel (int16_t x, int16_t y);

// Piirrä viiva

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

// piirtää suorakulmio

void drawRect (int16_t x, int16_t y, int16_t leveys, int16_t korkeus);

// piirrä ympyrä

void drawCircle (int16_t x, int16_t y, int16_t säde);

// täytä ympyrä

void fillCircle (int16_t x, int16_t y, int16_t säde);

// piirrä vaakasuora viiva

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

// piirrä pystysuora viiva

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

Teksti

// asettaa tekstin kohdistuksen kirjoitettavaksi

// TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER, TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER_BOTH

void setTextAlignment (OLEDDISPLAY_TEXT_ALIGNMENT textAlignment);

Suositeltava: