Sadržaj:

Kako dodati zaslon e-tinte u svoj projekt: 12 koraka (sa slikama)
Kako dodati zaslon e-tinte u svoj projekt: 12 koraka (sa slikama)

Video: Kako dodati zaslon e-tinte u svoj projekt: 12 koraka (sa slikama)

Video: Kako dodati zaslon e-tinte u svoj projekt: 12 koraka (sa slikama)
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, Studeni
Anonim
Kako dodati zaslon s e-tintom u svoj projekt
Kako dodati zaslon s e-tintom u svoj projekt
Kako dodati zaslon s e-tintom u svoj projekt
Kako dodati zaslon s e-tintom u svoj projekt

Mnogi projekti uključuju praćenje neke vrste podataka, poput podataka o okolišu, često koristeći Arduino za kontrolu. U mom sam slučaju htio pratiti razinu soli u omekšivaču vode. Možda biste htjeli pristupiti podacima putem svoje kućne mreže, ali isto tako mogli biste ih htjeti prikazati tamo gdje se mjere. Ili biste mogli imati uvijek uključen daljinski povezan zaslon na prikladnijem mjestu.

Sada možete koristiti nekoliko vrsta zaslona, svi su prilično jeftini, ali imaju različite prednosti i nedostatke:

  • Alfanumerički LCD zaslon je najjeftiniji, ali i ograničeni.
  • OLED zaslon može prikazati grafiku, ali jeftini su vrlo mali. Druga fotografija prikazuje OLED zaslon rezolucije 128x64 piksela pored ekrana E-Ink.
  • Zaslon E-Ink (ili E-Paper) je nešto veći i stoga je lakši za čitanje, a njegova je prednost što se zaslon zadržava čak i kad je isključen! No potrebno je nekoliko sekundi za ponovno iscrtavanje zaslona.

Zaslon E-Ink činio se idealnim za moju aplikaciju jer sam mogao programirati Arduino da se budi svakih nekoliko sati, čita i čita prije nego što se vrati u san. Nema posljedice da je za ponovno iscrtavanje zaslona potrebno nekoliko sekundi.

U takvoj se aplikaciji prosječna potrošnja struje može postaviti tako nisko da se može napraviti litijeva baterija detektora dima od 9 V koja će trajati 10 godina! Štoviše, neki od ovih zaslona prikazat će tri boje: bijelu, crnu i crvenu (ili žutu). Idealno ako želite upozorenje ili upozorenje prikazati crvenom bojom.

Pribor

Najjeftinije zaslone s e-tintom koje sam pronašao prodaje BuyDisplay, također dostupan od mnogih prodavatelja eBay-a. Nažalost, dokumentacija ostavlja mnogo toga za poželjeti pa sam si uzeo za sebe napisati vodič - čitajte dalje!

Ovisno o vašim zahtjevima i proračunu, na raspolaganju su vam različite veličine:

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

(Raspon se proširio od zadnjeg pregleda, pa se možda dodatno proširio kad ste ovo pročitali.)

Dostupne su u dvije boje (crno/bijelo) ili u tri boje (crno/crveno/bijelo ili crno/žuto/bijelo). Ovaj Instructable pretpostavlja da koristite crvenu, ali ako ste odabrali žutu verziju, jednostavno čitajte "žuto" za "crveno".

Odaberite SPI (4-žičnu) verziju. Koristio sam model 1.54 , koji je vrlo lijepe veličine.

Korak 1: Povezivanje zaslona

Povezivanje vašeg zaslona
Povezivanje vašeg zaslona

Ovi zasloni dolaze sa zaglavljem 2x4 pina. Brojevi pinova jasno su označeni, pinovi 7, 5, 3 i 1 (slijeva nadesno) duž gornjeg reda i 8, 6, 4, 2 duž dna.

Vaš zaslon može imati 8-smjerni patch kabel, što olakšava povezivanje. (Moj patch kabel ima 2 crvene žice i 2 smeđe. Nisu zamjenjive!

Sljedeća tablica prikazuje veze koje se odnose na većinu tipova Arduina (uključujući Uno, Pro Mini, Pro Micro i Nano).

Modul e-tinte Arduino
Pribadača Ime Pribadača Ime
1 VDD Vcc 3.3/5V
2 VSS Gnd Gnd
3 Serijski podaci Ulaz 11 MOSI
4 Serijski sat Ulazi 13 SCK
5 /Odabir čipa 10
6 Podaci/Instr 9
7 Poništi 8
8 Uređaj zauzet 7

Korak 2: Preuzmite isporučeni softver

Možete koristiti priloženi softver kako je opisano u ovom koraku, ili možete koristiti moju poboljšanu biblioteku u sljedećem koraku, osim u jednom.

Pronađite svoj uređaj na BuyDisplay.com. Pri dnu stranice pronaći ćete ZIP datoteku za preuzimanje "Arduino knjižnica i primjer za 4-žični SPI". Kliknite na ovo za preuzimanje i otvaranje u Windows Exploreru.

Windows Explorer će ovo pokazati kao da sadrži jednu mapu najviše razine "Libraries-Examples_ER-EPM0154-1R". (Naziv će biti malo drugačiji ako vaš nije model od 1,54 ".)

Kopirajte ovu mapu najviše razine u mapu Arduino knjižnica. Desnom tipkom miša kliknite za preimenovanje mape i izbrišite "Knjižnice-Primjeri_" iz naziva.

(Da biste pronašli mapu Arduino knjižnica, u Arduino IDE -u kliknite Datoteka … Postavke i zabilježite lokaciju Sketchbook. Idite na ovo i među mapama skica pronaći ćete mapu "biblioteke" Arduina.)

Otvorite ovu mapu i unutar nje otvorite mapu "Knjižnice". Povucite i ispustite sve datoteke u ovoj mapi u nadređenu mapu za jednu razinu gore ("ER-EPM0154-1R"). Izbrišite (sada praznu) mapu "Knjižnice".

Sada ste instalirali datoteke i skicu ispita kao Arduino biblioteku. Imajte na umu da ako vaš zaslon nije 1.54 , čini se da je jedina razlika dvije linije u ER-ERM*-1.h koje definiraju ŠIRINU i VISINU.

U Arduino IDE-u kliknite Datoteka … Ispituje i pomaknite se dolje do ER-EPM0154-1R za demo skicu koju biste trebali moći sastaviti i pokrenuti čim povežete zaslon s Arduinom.

Korak 3: Pokretanje demonstracije

Pokretanje demo programa
Pokretanje demo programa
Pokretanje demo programa
Pokretanje demo programa

U Arduino IDE-u kliknite Datoteka … Primjeri … ER-EPM0154-1R.

Spojite svoj Arduino na računalo USB kabelom, ili kako inače radite.

U odjeljku Alati postavite ploču, procesor i priključak.

U odjeljku Skica kliknite Prijenos.

Nakon dovršetka prijenosa bit će blago kašnjenje, a deset će kašnjenje treptati nekoliko puta dok slika prvu sliku. Gledajte dok prolazi kroz demo.

Korak 4: Korištenje poboljšane biblioteke

Moju poboljšanu biblioteku možete preuzeti s github-a na

N. B. Uvjeren sam da će moja knjižnica raditi sa zaslonom kompatibilnim s bilo kojom veličinom, ali zapravo sam je testirao samo s modelom od 1,54 . Ako koristite neki drugi, javite mi u komentarima na kraju ovog Instructablea, da potvrdite da radi. No ako ne uspije, potrudit ću se da vas pokrenem.

Preuzmite i spremite zip datoteku. U Arduino IDE -u kliknite Sketch… Include Library… Add. ZIP Library i odaberite spremljenu zip datoteku.

Moja biblioteka sadrži nekoliko manjih poboljšanja:

  • Omogućuje upotrebu različitih Arduino pin brojeva (osim za MOSI).
  • Ista se knjižnica može koristiti za uređaje bilo koje veličine.
  • Dostupni su novi 50% zasjenjeni ispuni i pjegavi ispuni (postavljeni slučajni pikseli).

Knjižnica dolazi kao standardna Arduino komprimirana (zip) datoteka. Preuzmite ga u mapu Preuzimanja (ili gdje želite), a u Arduino IDE -u kliknite Sketch… Include Library… Add ZIP Library.

U odjeljku Primjeri sada ćete pronaći E-ink_ER-EPM. Postoje 3 primjera skica:

  • ER_EPM154-1R-Test: Originalna demonstracija koju je osigurao dobavljač
  • E-ink_demo: Skica se razvila u sljedećim koracima
  • E-ink_rotate: demonstracija rotacije slike.

Korak 5: Programirajte ga sami

Nažalost, nema dokumentacije s kodom koji je dostavio dobavljač, niti se primjer koda primjereno komentira. To otežava upotrebu nego što bi trebala biti, a glavna svrha ovog Instructablea je to ispraviti.

Osnovni koncepti

Budući da je Arduino ograničen količinom RAM -a, knjižnica vam omogućuje crtanje ili pisanje u malim dijelovima zaslona odjednom, pojedinačno ih stavljajući u internu memoriju uređaja. Tek kad učitate sve potrebne dijelove, kažete mu da prikaže ono što ima u memoriji.

Ovi dijelovi zaslona poznati su kao objekti "Boja". Potreban vam je samo jedan, a za svaki dio zaslona definirate njegovu visinu, širinu i rotaciju. Kad završite, učitavate je i definirate položaj na ekranu za učitavanje te treba li biti crno -bijela ili crveno -bijela.

Gornji lijevi kut zaslona ima vodoravne (x) i okomite (y) koordinate (0, 0), donji lijevi je (0, 151), a gornji desni (151, 0).

Inicijalizacija

Otvorite skicu E-ink_demo u Arduino IDE-u i slijedite je dok opisujem kako se koristi knjižnica.

Na vrhu skice vidjet ćete sljedeće redove, koji su uvijek potrebni:

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

Linije #include povlače potrebne knjižnice. SPI.h je standardna Arduino knjižnica, ali ostale su dio biblioteke e-tinte.

Definiramo nazive za UNCOLORED (bijele) piksele i COLORED (crne ili crvene). (Napomena mojim kolegama Europljanima: koristi se američki pravopis COLOR.)

Epd epd; line stvara objekt elektroničkog papirnatog uređaja na kojem ćemo se prikazivati. Ovo mora biti ovdje na početku skice kako bi postalo dostupno za funkcije setup () i loop ().

Ako imate zaslon druge veličine, EPD liniju možete zamijeniti:

Epd epd (ŠIRINA, VISINA);

(nakon što ste prethodno definirali WIDTH i HEIGHT u #define izrazima.)

Na isti način možete odrediti neodređene PIN brojeve sa:

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

Unutar setup () moramo inicijalizirati uređaj na sljedeći način:

Serial.begin (9600)

if (epd. Init ()! = 0) {Serial.print ("inicijalizacija e-papira nije uspjela"); povratak; }

(Zapravo, epd. Init () nikad ne vraća pogrešku, ali buduće poboljšanje može otkriti nedostatak zaslona ili nefunkcionalni.)

Korak 6: Pisanje teksta

Pisanje teksta
Pisanje teksta

U E-ink_demo skrenite pozornost na loop (). Prvo, očistimo zaslon:

epd. ClearFrame ()

(Ovo zapravo nije potrebno ako namjeravate prikazati svoju sliku.)

Prije nego što možemo nacrtati bilo što (bilo tekst ili grafiku), moramo stvoriti objekt Paint za crtanje:

slika bez potpisa [1024]

Boja u boji (slika, 152, 18); // širina treba biti višekratnik 8

Ovo zadržava dio prostora (1024 bajta) i dodjeljuje ga objektu Paint, koji je prekinut drugim retkom. Ovo je privremeno konfigurirano kao 152 piksela široko i 18 piksela duboko. Kasnije ga možemo ponovno konfigurirati za ponovnu upotrebu, ali imajte na umu: širina mora biti višestruka 8 budući da je 8 piksela pohranjeno po bajtu i ne možemo podijeliti bajtove. (Zapravo će ga zaokružiti ako je potrebno, ali tada može biti zagonetno kada vaš zaslon ne izgleda kako bi trebao.

Sada moramo obrisati objekt boje na UNCOLORED (bijelo), zatim na poziciji (x, y) = (22, 2) upisujemo "e-ink Demo" pomoću fonta visokog 16 piksela i COLORED (za prikaz u odnosu na NEOBOJANA pozadina.

boja. Očistiti (BEZ BOJE)

paint. DrawStringAt (12, 2, "Demo e-papira", & Font16, BOJA);

Imajte na umu da su koordinate (22, 2) gornji lijevi kut prvog znaka niza i 22 piksela u i 2 piksela prema dolje u odnosu na gornji lijevi kut objekta boje, a ne cijeli zaslon. Tekst izgleda najbolje barem jedan piksel prema dolje od vrha objekta boje.

Dostupni su sljedeći fontovi:

Font8 - 5x8 piksela Font12 - 7x12 piksela Font16 - 11x16 piksela Font20 - 14x20 piksela Font24 - 17x24 piksela

Sada samo moramo poslati objekt boje ("paint") na uređaj ("epd"):

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

SetPartialWindowBlack je metoda koju primjenjujemo na epd objekt, koristeći sliku i njezina svojstva širine i dubine objekta boje. Kažemo mu da zapiše ovu sliku na uređaj na (x, y) = (0, 3). Kažemo da Obojeni pikseli moraju biti crni.

Nije to bilo previše teško, zar ne? Pokušajmo s drugim.

boja. Čista (BOJA);

paint. DrawStringAt (20, 2, "(bijelo u boji)", & Font12, BEZ BOJE); epd. SetPartialWindowRed (paint. GetImage (), 0, 24, paint. GetWidth (), paint. GetHeight ());

Ponovno koristimo isti objekt boje, iste širine i visine, ali ovaj put, očistimo ga u COLORED i na njega upišimo UNCOLORED niz. I za promjenu, obojane piksele učinit ćemo crvenim i zapisati ih na uređaj na (0, 24), odmah ispod prvog.

Zapisali smo dva objekta boje u memoriju uređaja, ali mu još nismo rekli da ih prikaže. To činimo sljedećom izjavom:

epd. DisplayFrame ();

(Na skici E-ink_demo zapravo ostavljamo ovo do kraja, nakon što smo nacrtali još nekih stvari, ali možete ga umetnuti ovdje ako želite, mybe slijedi kašnjenje (10000); kako bismo vam dali vremena da se divite svojim rukama.

Korak 7: Crtanje linija i pravokutnika

Crtanje linija i pravokutnika
Crtanje linija i pravokutnika

Pogledajmo kako crtati linije i pravokutnike. Koristit ćemo isti objekt boje, ali ga moramo ponovno konfigurirati kao 40 piksela širine i 36 piksela u vis. Izbrisat ćemo to u UNCOLORED.

paint. SetWidth (40);

boja. SetHeight (36); boja. Čista (NEOBOJANA);

Nacrtat ćemo (BOJENI) pravokutnik s gornjim lijevim kutom (5, 3) i donjim desnim (35, 33), u odnosu na objekt boje, kao i obično. Dijagonale ćemo također nacrtati kao linije od (5, 3) do (35, 33) i od (35, 3) do (5, 33). Na kraju ćemo cijeli zaslon boje (crveno) zapisati na zaslon u (32, 42).

//GORNJI RED:

// Rectange paint. Clear (UNCOLORED); paint. DrawRectangle (5, 3, 35, 33, COLORED;) boja. DrawLine (5, 3, 35, 33, BOJA); boja. DrawLine (35, 3, 5, 33, BOJA); epd. SetPartialWindowRed (paint. GetImage (), 32, 42, paint. GetWidth (), paint. GetHeight ());

Knjižnica je, kako je stigla, također pružala ispunjeni pravokutnik, ali hej, htio sam zasjenjeni, pa sam dodao novu metodu. Napravit ćemo još dva pravokutnika, jedan zasjenjen i jedan ispunjen, te ih postaviti desno od prvog, izmjenjujući ih crnim i crvenim.

// Osjenčana boja Rectange. Clear (BEZ BOJE); boja. DrawShadedRectangle (5, 3, 35, 33); epd. SetPartialWindowBlack (paint. GetImage (), 72, 42, paint. GetWidth (), paint. GetHeight ()); // Boja ispunjenog pravokutnika. Clear (BEZ BOJE); boja. DrawFilledRectangle (5, 3, 35, 33, BOJA); epd. SetPartialWindowRed (paint. GetImage (), 112, 42, paint. GetWidth (), paint. GetHeight ());

Korak 8: Crtanje krugova

Crtanje krugova
Crtanje krugova

Krugove je jednako lako nacrtati. Umjesto koordinata dvaju uglova, moramo predvidjeti koordinate središta i radijus. Očistit ćemo objekt boje, a zatim staviti krug na (20, 15) (u odnosu na objekt boje) i radijus 15. I ponoviti za zasjenjeni i ispunjeni krug.

// DRUGI RED

// Boja u krug. Jasno (BEZ BOJE); boja. DrawCircle (20, 18, 15, BOJA); epd. SetPartialWindowBlack (paint. GetImage (), 32, 78, paint. GetWidth (), paint. GetHeight ()); // Boja s osjenčanim krugom. Brisana (NEOBOJANA); boja. DrawShadedCircle (20, 18, 15); epd. SetPartialWindowRed (paint. GetImage (), 72, 78, paint. GetWidth (), paint. GetHeight ()); // Boja ispunjenog kruga. Clear (UNCOLORED); boja. DrawFilledCircle (20, 18, 15, BOJA); epd. SetPartialWindowBlack (paint. GetImage (), 112, 78, paint. GetWidth (), paint. GetHeight ());

Korak 9: BEZ BOJE na pozadini u boji

BEZ BOJE na pozadini u boji
BEZ BOJE na pozadini u boji

Ovdje smo slavni! Dakle, dok smo u tijeku, napravimo još 3 kruga u retku ispod, ovaj put UNCOLORED na COLORED objektu boje, kao što smo to učinili s drugim retkom teksta.

// TREĆI RED

// Boja u krugu. Brisana (BOJA); boja. DrawCircle (20, 18, 15, BEZ BOJE); epd. SetPartialWindowRed (paint. GetImage (), 32, 114, paint. GetWidth (), paint. GetHeight ()); // Boja s osjenčanim krugom. Brisana (COLORED) boja. DrawShadedCircle (20, 18, 15); epd. SetPartialWindowBlack (paint. GetImage (), 72, 114, paint. GetWidth (), paint. GetHeight ()); // Boja ispunjenog kruga. Clear (COLORED); boja. DrawFilledCircle (20, 18, 15, BEZ BOJE); epd. SetPartialWindowRed (paint. GetImage (), 112, 114, paint. GetWidth (), paint. GetHeight ());

Uz zasjenjenu ispunu, postoji i pjegava ispuna koja boji nasumične piksele. Dakle, umjesto zasjenjenog kruga iznad mogli smo staviti

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

Konačni parametar (25) je gustoća, tj. Postotak piksela koje treba obojiti. Ako se izostavi, pretpostavlja se 50%.

Tu je i DrawSpeckledRectangle, s dodatnim dodatnim parametrom koji određuje gustoću.

Korak 10: Rotacija

Rotacija
Rotacija
Rotacija
Rotacija

Sve što možemo nacrtati možemo rotirati za 90, 180 ili 270 stupnjeva. (Brojimo rotacije u smjeru kazaljke na satu.)

Svojstvo ROTATE možemo primijeniti na objekt boje, ali važno je shvatiti da nije objekt boje okrenut nego sve što mu napišete. Dakle, ako želite okomiti tekst, morate konfigurirati svoj objekt boje tako dugačak i tanak u okomitom smjeru umjesto vodoravno.

Dakle, ako želite da se vaš tekst rotira u smjeru kazaljke na satu za 90 stupnjeva, tako da se čita odozgo prema dolje (umjesto slijeva nadesno), gornji desni kut objekta boje bit će (0, 0) za potrebe svega što napišete ili ga nacrtajte, s x -om od tog kuta prema dolje, a y od tog kuta prema lijevo.

Vjerojatno ste primijetili da smo ostavili razmak s lijeve strane zaslona. Pa napišimo tamo neki tekst rotiran za 270 stupnjeva, tj. Čitanje odozdo prema gore. Ovo će staviti (0, 0) u donji lijevi kut.

Imajte na umu da, kako god okrenuli objekt boje, rotacija se primjenjuje samo dok na njega crtate piksele. Kad ga dođete napisati na uređaj, to su još uvijek koordinate gornjeg lijevog kuta koje morate dati SetPartialWindow.

Dakle, da rezimiramo, konfigurirajmo naš objekt boje tako da ima širinu 32 i visinu 110, pa ćemo mu dati svojstvo ROTATE_270. Nije da sve ovo moramo učiniti prije nego što napišemo ili privučemo bilo što.

paint. SetWidth (32);

boja. SetHeight (110); paint. SetRotate (ROTATE_270);

Očistit ćemo ga u COLORED i napisati UNCOLORED niz, a zatim ga postaviti na (0, 42). (To je gornji lijevi kut, zapamtite. Zaboravite na bilo kakvo zakretanje piksela u njemu.)

boja. Čista (BOJA); paint. DrawStringAt (8, 8, "Bočno!", & Font16, BEZ BOJE); epd. SetPartialWindowBlack (paint. GetImage (), 0, 42, paint. GetWidth (), paint. GetHeight ());

Na kraju, moramo reći uređaju da prikaže sve piksele koje smo mu dali. A ako ga nećemo htjeti promijeniti na neko vrijeme i želimo uštedjeti bateriju, možemo ga uspavati, a zašto ne bismo uspavali i Arduino, kako bismo se probudili kad dođe vrijeme za snimanje i prikaz drugog mjerenje.

epd. DisplayFrame ();

epd. Sleep ();

Drugi primjer skice prikazuje rotaciju za 90, 180 i 270 stupnjeva. Do sada biste to već trebali moći sami pratiti.

Korak 11: Crtanje bitmapa

Crtanje bitmapa
Crtanje bitmapa

Demo dobavljača uključuje prikaz nekoliko bitmap slika. Lako ih je izraditi pomoću alata s kojeg se može preuzeti

www.buydisplay.com/image2lcd

Dolazi kao zip datoteka koja sadrži.exe instalacijsku datoteku i tekstualnu datoteku koja sadrži licencni ključ. Proširite je, a zatim dvaput kliknite na.exe datoteku da biste je instalirali.

Jasno je da postoje prilično ozbiljna ograničenja u pogledu onoga što možete prikazati jer pikseli e-tinte mogu biti samo uključeni ili isključeni pa ne mogu predstavljati razine sive boje. No, na sliku je moguće staviti pravokutni objekt boje. Možda biste htjeli prikazati logotip, simbole ili fiksni tekst otmjenim fontom na koji biste mogli postaviti promjenjivi tekst ili grafiku, poput trakastog ili tortnog grafikona, što može ukazivati na nešto poput razine tekućine.

Svoju sliku možete stvoriti s bilo kojim softverom za crtanje koji vam je poznat ili možete skenirati skicu ili crtež, ali u oba slučaja morate je moći smanjiti na samo 2 razine. Spremite ga kao.gif,-j.webp

Pokrenite Image2Lcd. Pri dnu ćete vidjeti karticu Register. Pritisnite ovo i unesite registracijski kôd koji je došao u tekstualnoj datoteci u zip datoteku koju ste preuzeli. Time ćete ukloniti sloj sa slike.

U Image2Lcd otvorite slikovnu datoteku. U lijevom oknu provjerite imate li

  • Izlazna vrsta datoteke: C polje
  • Način skeniranja: vodoravno skeniranje
  • BitsPixel: Jednobojno
  • Maksimalna širina i visina: veličina vašeg zaslona i
  • Uključite podatke o glavi ne moraju biti označeni.

Kliknite gumb pokraj Maks. Širina i visina za obradu. Prikazat će se rezultat obrade. Za najbolje rezultate možda ćete morati prilagoditi klizače Svjetlina i Kontrast.

Potvrdite okvir Obrni boju iznad klizača Svjetlina, čineći ga negativnom slikom, koja je iz nekog razloga neophodna, a zatim kliknite Spremi da biste ga spremili kao imagedata.cpp u mapu koja sadrži vašu Arduino skicu. Sljedeći put kada otvorite skicu s Arduino IDE -om, trebali biste je vidjeti kao novu karticu.

Korak 12: Prikaz vaše bitmape

Prikaz vaše bitmape
Prikaz vaše bitmape

U glavnu datoteku vaše Arduino skice, odmah nakon redova #include na vrhu, umetnite:

#include "imagedata.h"

Izradite novu karticu (kliknite strelicu prema dolje na kraju retka kartice) i nazovite je imagedata.h. U njega umetnite sljedeća 2 retka:

extern const unsigned char IMAGE_BLACK ;

extern const unsigned char IMAGE_RED ;

U vašoj datoteci imagedata.cpp prvi redak počet će s

const unsigned char gImage_image [2888] = {

(Broj u uglatim zagradama bit će drugačiji ako ne koristite zaslon veličine 1,54”.) Zamijenite ovo s

const unsigned char IMAGE_BLACK PROGMEM = {

Ovo je za crno -bijelu sliku. Ako želite crveno -bijelo, promijenite ga u

const unsigned char IMAGE_RED PROGMEM = {

Neposredno prije ovog retka dodajte

#uključi

#include "imagedata.h"

Sada ste spremni za prikaz svoje slike. U loop () u glavnoj datoteci dodajte

epd. ClearFrame ();

epd. DisplayFrame (IMAGE_BLACK, NULL);

Ili, ako ste stvorili crvenu sliku, drugi red bi trebao biti

epd. DisplayFrame (NULL, IMAGE_RED);

Zapravo možete stvoriti kombiniranu crvenu i crnu sliku tako što ćete zasebno pretvoriti crvene i crne dijelove s Image2Lcd -om i prikazati ih oboje pomoću

epd. DisplayFrame (IMAGE_BLACK, IMAGE_RED);

Međutim, svi pikseli koji su na crno -bijeloj slici označeni kao crni, a na crvenoj i bijeloj crveni, bit će crveni.

Konačno, svoju sliku možete prekriti bilo kojom tekstualnom ili grafičkom funkcijom o kojoj smo ranije saznali. Htio sam dodati svoju Twitter ručku pa sam dodao

Boja u boji (slika, 20, 152); // širina treba biti višekratnik 8

paint. SetRotate (ROTATE_270); boja. Čista (NEOBOJANA); 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 ();

Preporučeni: