Orodha ya maudhui:

ESP32 Pamoja na Oled Onyesha - Baa ya Maendeleo: Hatua 6
ESP32 Pamoja na Oled Onyesha - Baa ya Maendeleo: Hatua 6

Video: ESP32 Pamoja na Oled Onyesha - Baa ya Maendeleo: Hatua 6

Video: ESP32 Pamoja na Oled Onyesha - Baa ya Maendeleo: Hatua 6
Video: $5 WiFi Camera Setup | ESP32 Wifi Setup view on Mobile phone 2024, Novemba
Anonim
Image
Image
Wemos Lolin ESP32 OLED
Wemos Lolin ESP32 OLED

ESP32 ambayo tutazungumza leo ni ile ambayo tayari inakuja na Oled Oled iliyojengwa. Kazi hii inafanya maisha yetu kuwa rahisi sana, kwa sababu tunaweza kuwa na maoni kuhusu dhamana ya anuwai inayoonekana. Sio lazima hata uangalie dirisha la utatuzi. Pia, unaweza kukusanya uwakilishi na kuchora chati za utendaji, kati ya mambo mengine. Kwa sababu ya faida hizi, ninachukulia mfano huu kama bidhaa nzuri, na tutaipanga leo kwa kutumia Arduino IDE.

Kwa hivyo, kwenye video hii tutapanga bar ya maendeleo. Ni muhimu kukumbuka kuwa ikiwa ESP32 yako haina oled ya kuonyesha, inawezekana kuinunua kando. Pia, ikiwa haujawahi kupanga ESP32, ninashauri utazame video hii: UTANGULIZI WA VIDEO KWA ESP32, ambayo inashughulikia somo hilo kwa undani zaidi.

Hatua ya 1: Maktaba

Kutumia onyesho la oled, tunahitaji kusanidi maktaba katika Arduino IDE. Ili kufanya hivyo, pakua maktaba kupitia kiunga.

Unzip faili na ubandike kwenye folda ya maktaba ya Arduino IDE.

C: / ProgramFiles (x86) / Arduino / maktaba

Hatua ya 2: Wemos Lolin ESP32 OLED

Wemos Lolin ni jina la ESP hii. Kwenye picha, sehemu nyeusi ni onyesho na, karibu na kifaa, tunaonyesha pinout nzima. Kama inavyoonyeshwa, kuna IO kadhaa ambazo zinaturuhusu kuwasha na kuzima vitu anuwai. Kwa kuongeza, mtindo huu una kizazi kipya cha WiFi na Bluetooth.

Hatua ya 3: Mfano

Mfano
Mfano

Kwenye video, unaweza kuona mradi wetu tayari, na jinsi ya kutumia onyesho la oled kuonyesha bar ya maendeleo inayodhibitiwa na potentiometer.

Hatua ya 4: Mkutano

Mkutano
Mkutano

Kwa mkutano wetu nilitumia potentiometer ya 10k, na nikawasha mshale wa GPIO25. Pia tuna 3v3 na GND, kama unaweza kuona kwenye takwimu hapa chini. Nguvu itatoka kwa USB yenyewe.

Hatua ya 5: Kanuni

Kwanza, tunaongeza maktaba "SSD1306.h". Kwa hili, tutafikia onyesho la oled. Baada ya hapo, tunaunda kitu cha kuonyesha cha aina ya SSD1306 ambacho kitakuwa na jukumu la kudhibiti yaliyomo kwenye onyesho la oled.

# pamoja na "SSD1306.h" // alias for #include "SSD1306Wire.h" // objeto controlador do show de led / * 0x3c: é um identificador único para comunicação do show pino 5 e 4 são os de comunicação (SDA, SDC Skrini ya SSD1306 (0x3c, 5, 4); // pino que ligamos o potenciometro #fasili PINO_POTENCIOMETRO 25 // utilizado para fazer o contador de porcentagem int contador;

Sanidi

Katika kazi ya kuanzisha (), tutaanzisha kitu chetu cha kuonyesha ili tuweze kudhibiti kile kitaonyeshwa. Kupitia kitu hiki, tutasanidi chanzo cha maandishi kwa maandishi ambayo yataonyeshwa. Na, mwishowe, tuliweka pini (haswa, pini ambapo tuligeuza potentiometer) kwa INPUT ili kusoma thamani.

kuanzisha batili () {Serial.begin (115200); Serial.println (); Serial.println (); // Inicializa o objeto que controlará o que será exibido na tela screen.init (); // gira o kuonyesha 180º (deixa de ponta cabeça) // display.flipScreenVertically (); // usanidi fonte de escrita "ArialMT_Plain_10" skrini.setFont (ArialMT_Plain_10); // configura o pino para fazer a leitura do potenciômetro. pinMode (PINO_POTENCIOMETRO, INPUT); }

Kitanzi

Katika kazi ya kitanzi (), tutasoma thamani ya sasa ya potentiometer. Tunaweza kugundua kuwa tunatumia kazi ya "ramani" mara tu baada ya kusoma thamani, kwa sababu thamani ya kusoma ni ya juu sana kuweka bar ya maendeleo, kwa hivyo tutapanga ramani kuwa kati ya 0 hadi 100.

kitanzi batili () {// 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 = ramani (uhodari, 0, 4095, 0, 100); // limpa todo o onyesha, apaga o contúdo da tela screen.clear (); // ++ kaunta; // kaunta> 100? kaunta = 0: kaunta = kaunta; // desenha maendeleo bar kutekaProgressBar (); // exibe na tela o que foi configurado até então. onyesho la skrini (); kuchelewesha (10); }

Katika kazi "drawProgress ()", tutatumia thamani iliyosomwa kutoka kwa potentiometer ambayo imehifadhiwa katika "percProgress" inayobadilika kuweka kwenye mwambaa wa maendeleo. Pia tutaweka maandishi juu tu ya mwambaa wa maendeleo, ikionyesha asilimia ya sasa.

// função para desenhar maendeleo ya bar hakuna onyesho la kuzuia drawProgressBar () {Serial.print (">>"); Serial.println (contador); // desenha maendeleo bar / * * DrawProgressBar (x, y, upana, urefu, thamani); parametros (p): p1: x coordenada X no plano cartesiano p2: y coordenada Y no plano cartesiano p3: wide comprimento da barra de progresso p4: height altura da barra de progresso p5: value valor que a barra de progresso deve assumir * / skrini.drawProgressBar (10, 32, 100, 10, contador); // usanidi wa alinhamento fanya maandishi ya barua pepe / soma caso alinharemos o texto ao centro screen.setTextAlignment (TEXT_ALIGN_CENTER); // escreve o texto de porcentagem / * * DrawString (x, y, maandishi); 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, sambaza kamba "valor mínimo" ikiwa (contador == 0) {screen.drawString (64, 45, "Valor mínimo"); } // se contador está em 100, ongeza kamba "valor máximo" vingine ikiwa (contador == 100) {screen.drawString (64, 45, "Valor máximo"); }}

Hatua ya 6: Baadhi ya Kazi Nyingine za Kuvutia

Onyesha

// huweka onyesho la kichwa chini

utupu flipScreen Vertically ();

Kuchora

// huchota pikseli moja kutoka skrini

kuwekaPixel batili (int16_t x, int16_t y);

// chora mstari

Utupu wa kuchora (int16_t x0, int16_t y0, int16_t x1, int16_t y1);

// chora mstatili

DrawRect batili (int16_t x, int16_t y, int16_t upana, int16_t urefu);

// chora duara

chora batili Mzunguko (int16_t x, int16_t y, int16_t radius);

// jaza duara

batili kujaza Mzunguko (int16_t x, int16_t y, int16_t radius);

// chora laini

chora batiliLine ya Mzunguko (int16_t x, int16_t y, int16_t urefu);

// chora mstari wa wima

chora batili VerticalLine (int16_t x, int16_t y, int16_t urefu);

Nakala

// huweka mpangilio wa maandishi kuandikwa

// TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER, TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER_BOTH

batili setTextAlignment (OLEDDISPLAY_TEXT_ALIGNMENT textAlignment);

Ilipendekeza: