Mundarija:

Loyihangizga elektron siyohli displeyni qanday qo'shish mumkin: 12 qadam (rasmlar bilan)
Loyihangizga elektron siyohli displeyni qanday qo'shish mumkin: 12 qadam (rasmlar bilan)

Video: Loyihangizga elektron siyohli displeyni qanday qo'shish mumkin: 12 qadam (rasmlar bilan)

Video: Loyihangizga elektron siyohli displeyni qanday qo'shish mumkin: 12 qadam (rasmlar bilan)
Video: 3 простых изобретения с двигателем постоянного тока 2024, Noyabr
Anonim
Loyihangizga elektron siyohli displeyni qanday qo'shish kerak
Loyihangizga elektron siyohli displeyni qanday qo'shish kerak
Loyihangizga elektron siyohli displeyni qanday qo'shish kerak
Loyihangizga elektron siyohli displeyni qanday qo'shish kerak

Ko'pgina loyihalar atrof -muhit ma'lumotlari kabi ma'lumotlarni nazorat qilishni o'z ichiga oladi, ko'pincha boshqaruv uchun Arduino -dan foydalanadi. Mening holatimda, men suv yumshatgichimdagi tuz darajasini kuzatmoqchi edim. Siz uy tarmog'i orqali ma'lumotlarga kirishni xohlashingiz mumkin, lekin siz uni o'lchanadigan joyda ko'rsatishni xohlashingiz mumkin. Yoki masofadan ulangan displey har doim qulayroq joyda bo'lishi mumkin.

Endi siz bir nechta turdagi displeylardan foydalanishingiz mumkin, hammasi juda arzon, lekin har xil afzallik va kamchiliklarga ega:

  • Harf -raqamli LCD displey eng arzon, lekin ayni paytda cheklangan.
  • OLED -displey grafikani ko'rsatishi mumkin, lekin arzonlari juda kichik. Ikkinchi fotosuratda E-Ink displeyi yonida 128x64 pikselli OLED-displey ko'rsatilgan.
  • Elektron siyoh (yoki elektron qog'oz) displeyi biroz kattaroq, shuning uchun o'qish osonroq va uning afzalligi shundaki, displey o'chirilgan bo'lsa ham saqlanib qoladi! Ammo displeyni qayta chizish uchun bir necha soniya kerak bo'ladi.

E-Ink displeyi mening ilovam uchun ideal bo'lib tuyuldi, chunki men Arduino-ni har bir necha soatda uyg'onish, o'qish va uyquga ketishdan oldin ko'rsatishni dasturlashim mumkin edi. Natijada, displeyni qayta chizish uchun bir necha soniya kerak bo'ladi.

Bunday dasturda, oqimning o'rtacha sarflanishi shunchalik past bo'ladiki, 9V lityum tutun detektori batareyasi 10 yilga yetadi! Bundan tashqari, ba'zi displeylarda uchta rang aks etadi: oq, qora va qizil (yoki sariq). Agar siz qizil rangda ogohlantirish yoki ogohlantirish ko'rsatmoqchi bo'lsangiz, ideal.

Ta'minotlar

Men topgan eng arzon E-Ink displeylari BuyDisplay tomonidan sotiladi, uni ko'plab eBay sotuvchilaridan ham olish mumkin. Afsuski, hujjatlar juda ko'p narsani talab qiladi, shuning uchun men darslik yozishni o'z zimmamga oldim - o'qing!

Sizning talablaringiz va byudjetingizga qarab, siz turli o'lchamlarni tanlashingiz mumkin:

  • 1,54 dyuym (152x152 = 23, 104 piksel)
  • 2,13 dyuym (212x104 = 22, 048 piksel)
  • 2,6 dyuym (296x152 = 44, 992 piksel)
  • 2,7 dyuym (176x264 = 46, 464 piksel)
  • 2,9 dyuym (296x128 = 37, 888 piksel)
  • 4,2 dyuym (400x300 = 120 000 piksel)
  • 5,83 dyuym (640x480 = 307, 200 piksel)
  • 7,5 dyuym (880x528 = 464, 640 piksel)

(O'tgan safar ko'rganimdan beri diapazon kengaygan, shuning uchun siz uni o'qiganingizda yanada kengaygan bo'lishi mumkin.)

Ular 2 rangli (qora/oq) yoki 3 ta (qora/qizil/oq yoki qora/sariq/oq) variantda mavjud. Ushbu ko'rsatma siz qizil rangdan foydalanayotganingizni taxmin qiladi, lekin agar siz sariq variantni tanlagan bo'lsangiz, "qizil" uchun "sariq" ni o'qing.

SPI (4 simli) versiyasini tanlang. Men 1,54 dyuymli modelni ishlatdim, bu juda chiroyli o'lcham.

1 -qadam: Displeyni ulash

Displeyni ulash
Displeyni ulash

Ushbu displeylar 2x4 pinli sarlavhaga ega. Pin raqamlari aniq belgilangan, 7, 5, 3 va 1 -pinlar (chapdan o'ngga) yuqori satr bo'ylab va 8, 6, 4, 2 pastda.

Sizning displeyingizda 8 tomonlama patch kabeli bo'lishi mumkin, bu ulanishni osonlashtiradi. (Mening patch kabelida 2 ta qizil sim va 2 ta jigarrang rang bor. Ular bir -birining o'rnini bosa olmaydi!

Quyidagi jadval Arduino -ning ko'p turlariga (shu jumladan Uno, Pro Mini, Pro Micro va Nano) tegishli bo'lgan ulanishlarni ko'rsatadi.

Elektron siyoh moduli Arduino
Pin Ism Pin Ism
1 VDD Vcc 3.3/5V
2 VSS Gnd Gnd
3 Seriya ma'lumotlari kirdi 11 MOSI
4 Seriyali soat 13 SCK
5 /Chip tanlash 10
6 Ma'lumotlar/Instr 9
7 Qayta o'rnatish 8
8 Qurilma band 7

2 -qadam: Taqdim etilgan dasturiy ta'minotni yuklab oling

Siz taqdim etilgan dasturiy ta'minotni ushbu bosqichda tasvirlanganidek ishlatishingiz mumkin yoki keyingi bosqichda mening yaxshilangan kutubxonamdan foydalanishingiz mumkin.

BuyDisplay.com saytida qurilmangizni toping. Sahifaning pastki qismida siz "Arduino kutubxonasi va 4 simli SPI uchun namuna" ZIP faylini topasiz. Windows Explorer -da yuklab olish va ochish uchun ustiga bosing.

Windows Explorer buni "Libraries-Examples_ER-EPM0154-1R" yuqori darajali bitta papkani o'z ichiga oladi. (Agar sizniki 1.54 dyuymli bo'lmasa, ism biroz boshqacha bo'ladi.)

Ushbu yuqori darajadagi papkani Arduino kutubxonalari papkasiga nusxalash. Jild nomini o'zgartirish uchun sichqonchaning o'ng tugmachasini bosing va "Kutubxonalar-Misollar_" nomini o'chirib tashlang.

(Arduino kutubxonalari papkasini topish uchun Arduino IDE -da Fayl … Tanlovlar -ni bosing va Sketchbook joylashuviga e'tibor bering. Bu erga o'ting va siz eskiz papkalari orasidan Arduino "kutubxonalari" papkasini topasiz.)

Bu papkani oching va undagi "Kutubxonalar" papkasini oching. Bu papkadagi barcha fayllarni bir darajali yuqoridagi ota-papkaga tortib qo'ying ("ER-EPM0154-1R"). (Hozir bo'sh) "Kutubxonalar" jildini o'chirib tashlang.

Siz hozir Arduino kutubxonasi sifatida fayllar va imtihon eskizini o'rnatdingiz. E'tibor bering, agar sizning displeyingiz 1,54 dyuym bo'lmasa, farq faqat ER-ERM*-1.h da kenglik va balandlikni belgilaydigan ikkita satrda ko'rinadi.

Arduino IDE-da, Fayl … Misollar-ni bosing va ekranni Arduino-ga ulangandan so'ng, siz kompilyatsiya qilishingiz va ishga tushirishingiz kerak bo'lgan ER-EPM0154-1R-ga o'ting.

3 -qadam: Demoni ishga tushirish

Demoni ishga tushirish
Demoni ishga tushirish
Demoni ishga tushirish
Demoni ishga tushirish

Arduino IDE da Fayl … Misollar … ER-EPM0154-1R ni bosing.

Arduino -ni kompyuteringizga USB kabeli bilan ulang, yoki odatdagidek.

"Asboblar" bo'limida boshqaruv paneli, protsessor va portni o'rnating.

Sketch ostida Yuklash -ni bosing.

Yuklash tugagandan so'ng, biroz kechikish bo'ladi va birinchi tasvirni bo'yashda o'n marta kechikish paydo bo'ladi. Namoyish paytida tomosha qiling.

4 -qadam: Kengaytirilgan kutubxonadan foydalanish

Kengaytirilgan kutubxonamni github-dan https://github.com/p-leriche/E-ink_ER-EPM saytidan yuklab olishingiz mumkin.

N. B. Mening kutubxonam har qanday o'lchamdagi displey bilan ishlashiga ishonchim komil, lekin men uni faqat 1,54 dyuymli model bilan sinab ko'rdim. Agar siz boshqasini ishlatsangiz, iltimos, oxiridagi izohlarda menga xabar bering. Bu ko'rsatma, bu ishlayotganini tasdiqlash uchun, lekin agar u ishlamasa, men sizni borishga harakat qilaman.

Zip faylini yuklab oling va saqlang. Arduino IDE -da Sketch … Kutubxonani qo'shish -ni bosing. ZIP kutubxonasini qo'shing va saqlangan zip faylini tanlang.

Mening kutubxonamda bir nechta kichik yaxshilanishlar mavjud:

  • Bu turli xil Arduino pin raqamlarini ishlatishga imkon beradi (MOSIdan tashqari).
  • Xuddi shu kutubxonadan har qanday o'lchamdagi qurilmada foydalanish mumkin.
  • Yangi 50% soyali plomba va dog'li plomba (tasodifiy piksellar to'plami) taqdim etiladi.

Kutubxona standart Arduino siqilgan (zip) fayli sifatida keladi. Uni Yuklashlar papkasiga (yoki xohlagan joyingizga) yuklab oling va Arduino IDE -da "Chizma" ni bosing … Kutubxonani qo'shish … ZIP kutubxonasini qo'shish.

Misollar ostida siz endi E-ink_ER-EPM ni topasiz. 3 ta eskiz namunasi mavjud:

  • ER_EPM154-1R-Test: sotuvchi tomonidan taqdim etilgan asl namoyish
  • E-ink_demo: eskiz keyingi bosqichlarda ishlab chiqilgan
  • E-ink_rotate: tasvirning aylanishi namoyishi.

5 -qadam: uni o'zingiz dasturlash

Afsuski, sotuvchi tomonidan taqdim etilgan kod bilan hech qanday hujjat yo'q va misol kodi etarli darajada izohlanmagan. Bu uni ishlatishdan ko'ra qiyinlashtiradi va bu yo'riqnomaning asosiy maqsadi - bu to'g'ri qo'yish.

Asosiy tushunchalar

Arduino operativ xotira miqdori cheklanganligi sababli, kutubxona bir vaqtning o'zida ekranning kichik qismlarida chizish yoki yozish imkonini beradi, ularni alohida -alohida qurilmaning intermali xotirasiga yuklaydi. Sizga kerak bo'lgan barcha qismlarni yuklaganingizdan keyingina, uning xotirasida nima borligini ko'rsatish uchun aytasiz.

Ekranning bu bo'limlari "Paint" ob'ektlari sifatida tanilgan. Sizga faqat bittasi kerak va siz ekranning har bir qismi uchun uning balandligi, kengligi va aylanishini aniqlaysiz. Tugallangach, siz uni yuklaysiz, uni yuklash uchun ekrandagi pozitsiyani aniqlaysiz va u qora -oq yoki qizil -oq bo'lishi kerak.

Ekranning chap yuqori burchagida gorizontal (x) va vertikal (y) koordinatalar (0, 0), chap pastki (0, 151) va yuqori o'ng (151, 0).

Boshlanish

Arduino IDE-da E-ink_demo eskizini oching va men kutubxonadan qanday foydalanishni tasvirlab beraman.

Eskizning yuqori qismida siz har doim kerak bo'lgan quyidagi satrlarni ko'rasiz:

#include <SPI.h #include "ER-ERM0154-1.h" #include "imagedata.h" #include "epdpaint.h" #define COLORED 0 #define UNCOLORED 1 Epd epd;

#Include qatorlari kerakli kutubxonalarni oladi. SPI.h-bu standart Arduino kutubxonasi, ammo boshqalar elektron siyoh kutubxonasining bir qismini tashkil qiladi.

Rangsiz (oq) piksellar va Rangli (qora yoki qizil) nomlarini belgilaymiz. (Evropalik hamkasblarimga eslatma: COLOR amerikalik imlosi ishlatiladi.)

Epd epd; line biz ko'rsatadigan elektron qog'oz qurilmasi ob'ektini yaratadi. Setup () va loop () funktsiyalari mavjud bo'lishi uchun bu eskiz boshida bo'lishi kerak.

Agar sizda boshqa o'lchamli displey bo'lsa, siz EPD liniyasini quyidagicha o'zgartirishingiz mumkin:

Epd epd (kenglik, balandlik);

(#define iboralarida ilgari WIDTH va HEIGHT ni aniqlagan.)

Xuddi shu tarzda siz standart bo'lmagan pin raqamlarini ko'rsatishingiz mumkin:

Epd epd (WIDTH, HEIGHT, BUSY_PIN, RESET_PIN, DC_PIN, CS_PIN);

Setup () ichida biz qurilmani quyidagicha ishga tushirishimiz kerak:

Serial.begin (9600)

if (epd. Init ()! = 0) {Serial.print ("e-Paper init muvaffaqiyatsiz tugadi"); qaytish; }

(Aslida, epd. Init () hech qachon xatolikni qaytarmaydi, lekin kelajakda takomillashtirish displeyning yo'qligini yoki ishlamayotganligini aniqlay oladi.)

6 -qadam: Matn yozish

Matn yozish
Matn yozish

E-ink_demo-da, e'tiboringizni loop () ga qarating. Birinchidan, displeyni tozalaymiz:

epd. ClearFrame ()

(Agar siz o'z rasmingizni namoyish qilmoqchi bo'lsangiz, bu kerak emas.)

Biror narsani chizishdan oldin (matn yoki grafik bo'lsin) biz chizish uchun Paint obyektini yaratishimiz kerak:

imzosiz belgi tasviri [1024]

Bo'yoq bo'yog'i (rasm, 152, 18); // kenglik 8 ga ko'p bo'lishi kerak

Bu bo'sh joyni (1024 bayt) zaxiraga oladi va uni ikkinchi qatorda to'xtatilgan Paint ob'ektiga ajratadi. Bu vaqtincha kengligi 152 piksel va chuqurligi 18 piksel qilib sozlangan. Biz uni keyinchalik kerak bo'lganda qayta ishlatish uchun konfiguratsiya qilishimiz mumkin, lekin e'tibor bering: kengligi 8 barobar bo'lishi kerak, chunki baytda 8 piksel saqlanadi va biz baytlarni ajratolmaymiz. (Agar kerak bo'lsa, bu aslida uni yumalaydi, lekin displeyingiz qanday ko'rinmasligini o'ylab topsa, bu ajablantirishi mumkin.

Endi biz bo'yoq ob'ektini Rangsiz (oq) rangga tozalashimiz kerak, keyin (x, y) = (22, 2) pozitsiyasida "e-ink Demo" ni 16 pikselli yuqori shrift yordamida yozamiz va Rangli (ekranga qarshi ko'rsatish uchun) Rangsiz fon.

bo'yoq. Toza (Rangsiz)

paint. DrawStringAt (12, 2, "e-paper Demo", & Font16, COLORED);

E'tibor bering, koordinatalar (22, 2) satrning birinchi belgisining yuqori chap burchagi bo'lib, butun ob'ekt emas, balki bo'yash ob'ektining yuqori chap burchagiga nisbatan 22 piksel va pastda 2 piksel.. Matn bo'yoq ob'ektining yuqori qismidan kamida bitta piksel pastga yaxshi ko'rinadi.

Quyidagi shriftlar mavjud:

Shrift8 - 5x8 piksel Shrift12 - 7x12 piksel Shrift16 - 11x16 piksel Shrift20 - 14x20 piksel Shrift24 - 17x24 piksel

Endi biz faqat bo'yoq ob'ektini ("bo'yoq") qurilmaga ("epd") yuborishimiz kerak:

epd. SetPartialWindowBlack (paint. GetImage (), 0, 3, paint. GetWidth (), paint. GetHeight ());

SetPartialWindowBlack - bu epd ob'ektiga rasm va uning bo'yoq ob'ektining kengligi va chuqurligi xususiyatlaridan foydalangan holda qo'llaniladigan usul. Biz bu tasvirni qurilmaga yozishni aytamiz (x, y) = (0, 3). Va biz Rangli piksellar qora bo'lishi kerakligini aytamiz.

Bu unchalik qiyin emas edi, to'g'rimi? Keling, boshqasini sinab ko'raylik.

bo'yoq Toza (Rangli);

paint. DrawStringAt (20, 2, "(Oq rangda)", & Font12, RANGSIZ); epd. SetPartialWindowRed (paint. GetImage (), 0, 24, paint. GetWidth (), paint. GetHeight ());

Biz bir xil bo'yoq ob'ektini, bir xil kenglik va balandlikni qayta ishlatamiz, lekin bu safar uni Rangli qilib tozalab, unga RANKSIZ satr yozamiz. O'zgarish uchun biz Rangli piksellarni qizil qilib, qurilmaga (0, 24) birinchisidan pastda yozamiz.

Biz ikkita bo'yoq ob'ektini qurilmaning xotirasiga yozganmiz, lekin uni ko'rsatishni hali aytmaganmiz. Biz buni quyidagi bayonot bilan qilamiz:

epd. DisplayFrame ();

(E-ink_demo eskizida biz buni oxirigacha qoldiramiz, yana bir qancha narsalarni chizamiz, lekin agar xohlasangiz, bu erga kiritishingiz mumkin, keyin mybe va kechikish (10000); sizga qo'l mehnatingizga qoyil qolish uchun vaqt berish uchun.

7 -qadam: chiziqlar va to'rtburchaklar chizish

Chiziqlar va to'rtburchaklar chizish
Chiziqlar va to'rtburchaklar chizish

Keling, qanday qilib chiziqlar va to'rtburchaklar chizish kerakligini ko'rib chiqaylik. Biz xuddi shu bo'yoq ob'ektini ishlatamiz, lekin biz uni kengligi 40 piksel va balandligi 36 piksel qilib qayta sozlashimiz kerak. Biz uni UNCOLORED -ga tozalaymiz.

bo'yoq. SetWidth (40);

bo'yoq. SetHeight (36); bo'yoq. Toza (Rangsiz);

Biz odatdagidek bo'yoq ob'ektiga nisbatan yuqori chap burchagi (5, 3) va pastki o'ng tomoni (35, 33) bo'lgan (Rangli) to'rtburchaklar chizamiz. Shuningdek, biz uning diagonallarini (5, 3) dan (35, 33) gacha va (35, 3) dan (5, 33) gacha chiziqlar sifatida chizamiz. Nihoyat, biz butun bo'yoq ob'ektini (qizil) ekranga (32, 42) yozamiz.

// TOP qator:

// To'rtburchaklar bo'yoq. Toza (Rangsiz); bo'yoq. DrawRectangle (5, 3, 35, 33, Rangli;) bo'yoq. DrawLine (5, 3, 35, 33, Rangli); bo'yoq. DrawLine (35, 3, 5, 33, Rangli); epd. SetPartialWindowRed (paint. GetImage (), 32, 42, paint. GetWidth (), paint. GetHeight ());

Kutubxona, xuddi shunday, to'ldirilgan to'rtburchakni taqdim etdi, lekin men soyali bo'lishni xohlardim, shuning uchun men yangi usulni qo'shdim. Biz yana ikkita to'rtburchaklar qilamiz, bittasi soyali va biri to'ldirilgan va ularni birinchisining o'ng tomoniga qo'yamiz, ularni qora va qizilga almashtiramiz.

// To'rtburchakli soyali bo'yoq. Tiniq (Rangsiz); bo'yoq. DrawShadedRectangle (5, 3, 35, 33); epd. SetPartialWindowBlack (paint. GetImage (), 72, 42, paint. GetWidth (), paint. GetHeight ()); // To'ldirilgan to'rtburchaklar bo'yoq. Toza (Rangsiz); bo'yoq. DrawFilledRectangle (5, 3, 35, 33, Rangli); epd. SetPartialWindowRed (paint. GetImage (), 112, 42, paint. GetWidth (), paint. GetHeight ());

8 -qadam: aylana chizish

Doira chizish
Doira chizish

Doira chizish ham shunchalik oson. Ikki burchakning koordinatalari o'rniga biz markazning koordinatalarini va radiusini oldinga surishimiz kerak. Biz bo'yoq ob'ektini tozalaymiz, keyin doira qo'yamiz (20, 15) (bo'yoq ob'ektiga nisbatan) va radius 15. Va soyali va to'ldirilgan doira uchun takrorlang.

// Ikkinchi qator

// Doira bo'yog'i. Clear (RENKSIZ); bo'yoq. DrawCircle (20, 18, 15, Rangli); epd. SetPartialWindowBlack (paint. GetImage (), 32, 78, paint. GetWidth (), paint. GetHeight ()); // Shadow Circle bo'yog'i. Tozalash (Rangsiz); bo'yoq. DrawShadedCircle (20, 18, 15); epd. SetPartialWindowRed (paint. GetImage (), 72, 78, paint. GetWidth (), paint. GetHeight ()); // To'ldirilgan doira bo'yog'i. Tiniq (RangSIZ); bo'yoq. DrawFilledCircle (20, 18, 15, Rangli); epd. SetPartialWindowBlack (paint. GetImage (), 112, 78, paint. GetWidth (), paint. GetHeight ());

9 -qadam: RANGI Bckground -da RANGSIZ

Rangsiz Bckground -da Rangsiz
Rangsiz Bckground -da Rangsiz

Biz bu erda mashhur bo'lib ketmoqdamiz! Shunday qilib, biz rulonda ekanmiz, keling, quyida ketma -ket yana 3 ta aylana qilaylik, bu safar matnning ikkinchi qatorida bo'lgani kabi, Rangsiz bo'yoq ob'ektiga Rangsiz.

// Uchinchi qator

// Doira bo'yog'i. Tiniq (Rangli); bo'yoq. DrawCircle (20, 18, 15, Rangsiz); epd. SetPartialWindowRed (paint. GetImage (), 32, 114, paint. GetWidth (), paint. GetHeight ()); // Shadow Circle bo'yog'i. Toza (Rangli) bo'yoq. DrawShadedCircle (20, 18, 15); epd. SetPartialWindowBlack (paint. GetImage (), 72, 114, paint. GetWidth (), paint. GetHeight ()); // To'ldirilgan doira bo'yog'i. Toza (Rangli); bo'yoq. DrawFilledCircle (20, 18, 15, Rangsiz); epd. SetPartialWindowRed (paint. GetImage (), 112, 114, paint. GetWidth (), paint. GetHeight ());

Soyali plomba bilan bir qatorda, tasodifiy piksellarni ranglantiruvchi dog'li plomba ham mavjud. Shunday qilib, yuqoridagi soyali doirani o'rniga qo'yishimiz mumkin edi

bo'yoq. DrawSpeckledCircle (20, 18, 15, 25);

Yakuniy parametr (25) - bu zichlik, ya'ni rangli piksellar ulushi. Agar tashlab yuborilsa, 50% qabul qilinadi.

Bundan tashqari, DrawSpeckledRectangle ham bor, uning ixtiyoriy ravishda qo'shimcha parametrlari ko'rsatilgan.

10 -qadam: aylanish

Aylanish
Aylanish
Aylanish
Aylanish

Biz chizishimiz mumkin bo'lgan hamma narsani biz 90, 180 yoki 270 daraja burishimiz mumkin. (Biz aylanishlarni soat yo'nalishi bo'yicha hisoblaymiz.)

Biz bo'yoq ob'ektiga ROTATE xususiyatini qo'llashimiz mumkin, lekin shuni tushunish kerakki, bu bo'yalgan ob'ekt emas, balki unga yozilgan hamma narsa. Agar siz vertikal matnni xohlasangiz, bo'yoq ob'ektini gorizontal emas, balki vertikal yo'nalishda uzun va ingichka qilib sozlashingiz kerak.

Agar siz matnni soat yo'nalishi bo'yicha 90 daraja burilishini xohlasangiz, u yuqoridan pastgacha o'qiladi (chapdan o'ngga emas), bo'yoq ob'ektining o'ng yuqori burchagi (0, 0) bo'ladi. yoki chizish, bu burchakdan pastga qarab x, va u burchakdan chapga.

Ehtimol, biz displeyning chap tomonida bo'sh joy qoldirganimizni payqadingiz. Keling, u erda 270 daraja burilgan matnni yozaylik, ya'ni pastdan yuqoriga o'qish. Bu (0, 0) pastki chap burchakka qo'yiladi.

E'tibor bering, agar siz bo'yoq ob'ektini aylantirsangiz, aylantirish faqat unga piksel chizganingizda qo'llaniladi. Siz uni qurilmaga yozmoqchi bo'lganingizda, u hali ham SetPartialWindow -ga berishingiz kerak bo'lgan yuqori chap burchakning koordinatalari.

Xulosa qilib aytadigan bo'lsak, bo'yoq ob'ektini kengligi 32 va balandligi 110 ga sozlaymiz va biz unga ROTATE_270 xususiyatini beramiz. Buning hammasini yozishdan yoki unga biror narsa chizishdan oldin qilishimiz shart emas.

bo'yoq. SetWidth (32);

bo'yoq. SetHeight (110); bo'yoq. SetRotate (ROTATE_270);

Biz uni COLORED rangiga tozalab, unga RANKSIZ satr yozamiz, keyin uni (0, 42) ga joylashtiramiz. (Bu chap burchakning yuqori burchagi, esda tuting. Undagi piksellarning burilishini unutmang.)

bo'yoq Toza (Rangli); paint. DrawStringAt (8, 8, "Yon tomonga!", & Font16, Rangsiz); epd. SetPartialWindowBlack (paint. GetImage (), 0, 42, paint. GetWidth (), paint. GetHeight ());

Nihoyat, biz qurilmaga biz bergan barcha piksellarni ko'rsatishini aytishimiz kerak. Va agar biz uni bir muddat o'zgartirmoqchi bo'lmasak va batareya quvvatini saqlamoqchi bo'lsak, biz uni uxlatib qo'yamiz va nima uchun Arduino -ni ham uyquga qo'ymasligimiz kerak, boshqasini olish va ko'rsatish vaqti kelganida uyg'onish kerak. o'lchash.

epd. DisplayFrame ();

uyqu ();

Ikkinchi misol eskizda 90, 180 va 270 daraja burilish ko'rsatilgan. Hozircha buni o'zingiz kuzatib borishingiz kerak.

11 -qadam: Bitmaplarni chizish

Bitmap chizish
Bitmap chizish

Sotuvchining demosi bir nechta bitmapli tasvirlarni ko'rsatishni o'z ichiga oladi. Bularni yuklab olish mumkin bo'lgan asbob yordamida yaratish oson

www.buydisplay.com/image2lcd

Bu.exe o'rnatish faylini va litsenziya kalitini o'z ichiga olgan matnli faylni o'z ichiga olgan zip -fayl sifatida keladi. Uni kengaytiring va o'rnatish uchun.exe faylini ikki marta bosing.

Ko'rinib turibdiki, siz ko'rsatadigan narsalarga nisbatan juda qattiq cheklovlar mavjud, chunki elektron siyoh piksellari faqat yoqilgan yoki o'chirilgan bo'lishi mumkin, shuning uchun kulrang rangni ko'rsatolmaydi. Rasmga to'rtburchaklar bo'yoqli ob'ektni yopish mumkin. Siz logotipni, belgilarni yoki sobit matnni chiroyli shriftda ko'rsatishni xohlashingiz mumkin, uning ustiga siz o'zgarmaydigan matn yoki grafikalar, masalan, chiziqli yoki pirogli diagramma qo'yishingiz mumkin.

Siz o'z rasmingizni o'zingiz bilgan har qanday dasturiy ta'minot yordamida yaratishingiz mumkin, yoki siz sketch yoki rasmda skanerlashingiz mumkin, lekin har qanday holatda ham uni faqat 2 darajaga tushirishingiz kerak. Uni.gif,-j.webp

Image2Lcd -ni ishga tushiring. Pastki qismida siz "Ro'yxatdan o'tish" yorlig'ini ko'rasiz. Buning ustiga bosing va siz yuklagan zip fayliga matnli faylda kelgan ro'yxatdan o'tish kodini kiriting. Bu rasm ustki qismini olib tashlaydi.

Image2Lcd -da rasm faylini oching. Chap panelda sizda borligiga ishonch hosil qiling

  • Chiqish fayl turi: C qatori
  • Tekshirish rejimi: Gorizontal ko'rish
  • BitsPixel: bitta rangli
  • Maksimal kenglik va balandlik: displeyingizning o'lchami va
  • Bosh ma'lumotlarini kiritish belgilanmagan bo'lishi kerak.

Qayta ishlash uchun Maksimal kenglik va balandlik yonidagi tugmani bosing. Qayta ishlash natijasi ko'rsatiladi. Eng yaxshi natijaga erishish uchun siz Yorqinlik va Kontrast slayderlarini sozlashingiz kerak bo'ladi.

Yorqinlik slayderining ustidagi "Reverse color" katakchasini bosing va negadir kerak bo'ladigan salbiy tasvirga aylantiring, so'ngra Arduino eskizini o'z ichiga olgan papkada imagedata.cpp sifatida saqlash uchun Saqlash -ni bosing. Keyingi safar eskizni Arduino IDE bilan ochsangiz, uni yangi tab sifatida ko'rishingiz kerak.

12 -qadam: Bitmapingizni ko'rsatish

Bitmapingiz ko'rsatilmoqda
Bitmapingiz ko'rsatilmoqda

Arduino eskizining asosiy fayliga, yuqoridagi #include satrlaridan so'ng, quyidagilarni kiriting:

#"imagedata.h" ni qo'shing

Yangi varaq yarating (tablar satrining oxiridagi pastdagi o'qni bosing) va uni imagedata.h deb chaqiring. Unga quyidagi 2 qatorni kiriting:

extern const unsigned char IMAGE_BLACK ;

extern const unsigned char IMAGE_RED ;

Imagedata.cpp faylida birinchi qator boshlanadi

const imzosiz char gImage_image [2888] = {

(Agar siz 1,54 dyuymli displeydan foydalanmasangiz, kvadrat qavs ichidagi raqamlar boshqacha bo'ladi.) Buni o'zgartiring

IMAGE_BLACK imzolanmagan belgi PROGMEM = {

Bu qora va oq tasvir uchun. Agar siz qizil va oq rangni xohlasangiz, uni o'zgartiring

IMAGE_RED imzosiz belgi

Bu qatordan oldin, qo'shing

#qo'shing

#"imagedata.h" ni qo'shing

Endi siz rasmingizni ko'rsatishga tayyormiz. Asosiy faylda loop () da qo'shing

epd. ClearFrame ();

epd. DisplayFrame (IMAGE_BLACK, NULL);

Yoki, agar siz yaratgan qizil tasvir bo'lsa, ikkinchi qator bo'lishi kerak

epd. DisplayFrame (NULL, IMAGE_RED);

Aslida, qizil va qora qismlarni Image2Lcd yordamida alohida aylantirish va ikkalasini ham ko'rsatish orqali birlashtirilgan qizil va qora tasvirni yaratishingiz mumkin.

epd. DisplayFrame (IMAGE_BLACK, IMAGE_RED);

Shu bilan birga, qora va oq tasvirda qora, qizil va oq rangda qizil deb belgilangan har qanday piksel qizil bo'ladi.

Nihoyat, siz o'z rasmingizni biz ilgari o'rgangan har qanday matn yoki grafik funktsiyalari bilan yopishingiz mumkin. Men Twitter -dagi dastagimni qo'shmoqchi edim, shuning uchun qo'shib qo'ydim

Bo'yoq bo'yog'i (rasm, 20, 152); // kenglik 8 ga ko'p bo'lishi kerak

bo'yoq. SetRotate (ROTATE_270); bo'yoq. Toza (Rangsiz); paint. DrawStringAt (20, 2, "@pleriche", & Font16, COLORED); epd. SetPartialWindowRed (paint. GetImage (), 0, 0, paint. GetWidth (), paint. GetHeight ()); epd. SetPartialWindowRed (paint. GetImage (), 0, 0, paint. GetWidth (), paint. GetHeight ()); epd. DisplayFrame ();

Tavsiya: