Satura rādītājs:
- 1. darbība: bibliotēka
- 2. darbība: Wemos Lolin ESP32 OLED
- 3. darbība. Piemērs
- 4. solis: montāža
- 5. darbība: kods
- 6. darbība: dažas citas interesantas funkcijas
Video: ESP32 ar displeja oled - progresa josla: 6 soļi
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:57
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
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
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:
Arduino displeja temperatūra TM1637 LED displejā: 7 soļi
Arduino displeja temperatūra TM1637 LED displejā: šajā apmācībā mēs iemācīsimies parādīt temperatūru, izmantojot LED displeju TM1637 un DHT11 sensoru un Visuino. Noskatieties video
LED Ziemassvētku gaismas josla: 3 soļi
LED Ziemassvētku gaismas sloksne: Es gribēju Ziemassvētku brīvdienām izveidot jautru un svētku Arduino projektu, tāpēc nolēmu izveidot savas DIY led sloksnes. Šim projektam ir nepieciešama lodēšanas mašīna, tāpēc paturiet to prātā
Arduino displeja laiks TM1637 LED displejā, izmantojot RTC DS1307: 8 soļi
Arduino displeja laiks TM1637 LED displejā, izmantojot RTC DS1307: Šajā apmācībā mēs iemācīsimies parādīt laiku, izmantojot RTC DS1307 moduli un LED displeju TM1637 un Visuino. Noskatieties video
ESP8266 - HomeKit NeoPixel gaismas josla: 6 soļi
ESP8266 - HomeKit NeoPixel gaismas josla: Esmu tik entuziasma pilna par šo programmatūras izstrādes komplektu, ka rakstīšu dažus emuārus par šo ģeniālo programmatūru. Katrā emuārā es pievērsīšos citam piederumam, ko varat pievienot savam HomeKit bez tilta. Laiks izveidot mājas
Displeja temperatūra P10 LED displeja modulī, izmantojot Arduino: 3 soļi (ar attēliem)
Displeja temperatūra P10 LED displeja modulī, izmantojot Arduino: Iepriekšējā apmācībā ir teikts, kā parādīt tekstu Dot Matrix LED displeja P10 modulī, izmantojot Arduino un DMD savienotāju, ko varat pārbaudīt šeit. Šajā apmācībā mēs sniegsim vienkāršu projekta apmācību, izmantojot displeja līdzekli P10 moduli