Агуулгын хүснэгт:

ESP32 дэлгэцтэй Oled - Дэвшилт мөр: 6 алхам
ESP32 дэлгэцтэй Oled - Дэвшилт мөр: 6 алхам
Anonim
Image
Image
Wemos Lolin ESP32 OLED
Wemos Lolin ESP32 OLED

Өнөөдөр бидний ярих гэж буй ESP32 бол Display Oled-тэй аль хэдийн ирсэн загвар юм. Энэ функц нь бидний амьдралыг ихээхэн хөнгөвчилдөг, учир нь бид гарч ирж буй хувьсагчийн үнэ цэнийн талаар сэтгэгдэл төрүүлж чаддаг. Та дибаг хийх цонхыг харах шаардлагагүй болно. Түүнчлэн, та дүрслэлийг угсарч, гүйцэтгэлийн хүснэгт зурж болно. Эдгээр давуу талуудын ачаар би энэ загварыг гайхалтай бүтээгдэхүүн гэж үзэж байгаа бөгөөд бид үүнийг өнөөдөр Arduino IDE ашиглан програмчлах болно.

Тиймээс, энэ видеон дээр бид ахиц дэвшил гаргах мөрийг програмчлах болно. Хэрэв таны ESP32 дэлгэц дэлгэцгүй бол түүнийг тусад нь худалдаж авах боломжтой гэдгийг санах нь чухал юм. Түүнчлэн, хэрэв та ESP32 програмчлаагүй бол энэ сэдвийг илүү нарийвчлан авч үзсэн ESP32 -ийн ВИДЕО ТАНИЛЦУУЛГА -г үзэхийг санал болгож байна.

Алхам 1: Номын сан

Олед дэлгэцийг ашиглахын тулд бид Arduino IDE дахь номын санг тохируулах хэрэгтэй. Үүнийг хийхийн тулд номын санг линкээр татаж авна уу.

Файлыг задалж, Arduino IDE -ийн номын сангийн хавтсанд буулгана уу.

C:/ProgramFiles (x86)/Arduino/сангууд

Алхам 2: Wemos Lolin ESP32 OLED

Wemos Lolin бол энэхүү ESP -ийн нэр юм. Зураг дээр хар хэсэг нь дэлгэц бөгөөд төхөөрөмжийн хажууд бид зүүг бүхэлд нь харуулдаг. Үзүүлсэн шиг янз бүрийн элементүүдийг асаах, унтраах боломжийг олгодог хэд хэдэн IO байдаг. Үүнээс гадна энэ загвар нь хамгийн сүүлийн үеийн WiFi болон Bluetooth -тэй.

Алхам 3: Жишээ

Жишээ
Жишээ

Видео бичлэг дээр та манай бэлэн төсөл, олед дэлгэцийг ашиглан потенциометрээр хянагдаж буй явцыг харуулах болно.

Алхам 4: угсрах

Чуулган
Чуулган

Манай угсралтын хувьд би 10 к потенциометр ашиглаж, курсорын GPIO25 -ийг асаав. Бид бас 3v3 ба GND -тэй байгааг доорх зургаас харж болно. Эрчим хүч нь USB -ээс гарна.

Алхам 5: Код

Нэгдүгээрт, бид "SSD1306.h" номын санг нэмнэ. Үүний тусламжтайгаар бид олед дэлгэц рүү нэвтрэх болно. Үүний дараа бид SSD1306 төрлийн дэлгэцийн объектыг бий болгодог бөгөөд энэ нь олед дэлгэц дээр үзүүлсэн контентыг хянах үүрэгтэй болно.

#include "SSD1306.h" // alias for #include "SSD1306Wire.h" // objeto controlador do display de de / /0x3c: é um identificador único para comunicação to display pino 5 e 4 são os de comunicação (SDA, SDC)) */ SSD1306 дэлгэц (0x3c, 5, 4); // pino que ligamos o potenciometro #PINO_POTENCIOMETRO 25 -ийг тодорхойлно уу // ашиглах шаардлагатай үе шатууд;

Тохируулах

Setup () функц дээр бид дэлгэцийн объектоо эхлүүлэх бөгөөд ингэснээр харуулах зүйлээ хянах боломжтой болно. Энэ объектоор дамжуулан бид харуулах текстүүдийн бичих эх сурвалжийг тохируулах болно. Эцэст нь бид утгыг уншихын тулд зүүг (ялангуяа потенциометрийг эргүүлсэн зүү) INPUT болгож тохируулсан.

void setup () {Serial.begin (115200); Serial.println (); Serial.println (); // Телевизийн дэлгэц.init () -ийг шалгах эсвэл хянах боломжтой. // дэлгэц 180º (deixa de ponta cabeça) // display.flipScreenVertically (); // "ArialMT_Plain_10" дэлгэцийг тохируулах дэлгэц.setFont (ArialMT_Plain_10); // тохиргоог хийх эсвэл ашиглах боломжтой. pinMode (PINO_POTENCIOMETRO, INPUT); }

Гогцоо

Loop () функц дээр бид одоогийн потенциометрийн утгыг унших болно. Унших утга нь ахиц дэвшилтэд оруулахын тулд хэт өндөр байгаа тул утгыг уншсаны дараа удалгүй "газрын зураг" функцийг ашиглаж байгааг бид анзаарч чадна, тиймээс бид утгыг 0 -ээс 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 (); // ++ тоолуур; // тоолуур> 100? тоолуур = 0: тоолуур = тоолуур; // desenha ахиц дэвтрийн зураас DrawProgressBar (); // жишээ нь, тохиргоог хийх хэрэгтэй. дэлгэц.харах (); саатал (10); }

"DrawProgress ()" функцид бид "percProgress" хувьсагч дээр хадгалагдсан потенциометрээс уншсан утгыг явцын мөрөнд тохируулах болно. Бид мөн ахиц дэвшилт мөрийн дээгүүр яг одоогийн хувийг харуулсан текстийг байрлуулах болно.

// função para desenhar ахиц дэвтэр байхгүй displayvoid drawProgressBar () {Serial.print (">>"); Serial.println (contador); // ахиц дэвшилт мөр / * * drawProgressBar (x, y, өргөн, өндөр, утга); parametros (p): p1: x coordenada X no plano cartesiano p2: y coordenada Y no plano cartesiano p3: width compimento da barra de progresso p4: height altura da barra de progresso p5: value valor que a barra de progresso deve assepir */ screen.drawProgressBar (10, 32, 100, 10, contador); // тохиргоо хийх эсвэл текст бичих шаардлагатай болно. // escreve o texto de porcentagem / * * drawString (x, y, текст); 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, if "contor == 0" {screen.drawString (64, 45, "Valor mínimo") мөрийг "valor mínimo" гэж аваарай; } // se o contador está em 100, if "contor == 100" {screen.drawString (64, 45, "Valor máximo") мөрийг "valor máximo" эскверд оруулах; }}

Алхам 6: Бусад сонирхолтой функцууд

Дэлгэц

// дэлгэцийг дээш нь харуулдаг

void flipScreenVertically ();

Зурах

// дэлгэцээс ганц пиксел зурдаг

хүчингүй setPixel (int16_t x, int16_t y);

// шугам зур

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

// тэгш өнцөгт зур

void drawRect (int16_t x, int16_t y, int16_t өргөн, int16_t өндөр);

// тойрог зур

void drawCircle (int16_t x, int16_t y, int16_t радиус);

// тойрог бөглөнө үү

void fillCircle (int16_t x, int16_t y, int16_t радиус);

// хэвтээ шугам зур

void drawHorizontalLine (int16_t x, int16_t y, int16_t урт);

// босоо шугам зур

void drawVerticalLine (int16_t x, int16_t y, int16_t урт);

Текст

// бичих текстийн тохируулгыг тохируулна

// TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER, TEXT_ALIGN_RIGHT, TEXT_ALIGN_CENTER_BOTH

хүчингүй setTextAlignment (OLEDDISPLAY_TEXT_ALIGNMENT textAlignment);

Зөвлөмж болгож буй: