Cov txheej txheem:

ESP32 Nrog Zaub Oled - Kev Txhim Kho Bar: 6 Cov Kauj Ruam
ESP32 Nrog Zaub Oled - Kev Txhim Kho Bar: 6 Cov Kauj Ruam

Video: ESP32 Nrog Zaub Oled - Kev Txhim Kho Bar: 6 Cov Kauj Ruam

Video: ESP32 Nrog Zaub Oled - Kev Txhim Kho Bar: 6 Cov Kauj Ruam
Video: Windgeschwindigkeit messen mit dem Arduino & Selbstbau Anemometer | Update 2024, Kaum ib hlis
Anonim
Image
Image
Wemos Lolin ESP32 OLED
Wemos Lolin ESP32 OLED

ESP32 peb tab tom tham txog hnub no yog ib qho uas twb tau los nrog Display Oled built-in. Txoj haujlwm no ua rau peb lub neej yooj yim dua, vim tias peb tuaj yeem muaj kev xav txog qhov txiaj ntsig ntawm qhov sib txawv uas tshwm sim. Koj tsis tas yuav tsum saib lub qhov rais debug. Tsis tas li, koj tuaj yeem sib sau ua sawv cev thiab kos kab kos ua haujlwm, ntawm lwm yam. Vim tias cov txiaj ntsig no, Kuv xav txog tus qauv no yog cov khoom lag luam zoo, thiab peb yuav ua haujlwm niaj hnub no siv Arduino IDE.

Yog li, hauv daim vis dis aus no peb yuav teeb tsa txoj haujlwm nce qib. Nws yog ib qho tseem ceeb kom nco ntsoov tias yog tias koj lub ESP32 tsis muaj cov zaub oled, nws muaj peev xwm yuav nws cais. Tsis tas li, yog tias koj tsis tau npaj ib qho ESP32, kuv xav kom koj saib cov vis dis aus no: VIDEO INTRODUCTION TO ESP32, uas cuam tshuam nrog cov ncauj lus kom ntxaws.

Kauj ruam 1: Tsev qiv ntawv

Txhawm rau siv oled zaub, peb yuav tsum teeb tsa lub tsev qiv ntawv hauv Arduino IDE. Txhawm rau ua qhov no, rub lub tsev qiv ntawv los ntawm qhov txuas.

Unzip cov ntawv thiab muab tso rau hauv cov ntawv qiv ntawm Arduino IDE.

C:/ProgramFiles (x86)/Arduino/qiv ntawv

Kauj Ruam 2: Wemos Lolin ESP32 OLED

Wemos Lolin yog lub npe ntawm ESP no. Hauv daim duab, ntu dub yog cov duab thiab, ib sab ntawm lub cuab yeej, peb tso saib tag nrho cov pinout. Raws li tau qhia, muaj ntau qhov IOs uas tso cai rau peb qhib thiab tawm ntau yam ntsiab lus. Ib qho ntxiv, tus qauv no muaj lub cim tshiab WiFi thiab Bluetooth.

Kauj Ruam 3: Piv txwv

Piv txwv
Piv txwv

Hauv cov vis dis aus, koj tuaj yeem pom peb qhov phiaj xwm npaj tau, thiab yuav siv lub oled zaub los tso saib qhov kev nce qib uas tswj los ntawm lub hwj chim.

Kauj ruam 4: Sib dhos

Los ua ke
Los ua ke

Rau peb qhov kev sib dhos kuv siv lub hwj chim ntawm 10k, thiab kuv tig tus cursor GPIO25. Peb kuj muaj 3v3 thiab GND, raws li koj tuaj yeem pom hauv daim duab hauv qab no. Lub zog yuav los ntawm USB nws tus kheej.

Kauj ruam 5: Code

Ua ntej, peb ntxiv lub tsev qiv ntawv "SSD1306.h". Nrog rau qhov no, peb yuav nkag mus rau oled zaub. Tom qab, peb tsim cov khoom pom ntawm hom SSD1306 uas yuav muaj lub luag haujlwm tswj hwm cov ntsiab lus pom hauv cov duab oled.

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

Teeb

Hauv kev teeb tsa () muaj nuj nqi, peb yuav pib peb cov khoom tso tawm kom peb tuaj yeem tswj hwm yam uas yuav tshwm sim. Los ntawm qhov khoom no, peb tseem yuav teeb tsa cov ntawv sau rau cov ntawv uas yuav nthuav tawm. Thiab, thaum kawg, peb teeb tus pin (tshwj xeeb, tus pin uas peb tig lub potentiometer) rau INPUT los nyeem tus nqi.

teeb tsa tsis muaj dab tsi () {Serial.begin (115200); Serial.println (); Serial.println (); // Txheeb xyuas qhov xwm txheej ntawm ob qho kev tswj hwm kev tswj hwm o que será exibido na tela screen.init (); // gira o zaub 180º (deixa de ponta cabeça) // display.flipScreenVertically (); // configura a fonte de escrita "ArialMT_Plain_10" screen.setFont (ArialMT_Plain_10); // configura o pino para fazer leitura do potenciômetro. pinMode (PINO_POTENCIOMETRO, INPUT); }

Loop

Hauv lub voj () muaj nuj nqi, peb yuav nyeem tus nqi zog tam sim no. Peb tuaj yeem pom tias peb tab tom siv "daim ntawv qhia" ua haujlwm sai tom qab nyeem tus nqi, vim tias tus nqi nyeem tau siab dhau los tso rau hauv qhov kev nce qib, yog li peb yuav qhia daim ntawv qhia tus nqi kom nyob hauv thaj tsam 0 txog 100.

void loop () {// leitura do valor do potenciometro int valor = analogRead (PINO_POTENCIOMETRO); //Serial.println(qhov ntsuas); // 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 = daim ntawv qhia (valor, 0, 4095, 0, 100); // limpa todo o zaub, ua raws lossis txuas nrog lub xov tooj screen.clear (); // ++ txee; // suav> 100? counter = 0: counter = counter; // desenha qhov kev nce qib kos drawProgressBar (); // Exibe na tela o que foi configurado até então. screen.display (); ncua (10); }

Hauv txoj haujlwm "drawProgress ()", peb yuav siv tus nqi nyeem los ntawm lub zog uas tau txais kev cawmdim hauv qhov sib txawv "percProgress" los teeb tsa hauv qhov kev nce qib. Peb tseem yuav tso cov ntawv nyob saum toj ntawm qhov kev nce qib, qhia txog feem pua tam sim no.

// função para desenhar a bar တိုးတက်မှု tsis muaj displayvoid drawProgressBar () {Serial.print (">>"); Serial.println (tus neeg sib tw); // desenha qhov kev nce qib bar * * * drawProgressBar (x, y, dav, qhov siab, tus nqi); parametros (p): p1: x coordenada X tsis muaj plano cartesiano p2: y coordenada Y tsis muaj plano cartesiano p3: dav suav nrog da barra de progresso p4: qhov siab altura da barra de progresso p5: tus nqi valor que a barra de progresso deve assumir */ screen.drawProgressBar (10, 32, 100, 10, tus sib tw); // configura o alinhamento ua texto que será escrito // nesse caso alinharemos o texto ao centro screen.setTextAlignment (TEXT_ALIGN_CENTER); // escreve o texto de porcentagem / * * drawString (x, y, ntawv); parametros (p): p1: x coordenada X tsis muaj plano cartesiano p2: y coordenada Y tsis muaj 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"); }}

Kauj Ruam 6: Qee Lwm Cov Haujlwm Zoo Tshaj Plaws

Zaub

// tso cov zaub upside down

tsis muaj dab tsi flipScreenVertically ();

Teeb duab

// kos ib pixel nkaus xwb los ntawm qhov screen

void setPixel (int16_t x, int16_t y);

// kos kab

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

// kos ib lub duab plaub

void drawRect (int16_t x, int16_t y, int16_t dav, int16_t qhov siab);

// kos lub voj voog

void drawCircle (int16_t x, int16_t y, int16_t radius);

// sau rau hauv ib lub voj voog

void fillCircle (int16_t x, int16_t y, int16_t radius);

// kos kab kab rov tav

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

// kos kab ntsug

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

Ntawv

// teev cov ntawv sib dhos kom raug sau

// TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER, TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER_BOTH

void setTextAlignment (OLEDDISPLAY_TEXT_ALIGNMENT textAlignment);

Pom zoo: