Mündəricat:

Layihənizə E-Mürekkep Ekranı necə əlavə etmək olar: 12 addım (şəkillərlə)
Layihənizə E-Mürekkep Ekranı necə əlavə etmək olar: 12 addım (şəkillərlə)

Video: Layihənizə E-Mürekkep Ekranı necə əlavə etmək olar: 12 addım (şəkillərlə)

Video: Layihənizə E-Mürekkep Ekranı necə əlavə etmək olar: 12 addım (şəkillərlə)
Video: Layihənizi tam olaraq realdakı kimi hiss edəcəksiniz. 2024, Noyabr
Anonim
Layihənizə E-Mürekkep Ekranı necə əlavə etmək olar
Layihənizə E-Mürekkep Ekranı necə əlavə etmək olar
Layihənizə E-Mürekkep Ekranı necə əlavə etmək olar
Layihənizə E-Mürekkep Ekranı necə əlavə etmək olar

Bir çox layihə, ətraf mühit məlumatları kimi bir növ məlumatların monitorinqini əhatə edir, çox vaxt nəzarət üçün Arduino istifadə edir. Mənim vəziyyətimdə su yumşaldıcımdakı duz səviyyəsini izləmək istədim. Verilənləri ev şəbəkənizdə əldə etmək istəyə bilərsiniz, ancaq eyni zamanda ölçülən yerdə göstərmək istəyə bilərsiniz. Və ya daha əlverişli bir yerdə hər zaman açıq olan uzaqdan bağlı bir ekrana sahib ola bilərsiniz.

İndi istifadə edə biləcəyiniz bir çox növ ekran var, hamısı olduqca ucuz, lakin fərqli üstünlükləri və mənfi cəhətləri var:

  • Alfasayısal bir LCD ekran ən ucuz, eyni zamanda ən məhduddur.
  • Bir OLED ekran qrafiki göstərə bilər, amma ucuzları çox kiçikdir. İkinci fotoşəkildə E-Ink birinin yanında 128x64 piksel OLED displey göstərilir.
  • E-Mürekkep (və ya E-Kağız) ekranı bir qədər böyükdür və buna görə də oxumaq daha asandır və ekranın söndürüldükdə belə saxlanmasının üstünlüyünə malikdir! Ancaq ekranı yenidən çəkmək bir neçə saniyə çəkir.

E-Mürekkep ekranı tətbiqim üçün ideal görünürdü, çünki Arduino-nu yalnız bir neçə saatdan bir oyanmaq, oxumaq və yuxuya getməzdən əvvəl göstərmək üçün proqramlaşdıra bilərdim. Ekranı yenidən çəkmək üçün bir neçə saniyə çəkməyin heç bir nəticəsi yoxdur.

Belə bir tətbiqdə, orta cərəyan istehlakı o qədər aşağı səviyyədə təşkil edilə bilər ki, 9V lityum tüstü detektoru batareyası 10 il dayanacaq! Üstəlik, bu ekranlardan bəzilərində üç rəng göstəriləcək: ağ, qara və qırmızı (və ya sarı). Qırmızı bir xəbərdarlıq və ya xəbərdarlıq göstərmək istəyirsinizsə idealdır.

Təchizat

Tapdığım ən ucuz E-Mürekkep ekranları, bir çox eBay satıcılarından da əldə edilə bilən BuyDisplay tərəfindən satılır. Təəssüf ki, sənədləşmə çox şey tələb edir, buna görə də bir dərs yazmağı öz üzərimə götürdüm - oxuyun!

Ehtiyaclarınızdan və büdcənizdən asılı olaraq müxtəlif ölçülərdə seçim edə bilərsiniz:

  • 1.54 "(152x152 = 23, 104 piksel)
  • 2.13 "(212x104 = 22, 048 piksel)
  • 2.6 "(296x152 = 44, 992 piksel)
  • 2.7 "(176x264 = 46, 464 piksel)
  • 2.9 "(296x128 = 37, 888 piksel)
  • 4.2 "(400x300 = 120.000 piksel)
  • 5.83 "(640x480 = 307, 200 piksel)
  • 7,5 "(880x528 = 464, 640 piksel)

(Aralığım son dəfə baxdığımdan bəri genişləndi, bəlkə də bunu oxuduğunuz zaman daha da genişləndi.)

Bunlar 2 rəngli (qara/ağ) və ya 3 rəngli (qara/qırmızı/ağ və ya qara/sarı/ağ) olaraq mövcuddur. Bu Təlimat, qırmızıdan istifadə etdiyinizi güman edir, ancaq sarı versiyanı seçmisinizsə, "qırmızı" üçün "sarı" oxuyun.

Bir SPI (4 telli) versiyasını seçin. Çox gözəl ölçüdə olan 1.54 modeldən istifadə etdim.

Addım 1: Ekranınıza qoşulun

Ekranınıza qoşulur
Ekranınıza qoşulur

Bu ekranlar 2x4 pin başlığı ilə gəlir. Pin nömrələri aydın şəkildə etiketlənmişdir, 7, 5, 3 və 1 sancaqlar (soldan sağa) üst sıra boyunca və 8, 6, 4, 2 alt boyunca.

Ekranınız, əlaqəni asanlaşdıran 8 tərəfli yamaq kabeli ilə gələ bilər. (Mənim patch kabelimdə 2 qırmızı tel və 2 qəhvəyi var. Onlar bir -birini əvəz edə bilməz!

Aşağıdakı cədvəldə əksər Arduino növlərinə (Uno, Pro Mini, Pro Micro və Nano daxil olmaqla) aid olan bağlantılar verilmişdir.

Elektron mürəkkəb modulu Arduino
Pin Adı Pin Adı
1 VDD Vcc 3.3/5V
2 VSS Gnd Gnd
3 Serial Məlumatlar Daxil 11 MOSI
4 Serial Saat Daxildir 13 SCK
5 /Çip seçin 10
6 Məlumat/İnstr 9
7 Sıfırla 8
8 Cihaz Məşğul 7

Addım 2: Təmin Edilən Proqramı Yükləyin

Təqdim olunan proqramı bu addımda təsvir edildiyi kimi istifadə edə bilərsiniz və ya təkmilləşdirilmiş kitabxanamı növbəti addımda istifadə edə bilərsiniz.

BuyDisplay.com saytında cihazınızı tapın. Səhifənin aşağı hissəsində "Arduino Kitabxanası və 4 telli SPI üçün nümunə" adlı bir yükləmə ZIP faylı tapacaqsınız. Yükləmək və Windows Explorer -də açmaq üçün bunun üzərinə vurun.

Windows Explorer bunu "Libraries-Examples_ER-EPM0154-1R" vahid üst səviyyəli qovluğa malik olaraq göstərəcək. (Sizinki 1.54 "model deyilsə, ad biraz fərqli olacaq.)

Bu üst səviyyəli qovluğu Arduino kitabxana qovluğunuza kopyalayın. Qovluğun adını dəyişdirmək üçün sağ basın və "Kitabxanalar-Örnekler_" adından silin.

(Arduino kitabxanalar qovluğunuzu tapmaq üçün Arduino IDE -də Fayl… Tercihləri vurun və Sketchbook Yerini qeyd edin. Buna gedin və eskiz qovluqlarınız arasında Arduino "kitabxanaları" qovluğunu tapacaqsınız.)

Bu qovluğu açın və içərisindəki "Kitabxanalar" qovluğunu açın. Bu qovluqdakı bütün faylları bir səviyyəyə yuxarı ana qovluğa sürükləyin ("ER-EPM0154-1R"). (İndi boş olan) "Kitabxanalar" qovluğunu silin.

İndi Arduino kitabxanası olaraq faylları və imtahan eskizini quraşdırmısınız. Diqqət edin, əgər ekranınız 1.54 düym deyilsə, yeganə fərq ER-ERM*-1.h-də WIDTH və HEIGHT təyin edən iki sətir kimi görünür.

Arduino IDE-də, Fayl… Nümunələri vurun və ekranınızı Arduino-ya bağladığınız anda tərtib edə biləcəyiniz demo eskizi üçün ER-EPM0154-1R-ə gedin.

Addım 3: Demonu işə salın

Demonun işlədilməsi
Demonun işlədilməsi
Demonun işlədilməsi
Demonun işlədilməsi

Arduino IDE-də Fayl … Nümunələr … ER-EPM0154-1R düyməsini basın.

Arduino -nuzu USB kabeli ilə kompüterinizə qoşun və ya normal olaraq bunu edin.

Alətlər altında, lövhəni, prosessoru və portu təyin edin.

Sketch altında, Yüklə düyməsini basın.

Yükləmə tamamlandıqdan sonra kiçik bir gecikmə olacaq və ilk görüntüyü boyadığı üçün gecikmə bir neçə dəfə yanıb -sönəcək. Demo keçərkən baxın.

Addım 4: Ətraflı Kitabxanadan istifadə edin

İnkişaf etmiş kitabxanamı github-dan https://github.com/p-leriche/E-ink_ER-EPM ünvanından yükləyə bilərsiniz.

N. B. Kitabxanamın hər hansı bir ölçüdə uyğun ekranla işləyəcəyinə inamım yüksəkdir, amma əslində bunu 1.54 modeli ilə sınamışam. Başqa birindən istifadə edirsinizsə, zəhmət olmasa şərhlərin sonunda mənə bildirin. Bunun işlədiyini təsdiqləmək üçün.

Zip faylını yükləyin və qeyd edin. Arduino IDE -də, Sketch … Kitabxanaya Daxil et. ZIP Kitabxanası əlavə edin və saxlanılan zip faylını seçin.

Kitabxanamda bir neçə kiçik təkmilləşdirmə var:

  • Fərqli Arduino pin nömrələrinin istifadəsinə imkan verir (MOSI istisna olmaqla).
  • Eyni kitabxana istənilən ölçülü cihaz üçün istifadə edilə bilər.
  • Yeni 50% gölgeli dolgu və benekli bir dolgu (təsadüfi piksellər dəsti) verilir.

Kitabxana standart bir Arduino sıxılmış (zip) faylı olaraq gəlir. Yükləmələr qovluğuna (və ya istədiyiniz yerə) yükləyin və Arduino IDE -də Sketch vurun … Kitabxanaya daxil edin… Poçt Kitabxanası əlavə edin.

Nümunələr altında, indi E-ink_ER-EPM tapa bilərsiniz. 3 nümunə eskiz var:

  • ER_EPM154-1R-Test: Satıcı tərəfindən verilən orijinal nümayiş
  • E-ink_demo: Növbəti addımlarda eskiz hazırlanıb
  • E-ink_rotate: Görüntü fırlanmasının nümayişi.

Addım 5: Özünüz Proqramlaşdırın

Təəssüf ki, satıcı tərəfindən verilən kodla bağlı heç bir sənəd yoxdur və ya nümunə kodu kifayət qədər şərh edilməmişdir. Bu, istifadəni çətinləşdirir və bu Təlimatın əsas məqsədi bunu düzgün qoymaqdır.

Əsas anlayışlar

Arduino -nun mövcud RAM miqdarı məhdud olduğundan kitabxana, ekranın kiçik hissələrində bir anda çəkmək və ya yazmaqla onları fərdi olaraq cihazın intermal yaddaşına yükləməyə imkan verir. Lazım olan bütün hissələri yüklədikdən sonra yaddaşında olanları göstərmək üçün söyləyirsən.

Ekranın bu hissələrinə "Paint" obyektləri deyilir. Yalnız birinə ehtiyacınız var və ekranın hər bölməsi üçün onun hündürlüyünü, enini və fırlanmasını təyin edirsiniz. Tamamlandıqda, yükləmək üçün ekrandakı mövqeyi və qara və ya ağ və ya qırmızı və ağ olması lazım olduğunu təyin edərək yükləyirsiniz.

Ekranın sol üst küncündə üfüqi (x) və şaquli (y) koordinatları (0, 0), sol alt (0, 151) və sağ üst (151, 0).

Başlanğıc

Arduino IDE-də E-ink_demo eskizini açın və kitabxanadan necə istifadə edəcəyimi təsvir etdiyim kimi izləyin.

Eskizin yuxarı hissəsində həmişə lazım olan aşağıdakı sətirləri görəcəksiniz:

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

#İnclude xətləri tələb olunan kitabxanaları çəkir. SPI.h standart bir Arduino kitabxanasıdır, lakin digərləri e-ink kitabxanasının bir hissəsini təşkil edir.

RENKSİZ (ağ) piksel və RƏNGLİ (qara və ya qırmızı olanlar) adlar təyin edirik. (Avropalı həmvətənlərimə qeyd: Amerika rəng yazımından istifadə olunur.)

Epd epd; line, göstərəcəyimiz elektron kağız cihaz obyektini yaradır. Setup () və loop () funksiyalarının mövcud olmasını təmin etmək üçün bu eskizin əvvəlində olmalıdır.

Fərqli ölçülü bir ekrana sahibsinizsə, EPD xəttini aşağıdakılarla əvəz edə bilərsiniz:

Epd epd (eni, hündürlüyü);

(daha əvvəl #define ifadələrində WIDTH və HEIGHT təyin etmişlər.)

Eyni şəkildə, qeyri-standart pin nömrələrini təyin edə bilərsiniz:

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

Quraşdırma () daxilində cihazı aşağıdakı kimi işə salmalıyıq:

Serial.başla (9600)

if (epd. Init ()! = 0) {Serial.print ("e-Kağız başlanğıcı uğursuz oldu"); qayıtmaq; }

(Əslində, epd. Init () heç vaxt bir səhv qaytarmır, ancaq gələcək bir inkişaf ekranın yoxluğunu və ya işləmədiyini aşkar edə bilər.)

Addım 6: Mətn yazmaq

Mətn Yazmaq
Mətn Yazmaq

E-ink_demoda diqqətinizi loop () -a çevirin. Əvvəlcə ekranı təmizləyək:

epd. ClearFrame ()

(Öz şəklinizi göstərmək istəsəniz bu əslində lazım deyil.)

Bir şey çəkmədən əvvəl (istər mətn, istərsə də qrafik) çəkmək üçün Paint obyekti yaratmalıyıq:

imzasız simvol şəkli [1024]

Boya boyası (şəkil, 152, 18); // eni 8 -in çoxluğu olmalıdır

Bu, bir az yer ayırır (1024 bayt) və onu ikinci sətirdə dayandırılmış Paint obyektinə ayırır. Bu, 152 piksel genişliyi və 18 piksel dərinliyi kimi müvəqqəti olaraq qurulmuşdur. Lazım gələrsə yenidən istifadə etmək üçün daha sonra yenidən konfiqurasiya edə bilərik, amma unutmayın: bayt başına 8 piksel saxlanıldığı üçün eni 8 -dən çox olmalıdır. (Gerekirse əslində onu yuvarlaqlaşdıracaq, ancaq ekranınızın necə görünməməsi lazım olduqda görünə bilər.

İndi boya obyektini RENKSİZ (ağ) olaraq təmizləməliyik, sonra (x, y) = (22, 2) mövqeyində 16 piksel yüksək şriftdən istifadə edərək "e-ink Demo" yazırıq və RƏNGLİ (əksinə göstərmək üçün) RENKSİZ fon.

boya. Təmiz (RENKSİZ)

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

Nəzərə alın ki, koordinatlar (22, 2) sətrin birinci simvolunun sol üst küncündədir və bütün ekrana deyil, boya obyektinin sol üst küncünə nisbətən 22 piksel və 2 piksel aşağıdır.. Mətn, boya obyektinin yuxarısından ən azı bir piksel aşağıya yaxşı görünür.

Aşağıdakı şriftlər mövcuddur:

Yazı tipi 8 - 5x8 piksel Font12 - 7x12 piksel Font16 - 11x16 piksel Font20 - 14x20 piksel Font24 - 17x24 piksel

İndi yalnız boya obyektini ("boya") cihaza ("epd") göndərməliyik:

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

SetPartialWindowBlack, epd obyektinə şəkil və boya obyektinin eni və dərinliyi xüsusiyyətlərindən istifadə edərək tətbiq etdiyimiz bir üsuldur. Bu görüntünün cihaza yazılmasını söyləyirik (x, y) = (0, 3). RƏNGLİ piksellərin qara olmasını söyləyirik.

Çox çətin deyildi, elə deyilmi? Başqasını sınayaq.

boya Təmiz (RƏNGLİ);

paint. DrawStringAt (20, 2, "(Rəngdə Ağ)", & Font12, RENKSİZ); epd. SetPartialWindowRed (paint. GetImage (), 0, 24, paint. GetWidth (), paint. GetHeight ());

Eyni boya obyektini, eyni eni və hündürlüyü yenidən istifadə edirik, amma bu dəfə RƏNGƏLİ olaraq silin və üzərinə RENKSİZ bir simli yazaq. Və bir dəyişiklik üçün, COLORED pikselləri qırmızı rəngə çevirəcəyik və cihazın (0, 24) ünvanına yazacağıq, birincisinin altında.

İki boya obyektini cihazın yaddaşına yazdıq, amma hələ göstərməməyi söylədik. Bunu aşağıdakı ifadə ilə edirik:

epd. DisplayFrame ();

(E-ink_demo eskizində daha çox şey çəkdikdən sonra əslində bunu sona qədər buraxırıq, ancaq istəsəniz bura daxil edə bilərsiniz, mybe sonra gecikmə (10000); əl işlərinizə heyran olmaq üçün vaxt vermək üçün.

Addım 7: Xəttlər və Dikdörtgenlər çəkin

Xəttlər və Dikdörtgenlər çəkmək
Xəttlər və Dikdörtgenlər çəkmək

Xətləri və düzbucaqları necə çəkəcəyimizi görək. Eyni boya obyektini istifadə edəcəyik, ancaq onu 40 piksel genişlikdə və 36 piksel yüksəklikdə yenidən qurmalıyıq. RENKSİZ olaraq təmizləyəcəyik.

boya. SetWidth (40);

boya. SetHeight (36); boya Təmiz (RENKSİZ);

Həmişə olduğu kimi boya obyektinə nisbətən sol üst künc (5, 3) və sağ alt (35, 33) olan (RENKLİ) düzbucaqlı çəkəcəyik. Diaqonallarını da (5, 3) -dən (35, 33) və (35, 3) -dən (5, 33) -ə qədər xətlər şəklində çəkəcəyik. Nəhayət, bütün boya obyektini (qırmızı) (32, 42) ekrana yazacağıq.

// TOP ROW:

// Düzbucaqlı boya. Təmiz (RENKSİZ); boya. DrawRectangle (5, 3, 35, 33, RENKLİ;) boya. DrawLine (5, 3, 35, 33, RENKLİ); boya. DrawLine (35, 3, 5, 33, RENKLİ); epd. SetPartialWindowRed (paint. GetImage (), 32, 42, paint. GetWidth (), paint. GetHeight ());

Kitabxana, gəldiyi kimi, dolu bir düzbucaq da verdi, amma hey, kölgəli olmasını istədim, buna görə də yeni bir üsul əlavə etdim. Biri gölgeli, biri də doldurulmuş daha iki düzbucaq düzəldəcəyik və onları qara və qırmızıya dəyişərək birincinin sağına yerləşdirəcəyik.

// Kölgəli Düzbucaqlı boya. Təmiz (RENKSİZ); boya. DrawShadedRectangle (5, 3, 35, 33); epd. SetPartialWindowBlack (paint. GetImage (), 72, 42, paint. GetWidth (), paint. GetHeight ()); // Doldurulmuş Düzbucaqlı boya. Təmiz (RENKSİZ); boya. DrawFilledRectangle (5, 3, 35, 33, RENKLİ); epd. SetPartialWindowRed (paint. GetImage (), 112, 42, paint. GetWidth (), paint. GetHeight ());

Addım 8: Dairələr çəkin

Rəsm dairələri
Rəsm dairələri

Dairələr çəkmək qədər asandır. İki küncün koordinatları əvəzinə mərkəzin və radiusun koordinatlarını əvvəlcədən araşdırmalıyıq. Boya obyektini təmizləyəcəyik, sonra (20, 15) (boya obyektinə nisbətən) və radius 15 -də bir dairə qoyacağıq. Və kölgəli və dolu bir dairə üçün təkrarlayın.

// İKİNCİ sıra

// Dairə boyası. Təmiz (RENKSİZ); boya. DrawCircle (20, 18, 15, RENKLİ); epd. SetPartialWindowBlack (paint. GetImage (), 32, 78, paint. GetWidth (), paint. GetHeight ()); // Kölgəli Dairə boyası. Təmiz (RENKSİZ); boya. DrawShadedCircle (20, 18, 15); epd. SetPartialWindowRed (paint. GetImage (), 72, 78, paint. GetWidth (), paint. GetHeight ()); // Doldurulmuş dairə boyası. Təmiz (RENKSİZ); boya. DrawFilledCircle (20, 18, 15, RENKLİ); epd. SetPartialWindowBlack (paint. GetImage (), 112, 78, paint. GetWidth (), paint. GetHeight ());

Addım 9: RENKLİ Bckground -da RENKSİZ

RENKLİ Bckground -da RENKSİZ
RENKLİ Bckground -da RENKSİZ

Məşhur şəkildə burada davam edirik! Beləliklə, bir rulonda ikən, bu dəfə ikinci sətirdə olduğu kimi RƏNGLİ bir boya obyektində RENKSİZ olaraq aşağıda bir sıra daha 3 dairə edək.

// ÜÇÜNCÜ sıra

// Dairə boyası. Təmiz (RƏNGLİ); boya. DrawCircle (20, 18, 15, RENKSİZ); epd. SetPartialWindowRed (paint. GetImage (), 32, 114, paint. GetWidth (), paint. GetHeight ()); // Kölgəli Dairə boyası. Təmiz (RƏNGLİ) boya. DrawShadedCircle (20, 18, 15); epd. SetPartialWindowBlack (paint. GetImage (), 72, 114, paint. GetWidth (), paint. GetHeight ()); // Doldurulmuş dairə boyası. Təmiz (RƏNGLİ); boya. DrawFilledCircle (20, 18, 15, RENKSİZ); epd. SetPartialWindowRed (paint. GetImage (), 112, 114, paint. GetWidth (), paint. GetHeight ());

Gölgeli dolguya əlavə olaraq, təsadüfi pikselləri rəngləndirən xallı bir dolgu da var. Beləliklə, yuxarıdakı kölgəli dairənin yerinə qoya bilərdik

boya. DrawSpeckledCircle (20, 18, 15, 25);

Son parametr (25) sıxlıqdır, yəni rənglənməli olan piksellərin faizidir. Buraxılmadığı təqdirdə, 50% hesab olunur.

Sıxlığı təyin edən əlavə bir əlavə parametrə malik DrawSpeckledRectangle da var.

Addım 10: Dönmə

Fırlanma
Fırlanma
Fırlanma
Fırlanma

Çəkə biləcəyimiz hər şeyi 90, 180 və ya 270 dərəcə fırlaya bilərik. (Dönüşləri saat əqrəbi istiqamətində sayırıq.)

Boya obyektinə ROTATE xassəsini tətbiq edə bilərik, ancaq başa düşmək vacibdir ki, fırlanan boya obyekti deyil, ona yazdığınız hər şeydir. Beləliklə, şaquli mətn istəyirsinizsə, boya obyektinizi üfüqi deyil, şaquli istiqamətdə uzun və nazik olaraq konfiqurasiya etməlisiniz.

Mətninizin yuxarıdan aşağıya (soldan sağa deyil) oxunması üçün saat əqrəbi istiqamətində 90 dərəcə dönməsini istəyirsinizsə, yazdığınız hər hansı bir məqsəd üçün boya obyektinin sağ üst küncündə (0, 0) olacaq. ya da çəkin, x o küncdən aşağıya doğru, o küncdən sola doğru.

Yəqin ki, ekranın sol tərəfində bir boşluq qoyduğumuzu fərq etdiniz. Beləliklə, 270 dərəcə dönmüş bir mətn yazaq, yəni aşağıdan yuxarıya oxuyun. Bu, sol alt küncdə (0, 0) qoyacaq.

Diqqət yetirin ki, bir boya obyektini döndərdiyiniz zaman fırlanma yalnız üzərinə piksel çəkdiyiniz zaman tətbiq edilir. Cihaza yazmağa gələndə hələ də SetPartialWindow -a verməli olduğunuz sol üst küncün koordinatlarıdır.

Xülasə etmək üçün, boya obyektimizi eni 32 və hündürlüyü 110 olaraq konfiqurasiya edək və ona ROTATE_270 xassəsi verəcəyik. Bütün bunları bir şey yazmadan və ya çəkmədən əvvəl etmək məcburiyyətindəyik.

boya. SetWidth (32);

boya. SetHeight (110); boya. SetRotate (ROTATE_270);

RENKLİ olaraq silib RENKSİZ bir simli yazacağıq, sonra (0, 42) ünvanına yerləşdirəcəyik. (Bu sol üst küncdür, unutmayın. İçindəki piksellərin fırlanmasını unudun.)

boya Təmiz (RƏNGLİ); paint. DrawStringAt (8, 8, "Yanlara!", & Font16, RENKSİZ); epd. SetPartialWindowBlack (paint. GetImage (), 0, 42, paint. GetWidth (), paint. GetHeight ());

Nəhayət, cihaza verdiyimiz bütün pikselləri göstərməsini söyləməliyik. Və bir müddət dəyişdirmək istəməyəcəyiksə və batareya enerjisinə qənaət etmək istəmiriksə, onu yatdıra bilərik və başqa bir şeyi götürüb nümayiş etdirməyin vaxtı gəldikdə oyanmaq üçün Arduinonu niyə qoymayaq? ölçü.

epd. DisplayFrame ();

epd. Sleep ();

İkinci bir nümunə eskiz 90, 180 və 270 dərəcə fırlanmanı göstərir. İndiyə qədər bunu özünüz təqib etməyi bacarmalısınız.

Addım 11: Bitmaplərin çəkilməsi

Rəsm Bitmapləri
Rəsm Bitmapləri

Satıcının demosu bir neçə bitmap şəklinin nümayişini əhatə edir. Yükləyə biləcəyiniz bir alətdən istifadə edərək yaratmaq asandır

www.buydisplay.com/image2lcd

Bir.exe quraşdırma faylı və bir lisenziya açarı olan bir mətn faylı olan bir zip faylı olaraq gəlir. Genişləndirin və sonra quraşdırmaq üçün.exe faylını iki dəfə vurun.

Aydındır ki, göstərə biləcəyiniz şeylərdə kifayət qədər ciddi məhdudiyyətlər var, çünki E-mürəkkəb pikselləri yalnız açıla və ya söndürülə bilər və buna görə də boz rəngləri təmsil edə bilməz. Ancaq bir görüntünün üzərinə düzbucaqlı bir boya obyekti çəkmək mümkündür. Bir mayo səviyyəsi kimi bir şey göstərən bir çubuq və ya pasta diaqramı kimi dəyişən mətn və ya qrafikləri üst -üstə qoya biləcəyiniz bir fantastik şriftdə bir logo, simvollar və ya sabit bir mətn göstərmək istəyə bilərsiniz.

Bildiyiniz hər hansı bir proqram təminatı ilə şəklinizi yarada bilərsiniz, ya da bir eskiz və ya rəsmlə skan edə bilərsiniz, ancaq hər iki halda da onu yalnız 2 səviyyəyə endirə bilməlisiniz. Onu.gif,-j.webp

Image2Lcd başladın. Alt hissədə Qeydiyyat sekmesini görəcəksiniz. Bunun üzərinə vurun və yüklədiyiniz zip faylına mətn faylı daxil olan qeydiyyat kodunu daxil edin. Bu, şəkildəki örtüyü aradan qaldıracaq.

Image2Lcd -də şəkil faylınızı açın. Sol bölmədə, olduğundan əmin olun

  • Çıxış fayl növü: C array
  • Tarama rejimi: Yatay Tarama
  • BitsPixel: Tək rəngli
  • Maksimum genişlik və yüksəklik: ekranınızın ölçüsü və
  • Baş məlumatları daxil edilməlidir.

İşləmək üçün Maksimum Genişlik və Boyun yanındakı düyməni basın. İşlənmənin nəticəsi göstəriləcək. Ən yaxşı nəticələr əldə etmək üçün Parlaqlıq və Kontrast sürgülərini tənzimləməli ola bilərsiniz.

Parlaqlıq kaydırıcısının üstündəki Tərs rəng onay qutusunu vurun və nədənsə lazım olan mənfi bir şəkil halına gətirin, sonra Arduino eskizinizi ehtiva edən qovluqda imagedata.cpp olaraq saxlamaq üçün Saxla düyməsini basın. Növbəti dəfə Arduino IDE ilə eskizi açdığınız zaman onu yeni bir nişan olaraq görməlisiniz.

Addım 12: Bitmapinizi göstərin

Bitmapinizi Göstərir
Bitmapinizi Göstərir

Arduino eskizinizin əsas faylına, yuxarıdakı #daxil etmək sətirlərindən dərhal sonra daxil edin:

#"imagedata.h" daxil edin

Yeni bir nişan yaradın (nişanlar xəttinin sonundakı aşağı oxu basın) və ona imagedata.h deyin. Aşağıdakı 2 sətri daxil edin:

extern const imzasız simvol IMAGE_BLACK ;

extern const imzasız simvol IMAGE_RED ;

İmagedata.cpp faylınızda ilk sətir başlayacaq

const imzasız char gImage_image [2888] = {

(1.54 düymlük ekrandan istifadə etmirsinizsə, kvadrat mötərizədə olan rəqəm fərqli olacaq.) Bunu ilə əvəz edin

const imzasız simvol IMAGE_BLACK PROGMEM = {

Bu qara və ağ şəkil üçündür. Qırmızı və ağ olmasını istəyirsinizsə, dəyişdirin

const imzasız simvol IMAGE_RED PROGMEM = {

Bu sətirdən dərhal əvvəl əlavə edin

#daxil edin

#"imagedata.h" daxil edin

İndi şəklinizi göstərməyə hazırsınız. Əsas faylınızdakı loop () da əlavə edin

epd. ClearFrame ();

epd. DisplayFrame (IMAGE_BLACK, NULL);

Ya da yaratdığınız qırmızı bir şəkil olsaydı, ikinci sətir olmalıdır

epd. DisplayFrame (NULL, IMAGE_RED);

Əslində Image2Lcd ilə qırmızı və qara hissələri ayrıca çevirərək və hər ikisini bir yerdə göstərərək birləşmiş qırmızı və qara şəkil yarada bilərsiniz.

epd. DisplayFrame (IMAGE_BLACK, IMAGE_RED);

Bununla birlikdə, qara və ağ görüntüdə həm qara, həm də qırmızı və ağda qırmızı olaraq göstərilən hər piksel qırmızı rəngdə çıxacaq.

Nəhayət, əvvəllər öyrəndiyimiz hər hansı bir mətn və ya qrafik funksiyası ilə görüntünüzü üst -üstə qoya bilərsiniz. Twitter tutacaqımı əlavə etmək istədim, buna görə də əlavə etdim

Boya boyası (şəkil, 20, 152); // eni 8 -in çoxluğu olmalıdır

boya. SetRotate (ROTATE_270); boya Təmiz (RENKSİZ); 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 ();

Tövsiyə: