Obsah:
- Krok 1: Knižnica
- Krok 2: Wemos Lolin ESP32 OLED
- Krok 3: Príklad
- Krok 4: Zostavenie
- Krok 5: Kód
- Krok 6: Niektoré ďalšie zaujímavé funkcie
Video: ESP32 s oledovým displejom - indikátor priebehu: 6 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 12:00
ESP32, o ktorom budeme dnes hovoriť, je ten, ktorý je už súčasťou vstavaného displeja Oled. Táto funkcia nám veľmi uľahčuje život, pretože môžeme mať dojem, akú hodnotu má premenná. Nemusíte sa ani pozerať na ladiace okno. Okrem iného môžete tiež zostavovať reprezentácie a kresliť grafy výkonnosti. Vďaka týmto výhodám považujem tento model za fantastický produkt a dnes ho budeme programovať pomocou Arduino IDE.
V tomto videu teda naprogramujeme ukazovateľ priebehu. Je dôležité mať na pamäti, že ak váš ESP32 nemá olovený displej, je možné ho kúpiť samostatne. Tiež, ak ste nikdy neprogramovali ESP32, odporúčam vám pozrieť si toto video: VIDEO ÚVOD DO ESP32, ktorý sa tejto téme venuje podrobnejšie.
Krok 1: Knižnica
Aby sme mohli používať oled displej, musíme nakonfigurovať knižnicu v Arduino IDE. Ak to chcete urobiť, stiahnite si knižnicu prostredníctvom odkazu.
Rozbaľte súbor a vložte ho do priečinka s knižnicami v Arduino IDE.
C:/ProgramFiles (x86)/Arduino/knižnice
Krok 2: Wemos Lolin ESP32 OLED
Wemos Lolin je názov tohto ESP. Na obrázku je čierna časť displeja a vedľa zariadenia zobrazujeme celý vývod. Ako je znázornené, existuje niekoľko IO, ktoré nám umožňujú zapínať a vypínať rôzne prvky. Tento model má navyše najnovšiu generáciu WiFi a Bluetooth.
Krok 3: Príklad
Vo videu môžete vidieť náš pripravený projekt a spôsob, ako pomocou oledového displeja zobrazovať indikátor priebehu riadený potenciometrom.
Krok 4: Zostavenie
Na našu montáž som použil potenciometer 10k a zapol som kurzor GPIO25. Máme tiež 3v3 a GND, ako môžete vidieť na obrázku nižšie. Napájanie bude pochádzať zo samotného USB.
Krok 5: Kód
Najprv pridáme knižnicu „SSD1306.h“. Vďaka tomu sa dostaneme k oledovému displeju. Potom vytvoríme zobrazovací objekt typu SSD1306, ktorý bude zodpovedný za riadenie obsahu zobrazeného na oledovom displeji.
#include "SSD1306.h" // alias pre #include "SSD1306Wire.h" // ovládanie ovládača zobrazuje LED /* 0x3c: všetky identifikačné údaje pre väčšinu komunikácií zobrazujú pino 5 a 4 typy komunikácií (SDA, SDC)) */ Obrazovka SSD1306 (0x3c, 5, 4); // pino que ligamos o potenciometro #define PINO_POTENCIOMETRO 25 // využitie paraboly o contador de porcentagem int contador;
Nastaviť
Vo funkcii setup () inicializujeme náš objekt zobrazenia, aby sme mohli ovládať, čo sa bude zobrazovať. Prostredníctvom tohto objektu tiež nakonfigurujeme zdroj písania pre texty, ktoré sa budú zobrazovať. A nakoniec sme nastavili kolík (konkrétne kolík, kde sme otočili potenciometer) na VSTUP, aby sme odčítali hodnotu.
void setup () {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 (); // konfigurácia a typ písma "ArialMT_Plain_10" screen.setFont (ArialMT_Plain_10); // konfigurácia o pino para fazer a leitura do potenciômetro. pinMode (PINO_POTENCIOMETRO, INPUT); }
Slučka
Vo funkcii loop () odčítame aktuálnu hodnotu potenciometra. Môžeme si všimnúť, že krátko po prečítaní hodnoty používame funkciu „map“, pretože prečítaná hodnota je príliš vysoká na to, aby sa dala vložiť do indikátora priebehu, takže namapujeme hodnotu tak, aby bola v rozsahu 0 až 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 (); // ++ počítadlo; // počítadlo> 100? počítadlo = 0: počítadlo = počítadlo; // desenha a progress bar drawProgressBar (); // exibe na tela o que foi configurado até então. obrazovka.displej (); oneskorenie (10); }
Vo funkcii „drawProgress ()“použijeme na načítanie hodnoty v lište priebehu hodnotu načítanú z potenciometra, ktorý je uložený v premennej „percProgress“. Tesne nad ukazovateľ priebehu tiež umiestnime text s uvedením aktuálneho percenta.
// função para desenhar a progress bar no displayvoid drawProgressBar () {Serial.print (">>"); Serial.println (contador); // desenha a indikátor priebehu / * * drawProgressBar (x, y, šírka, výška, hodnota); parametre (p): p1: x coordenada X no plano cartesiano p2: y coordenada Y no plano cartesiano p3: width continimento da barra de progresso p4: výška altura da barra de progresso p5: value valor que a barra de progresso deve předpoklad */ screen.drawProgressBar (10, 32, 100, 10, contador); // konfigurácia 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); parametre (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, escreve a string "valor máximo" else if (contador == 100) {screen.drawString (64, 45, "Valor máximo"); }}
Krok 6: Niektoré ďalšie zaujímavé funkcie
Displej
// stavia displej hore nohami
void flipScreenVertically ();
Kresba
// vykreslí jeden pixel z obrazovky
zrušiť setPixel (int16_t x, int16_t y);
// Nakresli čiaru
void drawLine (int16_t x0, int16_t y0, int16_t x1, int16_t y1);
// nakreslite obdĺžnik
void drawRect (int16_t x, int16_t y, int16_t šírka, int16_t výška);
// nakresli kruh
void drawCircle (int16_t x, int16_t y, int16_t polomer);
// vyplňte kruh
void fillCircle (int16_t x, int16_t y, int16_t polomer);
// nakreslite vodorovnú čiaru
neplatné drawHorizontalLine (int16_t x, int16_t y, int16_t dĺžka);
// nakreslite zvislú čiaru
void drawVerticalLine (int16_t x, int16_t y, int16_t dĺžka);
Text
// nastaví zarovnanie textu na zápis
// TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER, TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER_BOTH
neplatné setTextAlignment (OLEDDISPLAY_TEXT_ALIGNMENT textAlignment);
Odporúča:
Čítačka RFID na báze ESP32 s dotykovým displejom: 7 krokov
Čítačka RFID na báze ESP32 s dotykovým displejom: Na tomto drobnom návode ukážem, ako vytvoriť jednoduchú čítačku RFID s výstupom TFT na montáž na stenu pomocou modulu ESP32 DEV KIT C, PCB čítačky na báze RC-522 a súpravy AZ-Touch ESP. Túto čítačku môžete použiť na prístup k dverám alebo na vniknutie do
GPS tracker ESP32 s OLED displejom: 7 krokov
ESP32 GPS Tracker s OLED displejom: Jedná sa o GPS tracker, ktorý zobrazuje všetky pozičné údaje na OLED displeji. Tlačidlo pomáha používateľovi komunikovať s používateľským rozhraním na OLED. Čo sa deje, priatelia? Akarsh tu od CETech. Kód ponúka program ovládaný z ponuky pomocou integrovaného tlačidla,
DIY funkcia/generátor priebehu: 6 krokov (s obrázkami)
DIY generátor funkcií/tvaru vlny: V tomto projekte sa pozrieme na generátory komerčných funkcií/kriviek, aby sme zistili, aké funkcie sú dôležité pre verziu pre domácich majstrov. Potom vám potom ukážem, ako vytvoriť generátor jednoduchých funkcií, analógový a číslicový
Nízkonákladový generátor priebehu (0 - 20 MHz): 20 krokov (s obrázkami)
Low Cost Waveform Generator (0 - 20MHz): ABSTRATH Tento projekt pochádza z nutnosti získať generátor vĺn so šírkou pásma nad 10 Mhz a harmonickým skreslením pod 1%, to všetko za nízku cenu. Tento dokument popisuje návrh generátora vĺn so šírkou pásma
Brain Box: Sledovanie neurálneho objemu v priebehu času: 20 krokov
Brain Box: Sledovanie neurálneho objemu v priebehu času: Pokrok na hranici dlhšieho ľudského života priniesol nárast chorôb, ktoré civilizácie nepoznali skôr ako tie naše. Medzi nimi Alzheimerova choroba postihla v roku 2017 približne 5,3 milióna žijúcich starších Američanov alebo približne 1 z 10 pacientov