Мазмұны:
- 1 -қадам: Қолданылған ресурстар
- 2 -қадам: Дисплей
- 3 -қадам: SSD1306 кітапханасы
- 4 -қадам: Анимация және XBM файлдары
- 5 -қадам: XBM файлдарынан шығу
- 6 -қадам: бастапқы код
- 7 -қадам: кодтың жүктелуін жасау
- 8 -қадам: файлдар
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:26
Бұл ESP32 LoRa -ға кіріспе туралы тағы бір бейне. Бұл жолы біз графикалық дисплей туралы айтатын боламыз (128x64 пиксель). Біз SSD1306 кітапханасын осы OLED дисплейінде ақпаратты көрсету үшін қолданамыз және XBM кескіндерін қолдана отырып анимация үлгісін ұсынамыз.
1 -қадам: Қолданылған ресурстар
1 Heltec WiFi LoRa 32
Protoboard
2 -қадам: Дисплей
Әзірлеу тақтасында қолданылатын дисплей - 0,96 дюймдік OLED.
Оның өлшемі 128х64 және монохромды.
Ол I2C байланысына ие және ESP32 -ге 3 сым арқылы қосылады:
GPIO4 бойынша SDA (деректер үшін)
GPIO15 бойынша SCL (сағат үшін)
GPIO16 бойынша RST (қалпына келтіру және дисплейдің басталуы үшін)
3 -қадам: SSD1306 кітапханасы
Мұны Heltec-Aaron-Lee ұсынған кітапханалар жиынтығынан табуға болады.
Оның жолдарды жазуға, сызықтарды салуға, тіктөртбұрыштарға, шеңберлерге және кескіндерді көрсетуге арналған бірнеше функциялары бар.
github.com/Heltec-Aaron-Lee/WiFi_Kit_series
4 -қадам: Анимация және XBM файлдары
Біз анимацияны көрсету үшін кітапхананың drawXbm функциясын қолданамыз.
XBM кескін форматы он алтылық мән бойынша әр элемент бір түсті пиксельдер жиынтығын (әрқайсысы 1 бит) мәтін түрінде көрсететін таңбалар жиымынан тұрады. Бұлар бір байтқа тең.
Бір байтты білдіру үшін бірнеше таңба қолданылғандықтан, бұл файлдар қазіргі уақытта қабылданған форматтардан үлкен болады. Артықшылығы - оларды алдын ала емделусіз тікелей құрастыруға болады.
Массивке қосымша ретінде кескін өлшемін анықтайтын екі параметр енгізілген.
Анимацияны құру үшін бізге кадрларды құрайтын суреттер қажет.
Біз жұмысқа кірісу үшін суретті өңдеуге арналған кез келген бағдарламалық жасақтаманы қолдана аламыз. Жалғыз сақтық шаралары - алдымен дисплеймен үйлесімді өлшемді сақтау және монохромды файлдарды қолдану.
Файлдарды құру үшін біз оларды саламыз немесе кескіндерді импорттай аламыз. Мұнда біз PaintBrush көмегімен түрлі түсті суретті өңдеуге шешім қабылдадық және біз кадрлардың әрқайсысын салдық
Түпнұсқа сурет - 960x707 пиксель --p.webp
Келесі қадам - монохромды нүктелік кескін ретінде сақтау арқылы оны монохромды ету.
Содан кейін біз оны дисплейге сәйкес келетін өлшемге өзгертеміз.
Өлшем бірліктеріне ерекше назар аударыңыз. Бұл жағдайда біз кескінді дисплейдің бүкіл биіктігін алатындай етіп реттедік (тік = 64 пиксель).
Кескін дұрыс өлшемде болса, біз кадрларды қалыптастыру үшін оны өңдейміз. Мұнда біз сигнал деңгейінің әр доғасын өшіреміз және оларды сәйкес кадрлар ретінде сақтаймыз.
Енді біз BMP файлдарын XBM форматына түрлендіруіміз керек.
Бұл түрлендіруді жасай алатын бірнеше бағдарламалық жасақтама бар. Біз GIMP -ді редактор ретінде таңдадық.
Біздің мысалда біз файлдарды құру және өңдеу үшін PaintBrush қолдандық. Алайда, бұл процестердің әрқайсысы Gimp -те (немесе кез келген басқа редакторда) жасалуы мүмкін еді.
Түрлендіру үшін алдымен файлды ашамыз.
Сурет ашық болғанда, біз Файл => Экспорттауды таңдай аламыз …
Кескінді экспорттау терезесінде біз XBM үшін тағайындалған файл кеңейтімін өзгертуіміз керек. Gimp қалаған форматты анықтауға және қосымша опцияларды ұсынуға жауапты болады …
Экспорттау кезінде Gimp басқа опцияларды ұсынады. Біз әдепкі мәндерді қалдыра аламыз.
Барлық файлдарды түрлендіргеннен кейін бізде әрбір кадрға бір XBM форматындағы төрт файл болады.
Енді оларды бастапқы код қалтасына көшіріп, кеңейтімдерін.h деп өзгерту арқылы олардың атын өзгертейік.
5 -қадам: XBM файлдарынан шығу
Біз XBM файлдарын кез келген мәтіндік редакторда аша аламыз, онда біз бұрыннан анықталған сурет матрицасы мен сурет өлшемі туралы ақпаратты көреміз.
6 -қадам: бастапқы код
Бастапқы код: мәлімдемелер
Біз қажетті кітапханаларды, сонымен қатар сурет файлдарын қосамыз. Біз кескіннің орнын және ауысу аралығын анықтаймыз. Біз сондай -ақ ESP32 қосылған OLED түйреуіштерін көрсетеміз. Соңында біз Display объектісін құрамыз және реттейміз.
// Incluindo as bibliotecas needárias #include #include «SSD1306.h» // Incluindo os arquivos de imagem #include «frame1.h» #include «frame2.h» #include «frame3.h» #include «frame4.h» // анықтамалар posXão da imagem e intervalo de transição #define posX 21 #define posY 0 #fine interval 500 - GPIO16 #SDA 4 анықтаңыз #SCL 15 анықтаңыз #RST 16 анықтаңыз // SSD1306 дисплейінің бағдарламалық жасақтамасының бақылауы (0x3c, SDA, SCL, RST); // Объективті дисплей
Бастапқы код: Орнату ()
Дисплейді инициализациялаңыз және экранды тігінен төңкеріңіз. Әрекет міндетті емес.
void setup () {display.init (); // inicia o display display.flipScreenVertically (); // телевидениеге инвертті емес (міндетті емес)}
Бастапқы код: Loop ()
Циклда жасалатын бірінші нәрсе - экранды тазарту. 1 кадрды буферге posX және posY бастапқы позициялары арқылы жүктейміз. Кескіннің өлшемін frame1_width және frame1_height арқылы және кескіннің биттерін қамтитын массивтің атауымен хабарлаймыз. Біз дисплейде буферді көрсетеміз және келесі кадрды көрсетпес бұрын интервал күтеміз.
void loop () {display.clear (); // лимфа тела // каррега пара -буфер немесе кадр 1 // қолданба posX e posY // ақпараттың кеңістігі1_width e frame1_height // ақпарат o nome da matriz que contem os bits da imagem, caso frame1_bits жоқ display.drawXbm (posX, posY, frame1_width, frame1_height, frame1_bits); // mostra o буферінде дисплей жоқ.display (); // жақтауды кешіктіру (интервал);
Біз барлық басқа кадрлар үшін процедураны қайталаймыз.
// display.clear (); display.drawXbm (posX, posY, frame2_width, frame2_height, frame2_bits); display.display (); кідіріс (интервал); display.clear (); display.drawXbm (posX, posY, frame3_width, frame3_height, frame3_bits); display.display (); кідіріс (интервал); display.clear (); display.drawXbm (posX, posY, frame4_width, frame4_height, frame4_bits); display.display (); кідіріс (интервал); }
7 -қадам: кодтың жүктелуін жасау
IDE ашық болғанда,.ino файлын екі рет басу немесе Файл мәзіріне өту арқылы бастапқы коды бар файлды ашыңыз.
Heltec USB -ге қосылған кезде Tools => Card мәзірін таңдаңыз: «Heltec_WIFI_LoRa_32»
Құралдар мәзірінде Heltec қосылған COM портын таңдаңыз.
ЖҮКТЕУ түймесін басыңыз …
… Және қорытындысын күтіңіз.
8 -қадам: файлдар
Файлдарды жүктеңіз:
МЕН ЖОҚ
Ұсынылған:
OLED дисплейі бар ESP32 GPS трекері: 7 қадам
OLED дисплейі бар ESP32 GPS трекері: бұл OLED дисплейіндегі барлық позициялық деректерді көрсететін GPS трекері. Түйме пайдаланушыға OLED интерфейсімен әрекеттесуге көмектеседі. Сәлеметсіз бе, балалар? Akarsh мұнда CETech -тен.Код мәзірге негізделген бағдарламаны борттық батырманың көмегімен ұсынады
Arduino мен TFT дисплейі арқылы нақты уақытты қалай жасауға болады - 3,5 дюймдік TFT дисплейі бар Arduino Mega RTC: 4 қадам
Arduino мен TFT дисплейі көмегімен нақты уақытты қалай жасауға болады | 3,5 дюймдік TFT дисплейі бар Arduino Mega RTC: Менің Youtube каналыма кіріңіз. Кіріспе:- Бұл жазбада мен 3,5 дюймдік TFT сенсорлы СКД, Arduino Mega көмегімен «Нақты уақыттағы сағат» жасаймын. 2560 және DS3231 RTC модулі… .Бастамас бұрын… бейнесін менің YouTube каналымнан қараңыз .. Ескерту:- Егер сіз Arduin қолдансаңыз
ESP32 -ге кіріспе: 10 қадам
ESP32 -ге кіріспе: Бұл мақалада біз ESP8266 -ның үлкен ағасы деп есептейтін ESP32 туралы айтатын боламыз. Маған бұл микроконтроллер өте ұнайды, себебі WiFi бар. Сізде идея бар, ESP пайда болғанға дейін, егер сізге WiFi болуы үшін Arduino қажет болса, сіз
Кіріспе LoRa және модуль RFM95 / RFM95W Hoperf: 5 қадам
Кіріспе LoRa & Module RFM95 / RFM95W Hoperf: Бұл мүмкіндікте біз LoRa & сауда туралы қысқаша сипаттама жасаймыз; және, атап айтқанда, Hoperf Electronics шығарған RFM95/96 радиосы. Бірнеше ай бұрын 2 модуль келгендіктен, мен алдымен осы тақырып бойынша кіріспе жасағым келеді
ESP32 және OLED дисплейі: Интернет сағаты - DHT22: 10 қадам (суреттермен)
ESP32 және OLED дисплейі: Интернет сағаты - DHT22: Бұл нұсқаулық бәсекеге түседі: " GIFs Challenge 2017 ", егер сізге ұнаса, жоғарыдағы баннерді басу арқылы өз дауысыңызды беріңіз. Үлкен рахмет! ;-) Бұл оқулық-бұл IoT құрылғысы туралы көбірек білу үшін саяхаттың жалғасы