Satura rādītājs:

ESP32 ar displeja oled - progresa josla: 6 soļi
ESP32 ar displeja oled - progresa josla: 6 soļi

Video: ESP32 ar displeja oled - progresa josla: 6 soļi

Video: ESP32 ar displeja oled - progresa josla: 6 soļi
Video: Использование комплекта Wi-Fi Heltec ESP32 OLED 2024, Novembris
Anonim
Image
Image
Wemos Lolin ESP32 OLED
Wemos Lolin ESP32 OLED

ESP32, par kuru mēs šodien runāsim, jau ir aprīkots ar iebūvētu Display Oled. Šī funkcija ievērojami atvieglo mūsu dzīvi, jo mēs varam radīt iespaidu par parādītā mainīgā vērtību. Jums pat nav jāskatās atkļūdošanas logs. Cita starpā varat arī apkopot attēlojumus un zīmēt veiktspējas diagrammas. Šo priekšrocību dēļ es uzskatu šo modeli par fantastisku produktu, un mēs to šodien programmēsim, izmantojot Arduino IDE.

Tātad, šajā videoklipā mēs ieprogrammēsim progresa joslu. Ir svarīgi atcerēties, ka, ja jūsu ESP32 nav displeja, to ir iespējams iegādāties atsevišķi. Turklāt, ja jūs nekad neesat programmējis ESP32, es iesaku jums noskatīties šo videoklipu: VIDEO IEVADS ESP32, kurā sīkāk aplūkota šī tēma.

1. darbība: bibliotēka

Lai izmantotu OLED displeju, mums ir jākonfigurē bibliotēka Arduino IDE. Lai to izdarītu, lejupielādējiet bibliotēku, izmantojot saiti.

Izsaiņojiet failu un ielīmējiet to Arduino IDE bibliotēku mapē.

C:/ProgramFiles (x86)/Arduino/bibliotēkas

2. darbība: Wemos Lolin ESP32 OLED

Wemos Lolin ir šīs ESP nosaukums. Attēlā melnā daļa ir displejs, un blakus ierīcei mēs parādām visu pinout. Kā parādīts, ir vairāki IO, kas ļauj mums ieslēgt un izslēgt dažādus elementus. Turklāt šim modelim ir jaunākās paaudzes WiFi un Bluetooth.

3. darbība. Piemērs

Piemērs
Piemērs

Videoklipā varat redzēt mūsu gatavu projektu un to, kā izmantot OLED displeju, lai parādītu progresa joslu, ko kontrolē potenciometrs.

4. solis: montāža

Montāža
Montāža

Mūsu montāžai es izmantoju 10k potenciometru un ieslēdzu kursora GPIO25. Mums ir arī 3v3 un GND, kā redzat attēlā zemāk. Jauda tiks nodrošināta no paša USB.

5. darbība: kods

Pirmkārt, mēs pievienojam bibliotēku "SSD1306.h". Tādējādi mēs piekļūsim esat displejam. Pēc tam mēs izveidojam SSD1306 tipa displeja objektu, kas būs atbildīgs par esat displejā redzamā satura kontroli.

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

Uzstādīt

Funkcijā setup () mēs inicializēsim savu displeja objektu, lai mēs varētu kontrolēt to, kas tiks parādīts. Izmantojot šo objektu, mēs arī konfigurēsim rakstāmo avotu tekstiem, kas tiks parādīti. Visbeidzot, mēs noregulējām tapu (īpaši tapu, kurā mēs pagriezām potenciometru) uz INPUT, lai nolasītu vērtību.

void setup () {Serial.begin (115200); Sērijas.println (); Sērijas.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 (); // konfigurēt fona de escrita "ArialMT_Plain_10" screen.setFont (ArialMT_Plain_10); // configura o pino para fazer a leitura do potenciômetro. pinMode (PINO_POTENCIOMETRO, INPUT); }

Cilpa

Funkcijā loop () mēs nolasīsim pašreizējo potenciometra vērtību. Mēs varam pamanīt, ka drīz pēc vērtības nolasīšanas mēs izmantojam funkciju "karte", jo nolasīšanas vērtība ir pārāk augsta, lai to ievietotu progresa joslā, tāpēc mēs kartēsim vērtību diapazonā no 0 līdz 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 progressso // potenciometro faz a leitura do valor no intervalo de 0 a 4095 // a barra de progressso espera um valor entre 0 e 100 contador = karte (valor, 0, 4095, 0, 100); // limpa todo o display, apaga o contúdo da tela screen.clear (); // ++ skaitītājs; // skaitītājs> 100? skaitītājs = 0: skaitītājs = skaitītājs; // desenha progresa joslas drawProgressBar (); // exibe na tela o que foi configurado até então. screen.display (); kavēšanās (10); }

Funkcijā "drawProgress ()" mēs izmantosim vērtību, kas nolasīta no potenciometra, kas tiek saglabāts mainīgajā "percProgress", lai iestatītu progresa joslā. Mēs arī novietosim tekstu tieši virs progresa joslas, norādot pašreizējo procentuālo daļu.

// função para desenhar a progress bar no displayvoid drawProgressBar () {Serial.print (">>"); Serial.println (kontadors); // desenha progresa josla / * * drawProgressBar (x, y, platums, augstums, vērtība); parametri (p): p1: x coordenada X no plano cartesiano p2: y coordenada Y no plano cartesiano p3: platuma komprimens da barra de progresso p4: augstums al bar da de progresso p5: vērtība valor que a barra de progressso deve assumir */ screen.drawProgressBar (10, 32, 100, 10, kontadors); // 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); parametri (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 string "valor mínimo" if (contador == 0) {screen.drawString (64, 45, "Valor mínimo"); } // se o contador está em 100, escreve string "valor máximo" else if (contador == 100) {screen.drawString (64, 45, "Valor máximo"); }}

6. darbība: dažas citas interesantas funkcijas

Displejs

// liek displeju otrādi

void flipScreenVertically ();

Zīmēšana

// no ekrāna izvelk vienu pikseļu

void setPixel (int16_t x, int16_t y);

// novilkt līniju

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

// uzzīmējiet taisnstūri

void drawRect (int16_t x, int16_t y, int16_t platums, int16_t augstums);

// zīmēt apli

void drawCircle (int16_t x, int16_t y, int16_t rādiuss);

// aizpildiet apli

void fillCircle (int16_t x, int16_t y, int16_t rādiuss);

// uzzīmē horizontālu līniju

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

// uzzīmējiet vertikālu līniju

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

Teksts

// iestata rakstāmā teksta līdzinājumu

// TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER, TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER_BOTH

void setTextAlignment (OLEDDISPLAY_TEXT_ALIGNMENT textAlignment);

Ieteicams: