Mundarija:
- Ta'minotlar
- 1 -qadam: Displeyni ulash
- 2 -qadam: Taqdim etilgan dasturiy ta'minotni yuklab oling
- 3 -qadam: Demoni ishga tushirish
- 4 -qadam: Kengaytirilgan kutubxonadan foydalanish
- 5 -qadam: uni o'zingiz dasturlash
- 6 -qadam: Matn yozish
- 7 -qadam: chiziqlar va to'rtburchaklar chizish
- 8 -qadam: aylana chizish
- 9 -qadam: RANGI Bckground -da RANGSIZ
- 10 -qadam: aylanish
- 11 -qadam: Bitmaplarni chizish
- 12 -qadam: Bitmapingizni ko'rsatish
Video: Loyihangizga elektron siyohli displeyni qanday qo'shish mumkin: 12 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:23
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
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
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
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
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 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
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
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
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
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:
IQ masofadan boshqarish pultini dinamik tizimiga qanday qo'shish mumkin: 5 qadam (rasmlar bilan)
IQ masofadan boshqarish pultini karnay tizimiga qanday qo'shish mumkin: Ushbu loyihada men uy qurilishi IR masofadan boshqarish pulti yordamida simsiz boshqarish uchun dinamik tizimim uchun qanday qo'shimcha zanjir yaratganimni ko'rsataman. Qani boshladik
Qanday qilib 3D printerga har qanday turdagi LEDni osongina qo'shish mumkin: 8 qadam (rasmlar bilan)
Qanday qilib 3D printerga har qanday turdagi LEDni osongina qo'shish mumkin: Sizda podvalda chang to'playdigan zaxira LEDlar bormi? Printeringiz bosib chiqarayotgan narsalarni ko'ra olmaslikdan charchadingizmi? Yana qarab turmang, bu ko'rsatma sizga printerning yuqori qismiga LED yorug'lik chizig'ini qo'shishni o'rgatadi
Elektron siyohli krujka: 8 qadam (rasmlar bilan)
Elektron siyohli krujka: Bu o'z-o'zidan miyamga joylashtirilgan aqldan ozgan g'oyalardan biri. Men o'yladim, agar siz tezda sozlashingiz mumkin bo'lgan qahva krujkasi bo'lsa, ajoyib bo'larmidi? U oddiy kofe chashka o'xshardi. Men qidiruv qildim va
Palto yoki boshqa kiyimga EL simini qanday qo'shish mumkin: 10 qadam (rasmlar bilan)
Palto yoki boshqa kiyimga EL simini qanday qo'shish kerak: Yorug'likdagi kostyumlar dizayneri sifatida men o'zimning EL simli kostyumlar yasashni bilmoqchi bo'lgan odamlardan ko'plab savollar olaman. Men hammaga alohida yordam berishga vaqtim yo'q, shuning uchun men o'z maslahatlarimni bitta ko'rsatmaga jamlayman deb o'yladim. Umid qilamanki, th
SUMOBOT -ga bamperlarni qanday qo'shish mumkin: 9 qadam (rasmlar bilan)
SUMOBOT -ga bamperlarni qanday qo'shish mumkin: siz buni qila olasiz, agar u robot ustidagi bamperlardan biriga tegsa, u teskari bo'lib, ob'ektdan yuz o'giradi