Სარჩევი:

შესავალი ESP32 Lora OLED ეკრანი: 8 ნაბიჯი
შესავალი ESP32 Lora OLED ეკრანი: 8 ნაბიჯი

ვიდეო: შესავალი ESP32 Lora OLED ეკრანი: 8 ნაბიჯი

ვიდეო: შესავალი ESP32 Lora OLED ეკრანი: 8 ნაბიჯი
ვიდეო: #2 FLProg Basics Elements & Trigger | ESP32 NodeMCU | Arduino ვიზუალური ჩაშენებული პროგრამირება 2024, ნოემბერი
Anonim
Image
Image
შესავალი ESP32 Lora OLED ეკრანი
შესავალი ESP32 Lora OLED ეკრანი

ეს არის კიდევ ერთი ვიდეო ESP32 LoRa– ს შესავლის შესახებ. ამჯერად, ჩვენ კონკრეტულად ვისაუბრებთ გრაფიკულ ჩვენებაზე (128x64 პიქსელით). ჩვენ გამოვიყენებთ SSD1306 ბიბლიოთეკას ამ OLED ეკრანზე ინფორმაციის საჩვენებლად და წარმოვადგენთ ანიმაციის მაგალითს XBM სურათების გამოყენებით.

ნაბიჯი 1: გამოყენებული რესურსები

გამოყენებული რესურსები
გამოყენებული რესურსები

1 Heltec WiFi LoRa 32

პროტობორდი

ნაბიჯი 2: ჩვენება

Დისპლეი
Დისპლეი
Დისპლეი
Დისპლეი

ეკრანი, რომელიც გამოიყენება განვითარების დაფაზე, არის OLED 0.96 ინჩი.

მას აქვს 128x64 და არის მონოქრომული.

მას აქვს I2C კომუნიკაცია და უკავშირდება ESP32– ს 3 მავთულის საშუალებით:

SDA GPIO4– ზე (მონაცემებისთვის)

SCL GPIO15– ზე (საათისათვის)

RST GPIO16– ზე (გადატვირთვისა და ჩვენების დაწყებისათვის)

ნაბიჯი 3: SSD1306 ბიბლიოთეკა

SSD1306 ბიბლიოთეკა
SSD1306 ბიბლიოთეკა

ამის ნახვა შეგიძლიათ ჰელტეკ-აარონ-ლის მიერ მოწოდებულ ბიბლიოთეკებთან ერთად.

მას აქვს რამდენიმე ფუნქცია სტრიქონების წერის, ხაზების, ოთხკუთხედების, წრეების და სურათების ჩვენებისათვის.

github.com/Heltec-Aaron-Lee/WiFi_Kit_series

ნაბიჯი 4: ანიმაცია და XBM ფაილები

ანიმაცია და XBM ფაილები
ანიმაცია და XBM ფაილები
ანიმაცია და XBM ფაილები
ანიმაცია და XBM ფაილები
ანიმაცია და XBM ფაილები
ანიმაცია და XBM ფაილები

ჩვენ გამოვიყენებთ ბიბლიოთეკის drawXbm ფუნქციას ანიმაციის საჩვენებლად.

XBM გამოსახულების ფორმატი შედგება სიმბოლოების მასივისგან, სადაც თითოეული ელემენტი ტექსტულად წარმოადგენს მონოქრომული პიქსელების ნაკრებებს (თითოეული 1 ბიტი), ჰექსადეციალური მნიშვნელობის მეშვეობით. ეს უდრის ერთ ბაიტს.

ვინაიდან მრავალი სიმბოლო გამოიყენება ერთი ბაიტის გამოსახატავად, ეს ფაილები უფრო დიდია ვიდრე ამჟამად მიღებული ფორმატებიდან. უპირატესობა ის არის, რომ მათი შედგენა შესაძლებელია უშუალოდ წინასწარი მკურნალობის გარეშე.

მასივის გარდა, შედის ორი პარამეტრი, რომელიც განსაზღვრავს სურათის ზომას.

ანიმაციის შესაქმნელად, ჩვენ გვჭირდება სურათები, რომლებიც ქმნიან ჩარჩოებს.

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

ფაილების შესაქმნელად, ჩვენ შეგვიძლია დავხატოთ ისინი ან შემოვიტანოთ სურათები. აქ ჩვენ გადავწყვიტეთ შეცვალოთ ფერადი სურათი PaintBrush– ის გამოყენებით და ჩვენ დავხატეთ თითოეული ჩარჩო

ორიგინალური სურათი - 960x707 პიქსელი --p.webp

შემდეგი ნაბიჯი არის მისი მონოქრომული შენახვა მონოქრომული ბიტმაპის სახით.

შემდეგ, ჩვენ ვცვლით მას ეკრანთან თავსებადი ზომით.

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

სურათის სწორი ზომით, ჩვენ შევასწორებთ მას ჩარჩოების შესაქმნელად. აქ ჩვენ ვშლით სიგნალის დონის თითოეულ რკალს და ვინახავთ მათ შესაბამის ჩარჩოებად.

ახლა ჩვენ უნდა გადავიყვანოთ BMP ფაილები XBM ფორმატში.

არსებობს რამოდენიმე პროგრამული ვარიანტი, რომელსაც შეუძლია ამ გარდაქმნის გაკეთება. ჩვენ ასევე შევარჩიეთ GIMP, როგორც რედაქტორის ვარიანტი.

ჩვენს მაგალითში ჩვენ გამოვიყენეთ PaintBrush ფაილების გენერირებისა და რედაქტირებისთვის. ამასთან, თითოეული ეს პროცესი შეიძლება გაკეთდეს Gimp– ში (ან სხვა რედაქტორში).

კონვერტაციისთვის, ჩვენ პირველად ვხსნით ფაილს.

როდესაც სურათი ღიაა, ჩვენ შეგვიძლია ავირჩიოთ ფაილი => ექსპორტი როგორც…

ექსპორტის სურათის ფანჯარაში ჩვენ უნდა შევცვალოთ დანიშნულების ფაილის გაფართოება XBM– სთვის. Gimp იქნება პასუხისმგებელი სასურველი ფორმატის იდენტიფიცირებასა და მეტი ვარიანტის წარმოდგენაზე…

ექსპორტისას Gimp წარმოგიდგენთ სხვა ვარიანტებს. ჩვენ შეგვიძლია დავტოვოთ ნაგულისხმევი მნიშვნელობები.

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

ახლა მოდით გადავაკოპიროთ ისინი კოდის საქაღალდეში და გადაარქვათ სახელი მათ გაფართოებებს.h.

ნაბიჯი 5: XBM ფაილებიდან გასვლა

XBM ფაილებიდან გასვლა
XBM ფაილებიდან გასვლა

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

ნაბიჯი 6: საწყისი კოდი

წყაროს კოდი: განცხადებები

ჩვენ ჩავრთავთ საჭირო ბიბლიოთეკებს, ასევე გამოსახულების ფაილებს. ჩვენ განვსაზღვრავთ სურათის პოზიციებს და გადასვლის ინტერვალს. ჩვენ ასევე მივუთითებთ OLED ქინძისთავებს, რომლებიც დაკავშირებულია ESP32- თან. დაბოლოს, ჩვენ ვქმნით და ვარეგულირებთ ჩვენების ობიექტს.

// ჩართეთ ბიბლიოთეკების საჭიროებისათვის #მოიცავს #მოიცავს "SSD1306.h" // მოიცავს სურათს #მოიცავს #frame1.h " #მოიცავს" frame2.h " #მოიცავს" frame3.h " #მოიცავს" frame4.h " // განსაზღვრება სურათების გადაცემის ინტერვალით #განსაზღვრეთ posX 21 #განსაზღვრეთ posY 0 #განსაზღვრეთ ინტერვალი 500 // Pinos do OLED estão conctados ao ESP32: I2C // OLED_SDA - GPIO4 // OLED_SCL - GPIO15 // OLE - GPIO16 #define SDA 4 #define SCL 15 #define RST 16 // O RST deve ser controlado for software SSD1306 display (0x3c, SDA, SCL, RST); // Cria e ajusta o Objeto ჩვენება

წყაროს კოდი: Setup ()

ეკრანის ინიციალიზაცია და ეკრანის ვერტიკალური შებრუნება. მოქმედება არჩევითია.

void setup () {display.init (); // inicia o display display.flipScreenVertically (); // inverte verticalmente a tela (opcional)}

წყაროს კოდი: მარყუჟი ()

პირველი რაც უნდა გააკეთოთ მარყუჟში არის ეკრანის გასუფთავება. ჩარჩო 1 ჩავტვირთავთ ბუფერში posX და posY საწყისი პოზიციების გამოყენებით. ჩვენ ვაცნობებთ სურათის ზომას frame1_width და frame1_height და მასივის სახელს, რომელიც შეიცავს სურათის ბიტებს. ჩვენ ვაჩვენებთ ბუფერს ეკრანზე და ველოდებით ინტერვალს შემდეგი კადრის ჩვენებამდე.

void loop () {display.clear (); // limpa tela // carrega para o buffer o frame 1 // usando as posições iniciais posX e posY // informa o tamanho da imagem com frame1_width e frame1_height // informa o nome da matriz que თანამედროვე os bits da imagem, no caso frame1_bits display.drawXbm (posX, posY, frame1_width, frame1_height, frame1_bits); // mostra o buffer არ არის display.display (); // aguarda um intervalo antes de mostrar o próximo ჩარჩოს დაყოვნება (ინტერვალი);

ჩვენ ვიმეორებთ პროცესს ყველა სხვა ჩარჩოსთვის.

// გამეორება პროცესის გასვლისას ჩარჩოების ჩვენება. ნათელია (); display.drawXbm (posX, posY, frame2_width, frame2_height, frame2_bits); ჩვენება. ჩვენება (); შეფერხება (ინტერვალი); ჩვენება. ნათელი (); display.drawXbm (posX, posY, frame3_width, frame3_height, frame3_bits); ჩვენება. ჩვენება (); შეფერხება (ინტერვალი); ჩვენება. ნათელი (); display.drawXbm (posX, posY, frame4_width, frame4_height, frame4_bits); ჩვენება. ჩვენება (); შეფერხება (ინტერვალი); }

ნაბიჯი 7: კოდის ჩატვირთვა

კოდის ჩატვირთვა
კოდის ჩატვირთვა
კოდის ჩატვირთვა
კოდის ჩატვირთვა
კოდის ჩატვირთვა
კოდის ჩატვირთვა

IDE ღიაა, გახსენით ფაილი წყაროს კოდით.ino ფაილზე ორჯერ დაწკაპუნებით, ან ფაილის მენიუში გადასვლით.

USB– თან დაკავშირებული Heltec– ით აირჩიეთ მენიუ Tools => Card: "Heltec_WIFI_LoRa_32"

ჯერ კიდევ Tools მენიუში აირჩიეთ COM პორტი, სადაც Heltec არის დაკავშირებული.

დააწკაპუნეთ UPLOAD ღილაკზე…

… და დაელოდეთ დასკვნას.

ნაბიჯი 8: ფაილები

ჩამოტვირთეთ ფაილები:

PDF

ინო

გირჩევთ: