Სარჩევი:
- ნაბიჯი 1: ბიბლიოთეკა
- ნაბიჯი 2: Wemos Lolin ESP32 OLED
- ნაბიჯი 3: მაგალითი
- ნაბიჯი 4: შეკრება
- ნაბიჯი 5: კოდი
- ნაბიჯი 6: ზოგიერთი სხვა საინტერესო ფუნქცია
ვიდეო: ESP32 ეკრანი ოლედით - პროგრესის ზოლი: 6 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:19
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);
გირჩევთ:
LED საშობაო სინათლის ზოლი: 3 ნაბიჯი
LED საშობაო სინათლის ზოლი: მე მინდოდა საშობაო დღესასწაულებისთვის Arduino– ს სახალისო და სადღესასწაულო პროექტის შექმნა, ამიტომ გადავწყვიტე შემექმნა საკუთარი ხელებით DIY led ზოლები. ეს პროექტი მოითხოვს გამწოვ მანქანას, ასე რომ გაითვალისწინეთ
ESP8266 - HomeKit NeoPixel მსუბუქი ზოლი: 6 ნაბიჯი
ESP8266 - HomeKit NeoPixel Light Strip: მე იმდენად აღფრთოვანებული ვარ ამ პროგრამული უზრუნველყოფის განვითარების ნაკრებით, რომ დავწერ რამდენიმე ბლოგს ამ გენიალური პროგრამული უზრუნველყოფის შესახებ. თითოეულ ბლოგში მე მივმართავ სხვა აქსესუარს, რომელიც შეგიძლიათ დაამატოთ თქვენს HomeKit– ს ხიდის საჭიროების გარეშე. დროა გააკეთო სახლი
როტაციის ჟოლოს Pi ეკრანი და სენსორული ეკრანი: 4 ნაბიჯი
როტაციის ჟოლო Pi ეკრანი და სენსორული ეკრანი: ეს არის ძირითადი ინსტრუქცია, რომელიც გიჩვენებთ თუ როგორ უნდა გადაატრიალოთ ეკრანი და სენსორული ეკრანი ნებისმიერი Raspberry Pi– სთვის, რომელიც მუშაობს Buster Raspbian ოპერაციული სისტემით, მაგრამ მე ეს მეთოდი ჯესიის შემდეგ გამოვიყენე. მასში გამოყენებული სურათები ჟოლოს პიდან არის
Shelly 1 PM კონტროლირებადი დენის ზოლი / გაფართოების კაბელი: 4 ნაბიჯი
Shelly 1PM კონტროლირებადი დენის ზოლი / გაფართოების კაბელი: მე მაქვს რამდენიმე ძირითადი დენის ზოლი და მინდოდა გამხდარიყო ისინი უფრო ჭკვიანური უზარმაზარი ღირებულების გარეშე. შეიყვანეთ Shelly 1PM მოდული. ეს არის ძალიან ხელმისაწვდომი, მცირე და CE სერტიფიცირებული WIFI დაფუძნებული გადამრთველი. ყველაზე მნიშვნელოვანი ის არის, რომ მას ასევე აქვს ძალიან ზუსტი ძალა
ლაზერულად ამოტვიფრული 16 მმ-იანი ფილმის ზოლი: 4 ნაბიჯი
ლაზერულად ამოღებული 16 მმ-იანი ფილმის ზოლი: ეს არის ნაბიჯ-ნაბიჯ ინსტრუქცია იმის შესახებ, თუ როგორ უნდა მოხდეს ლაზერული გამოსახულების ანიმაცია 16 მმ-იან შავ ლიდერულ ფილმზე