Სარჩევი:

ESP32 ეკრანი ოლედით - პროგრესის ზოლი: 6 ნაბიჯი
ESP32 ეკრანი ოლედით - პროგრესის ზოლი: 6 ნაბიჯი

ვიდეო: ESP32 ეკრანი ოლედით - პროგრესის ზოლი: 6 ნაბიჯი

ვიდეო: ESP32 ეკრანი ოლედით - პროგრესის ზოლი: 6 ნაბიჯი
ვიდეო: Using Heltec ESP32 OLED Wifi Kit 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– ის სახელი. სურათზე შავი ნაწილი არის ეკრანი და მოწყობილობის გვერდით ჩვენ ვაჩვენებთ მთელ პინუტს. როგორც ნაჩვენებია, არსებობს რამდენიმე IO, რომელიც საშუალებას გვაძლევს ჩართოთ და გამორთოთ სხვადასხვა ელემენტები. გარდა ამისა, ამ მოდელს აქვს უახლესი თაობის WiFi და Bluetooth.

ნაბიჯი 3: მაგალითი

მაგალითი
მაგალითი

ვიდეოში შეგიძლიათ ნახოთ ჩვენი მზა პროექტი და როგორ გამოვიყენოთ დაფარული ეკრანი პოტენომეტრის მიერ კონტროლირებადი პროგრესის ზოლის გამოსახატავად.

ნაბიჯი 4: შეკრება

შეკრება
შეკრება

ჩვენი შეკრებისთვის გამოვიყენე 10k პოტენციმეტრი და ჩავრთე კურსორის GPIO25. ჩვენ ასევე გვაქვს 3v3 და GND, როგორც ხედავთ ქვემოთ მოცემულ ფიგურაში. ენერგია მოვა თავად USB- დან.

ნაბიჯი 5: კოდი

პირველ რიგში, ჩვენ ვამატებთ ბიბლიოთეკას "SSD1306.h". ამით ჩვენ მივაღწევთ ცხიმიან ეკრანს. ამის შემდეგ, ჩვენ ვქმნით SSD1306 ტიპის ჩვენების ობიექტს, რომელიც პასუხისმგებელი იქნება ცხიმიანი ეკრანზე ნაჩვენები შინაარსის კონტროლზე.

#მოიცავს "SSD1306.h" // მეტსახელად #მოიცავს "SSD1306Wire.h" // მონიტორინგის კონტროლის ჩვენება led /* 0x3c: ჩვენ ვიცნობთ სხვა სახის კომუნიკაციისთვის (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 (); // Inicializa o objeto que controlará o que será exibido na tela screen.init (); // gira o ჩვენება 180º (deixa de ponta cabeça) // display.flipScreenVertically (); // escrita "ArialMT_Plain_10" screen.setFont (ArialMT_Plain_10) კონფიგურაცია; // კონფიგურაცია o pino para fazer leitura do potenciômetro. pinMode (PINO_POTENCIOMETRO, INPUT); }

მარყუჟი

მარყუჟის () ფუნქციაში ჩვენ წავიკითხავთ მიმდინარე პოტენომეტრის მნიშვნელობას. ჩვენ შეგვიძლია შევნიშნოთ, რომ ჩვენ ვიყენებთ "რუქის" ფუნქციას მნიშვნელობის წაკითხვისთანავე, რადგან წაკითხვის მნიშვნელობა ძალიან მაღალია პროგრესის ზოლში ჩასაწერად, ამიტომ ჩვენ დავხატავთ მნიშვნელობას 0 -დან 100 -ის ფარგლებში.

void loop () {// leitura do valor do potenciometro int valor = analogRead (PINO_POTENCIOMETRO); // სერიული. ბეჭდვა (მნიშვნელობა); // 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 = რუკა (valor, 0, 4095, 0, 100); // limpa todo o display, apaga o contúdo da tela screen.clear (); // ++ მრიცხველი; // მთვლელი> 100? counter = 0: counter = counter; // desenha პროგრესის ბარი drawProgressBar (); // exibe na tela o que foi configurado até então. ეკრანი. ჩვენება (); დაგვიანება (10); }

ფუნქციაში "drawProgress ()" ჩვენ გამოვიყენებთ იმ მნიშვნელობას, რომელიც იკითხება პოტენომეტრიდან, რომელიც შენახულია ცვლადში "percProgress" პროგრესის ზოლში. ჩვენ ასევე განვათავსებთ ტექსტს პროგრესის ზოლის ზემოთ, მიმდინარე პროცენტის მითითებით.

// funksão para desenhar პროგრესის ბარი არ displayvoid drawProgressBar () {Serial.print (">>"); Serial.println (contador); // desenha პროგრესის ბარი / * * drawProgressBar (x, y, სიგანე, სიმაღლე, მნიშვნელობა); parametros (p): p1: x coordenada X no plano cartesiano p2: y coordenada Y no plano cartesiano p3: width comprimento da barra de progresso p4: height altura da barra de progresso p5: value valor que a barra de progresso deve suppir */ screen.drawProgressBar (10, 32, 100, 10, contador); // კონფიგურაცია ოლინჰემენტო დო ტექსტი, რომელიც ემსახურება ექსკრიტიკას // შეაფასეთ რა არის ცენტრის ეკრანის ტექსტი. setTextAlignment (TEXT_ALIGN_CENTER); // 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, escreve a string "valor mínimo" if (contador == 0) {screen.drawString (64, 45, "Valor mínimo"); } // se o contador está em 100, გამოყავით სტრიქონი "valor máximo" სხვა შემთხვევაში თუ (contador == 100) {screen.drawString (64, 45, "Valor máximo"); }}

ნაბიჯი 6: ზოგიერთი სხვა საინტერესო ფუნქცია

ჩვენება

// აყენებს ეკრანს თავდაყირა

void flipScreenVertically ();

ნახატი

// ხატავს ერთ პიქსელს ეკრანიდან

void 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

void setTextAlignment (OLEDDISPLAY_TEXT_ALIGNMENT textAlignment);

გირჩევთ: