Мазмұны:

OSP дисплейі бар - прогресс жолағы: 6 қадам
OSP дисплейі бар - прогресс жолағы: 6 қадам

Бейне: OSP дисплейі бар - прогресс жолағы: 6 қадам

Бейне: OSP дисплейі бар - прогресс жолағы: 6 қадам
Бейне: 🚀 AMAZON 2.0 - ИНТЕРНЕТ МАГАЗИН с нуля за 6 часов [Next / React / Nest / PostgreSQL / Prisma / TS] 2024, Қараша
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 атауы. Суретте қара бөлік - бұл дисплей, ал құрылғының жанында біз түйреуіштің барлығын көрсетеміз. Көрсетілгендей, әр түрлі элементтерді қосуға және өшіруге мүмкіндік беретін бірнеше ИО бар. Сонымен қатар, бұл модельде соңғы буын WiFi мен Bluetooth бар.

3 -қадам: Мысал

Мысал
Мысал

Бейнеде сіз біздің дайын жобаны және потенциометрмен басқарылатын прогресс жолағын көрсету үшін жабық дисплейді қалай қолдануға болатынын көре аласыз.

4 -қадам: құрастыру

Ассамблея
Ассамблея

Біздің жиналыс үшін мен 10k потенциометрді қолдандым, мен GPIO25 курсорды қостым. Бізде 3v3 және GND бар, оны төмендегі суреттен көріп отырсыз. Қуат USB -ден келеді.

5 -қадам: код

Алдымен біз «SSD1306.h» кітапханасын қосамыз. Осының арқасында біз жабық дисплейге қол жеткіземіз. Содан кейін біз SSD1306 түріндегі дисплей объектісін жасаймыз, ол дисплейде көрсетілген мазмұнды басқаруға жауап береді.

#include «SSD1306.h» // «SSD1306Wire.h» қосылуының бүркеншік аты // led /* 0x3c дисплейінің дисплейі: 5 -тен 4 -ке дейінгі қашықтықты көрсету (SDA, SDC)) */ SSD1306 экраны (0x3c, 5, 4); // pino que ligamos o potenciometro #define PINO_POTENCIOMETRO 25 // пайдалану шарттары мен міндеттері;

Орнату

Setup () функциясында біз дисплей объектісін инициализациялаймыз, сонда біз не көрсетілетінін басқара аламыз. Бұл нысан арқылы біз көрсетілетін мәтіндердің жазу көзін де конфигурациялаймыз. Ақырында, біз мәнді оқу үшін түйреуішті (дәлірек айтқанда, біз потенциометрді бұрған істікті) INPUT күйіне қойдық.

void setup () {Serial.begin (115200); Serial.println (); Serial.println (); // Экранға кіруге рұқсат етілмеген жағдайда, экранда қарау.init (); // 180 ° дисплейі (deixa de ponta cabeça) // display.flipScreenVertically (); // configure a fonte de escrita «ArialMT_Plain_10» screen.setFont (ArialMT_Plain_10); // конфигурациялау үшін потенциалды пайдалану қажет. pinMode (PINO_POTENCIOMETRO, INPUT); }

Цикл

Цикл () функциясында біз ағымдағы потенциометрдің мәнін оқимыз. Біз «карта» функциясын мәнді оқығаннан кейін көп ұзамай қолдана алатынымызды байқай аламыз, себебі оқу мәні прогресс жолағына қою үшін тым жоғары, сондықтан біз 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 a a 4095 // a barra de progresso espera um valor entre 0 e 100 contador = map (valor, 0, 4095), 0, 100); // limpa todo o display, apala o contúdo da tela screen.clear (); // ++ есептегіш; // есептегіш> 100? есептегіш = 0: есептегіш = есептегіш; // прогресс жолағының тартылуы drawProgressBar (); // мүмкін болған кезде конфигурация жасаңыз. screen.display (); кешіктіру (10); }

«DrawProgress ()» функциясында біз «percProgress» айнымалысында сақталатын потенциометрден оқылатын мәнді прогресс жолағына орнату үшін қолданамыз. Сондай -ақ, ағымдағы пайызды көрсете отырып, прогресс жолағының үстіне мәтін орналастырамыз.

// funcão para desenhar прогресс жолағы displayVoid drawProgressBar () {Serial.print («>>»); Serial.println (contador); // прогресс жолағы / * * drawProgressBar (x, y, ені, биіктігі, мәні); parametros (p): p1: x coordenada X жоқ plano cartesiano p2: y координада Y жоқ plano cartesiano p3: ені құрамы бар4 де прогресс p4: биіктік альтура да барра де прогресс p5: мәні бар және барысы де прогреске жетеді */ screen.drawProgressBar (10, 32, 100, 10, contador); // конфигурация немесе мәтінді өзгерту // экранда экранды өзгерту.setTextAlignment (TEXT_ALIGN_CENTER); // escreve o texto de porcentagem / * * drawString (x, y, мәтін); parametros (p): p1: x координада X жоқ plano cartesiano p2: y координатасы Y жоқ планеталық карт3 p3: жол мәтіні/ экран.drawString (64, 15, String (contador) + «%»); // нөлге тең болса, «valor mínimo» жолын шығарыңыз, егер (contador == 0) {screen.drawString (64, 45, «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);

// сызық салу

жарамсыз 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);

Ұсынылған: