Sisällysluettelo:

E-Ink-näytön lisääminen projektiin: 12 vaihetta (kuvilla)
E-Ink-näytön lisääminen projektiin: 12 vaihetta (kuvilla)

Video: E-Ink-näytön lisääminen projektiin: 12 vaihetta (kuvilla)

Video: E-Ink-näytön lisääminen projektiin: 12 vaihetta (kuvilla)
Video: OIKEIN GEORGIAN KANA CHAKHOKHBILI!!! KUINKA KOKISTAA? REEPTI YKSINKERTAINEN 2024, Marraskuu
Anonim
E-Ink-näytön lisääminen projektiin
E-Ink-näytön lisääminen projektiin
E-Ink-näytön lisääminen projektiin
E-Ink-näytön lisääminen projektiin

Moniin hankkeisiin liittyy jonkinlaisen datan, kuten ympäristötiedon, seuranta, usein käyttämällä Arduinoa. Minun tapauksessani halusin seurata vedenpehmentimen suolatasoa. Haluat ehkä käyttää tietoja kotiverkon kautta, mutta haluat ehkä näyttää ne myös siellä, missä niitä mitataan. Tai sinulla voi olla aina päällä oleva etäyhteysnäyttö kätevämmässä paikassa.

Nyt voit käyttää useita erilaisia näyttöjä, kaikki melko halpoja, mutta niillä on erilaisia etuja ja haittoja:

  • Aakkosnumeerinen LCD -näyttö on halvin, mutta myös rajallisin.
  • OLED -näyttö voi näyttää grafiikkaa, mutta halvat ovat hyvin pieniä. Toisessa valokuvassa on 128 x 64 pikselin OLED-näyttö E-Ink-näytön vieressä.
  • E-Ink (tai E-Paper) -näyttö on jonkin verran suurempi ja siten helpompi lukea, ja sen etuna on, että näyttö säilyy myös sammutettuna! Mutta näytön piirtäminen kestää useita sekunteja.

E-Ink-näyttö näytti ihanteelliselta sovellukselleni, koska voisin ohjelmoida Arduinon heräämään vain muutaman tunnin välein, lukemaan ja näyttämään sen ennen nukkumaanmenoa. Silloin ei ole väliä, että näytön uudelleen piirtäminen kestää useita sekunteja.

Tällaisessa sovelluksessa keskimääräinen virrankulutus voidaan järjestää niin pieneksi, että 9 V: n litium -savunilmaisinparisto voidaan saada kestämään 10 vuotta! Lisäksi jotkut näistä näytöistä näyttävät kolmea väriä: valkoinen, musta ja punainen (tai keltainen). Ihanteellinen, jos haluat näyttää varoituksen tai hälytyksen punaisena.

Tarvikkeet

Halvimmat löytämäni E-Ink-näytöt myyvät BuyDisplay, saatavana myös monilta eBay-myyjiltä. Valitettavasti dokumentaatio jättää melko paljon toivomisen varaa, joten ryhdyin kirjoittamaan opetusohjelma - lue!

Riippuen tarpeistasi ja budjetistasi, voit valita eri kokoja:

  • 1,54 tuumaa (152x152 = 23, 104 pikseliä)
  • 2,13 tuumaa (212 x 104 = 22, 048 pikseliä)
  • 2,6 tuumaa (296x152 = 44, 992 pikseliä)
  • 2,7 tuumaa (176 x 264 = 46, 464 pikseliä)
  • 2,9 tuumaa (296 x 128 = 37, 888 pikseliä)
  • 4,2 tuumaa (400 x 300 = 120 000 pikseliä)
  • 5,83 tuumaa (640x480 = 307, 200 pikseliä)
  • 7,5 tuumaa (880x528 = 464, 640 pikseliä)

(Valikoima on laajentunut viimeisen katselukerran jälkeen, joten se on saattanut laajentua entisestään, kun luit tämän.)

Niitä on saatavana joko 2-värisenä (musta/valkoinen) tai 3-värisenä (musta/punainen/valkoinen tai musta/keltainen/valkoinen). Tässä ohjeessa oletetaan, että käytät punaista, mutta jos olet valinnut keltaisen version, lue "keltainen" ja "punainen" kaikkialla.

Valitse SPI-versio (4-johtiminen). Käytin 1,54 mallia, joka on erittäin mukava koko.

Vaihe 1: Näytön liittäminen

Näytön kytkeminen
Näytön kytkeminen

Näissä näytöissä on 2x4 -nastainen otsikko. Nastanumerot on merkitty selkeästi, nastat 7, 5, 3 ja 1 (vasemmalta oikealle) ylärivillä ja 8, 6, 4, 2 alhaalla.

Näytössäsi voi olla 8-suuntainen liitäntäkaapeli, joka helpottaa liittämistä. (Patch -kaapelissani on 2 punaista johtoa ja 2 ruskeaa. Ne eivät ole vaihdettavissa!

Seuraavassa taulukossa on liitännät, jotka koskevat useimpia Arduinon tyyppejä (mukaan lukien Uno, Pro Mini, Pro Micro ja Nano).

E-muste moduuli Arduino
Kiinnitä Nimi Kiinnitä Nimi
1 VDD Vcc 3.3/5V
2 VSS Gnd Gnd
3 Sarjatiedot sisään 11 MOSI
4 Sarjakello sisään 13 SCK
5 /Chip Select 10
6 Data/Instr 9
7 Nollaa 8
8 Laite varattu 7

Vaihe 2: Lataa mukana toimitettu ohjelmisto

Voit käyttää mukana toimitettua ohjelmistoa tässä vaiheessa kuvatulla tavalla tai voit käyttää parannettua kirjastoani seuraavassa vaiheessa.

Etsi laitteesi osoitteesta BuyDisplay.com. Sivun alareunasta löydät ladattavan ZIP-tiedoston "Arduino Library and Example for 4-wire SPI". Napsauta tätä ladataksesi ja avataksesi Resurssienhallinnassa.

Windows Explorer näyttää tämän sisältävän yhden ylätason kansion "Libraries-Examples_ER-EPM0154-1R". (Nimi on hieman erilainen, jos omasi ei ole 1,54 tuuman malli.)

Kopioi tämä ylätason kansio Arduino-kirjastojen kansioon. Nimeä kansio uudelleen hiiren kakkospainikkeella ja poista nimestä "Libraries-Examples_".

(Jos haluat löytää Arduino -kirjastojen kansion, valitse Arduino IDE: stä Tiedosto… Asetukset ja merkitse Sketchbook -sijainti. Siirry tähän ja löydät Arduino -kirjastot -kansion luonnoskansioistasi.)

Avaa tämä kansio ja avaa sen sisällä oleva kirjasto. Vedä ja pudota kaikki tämän kansion tiedostot pääkansioon yksi taso ylöspäin ("ER-EPM0154-1R"). Poista (nyt tyhjä) "Libraries" -kansio.

Olet nyt asentanut tiedostot ja esimerkkiluonnoksen Arduino -kirjastoksi. Huomaa, että jos näyttösi ei ole 1,54 tuumaa, ainoa ero näyttää olevan kaksi riviä ER-ERM*-1.h: ssä, jotka määrittelevät leveyden ja korkeuden.

Napsauta Arduino IDE: ssä Tiedosto… Kohteet ja vieritä alas esittelyluonnoksen kohdalle ER-EPM0154-1R, jonka sinun pitäisi pystyä kääntämään ja suorittamaan heti, kun olet liittänyt näytön Arduinoosi.

Vaihe 3: Demon suorittaminen

Demon suorittaminen
Demon suorittaminen
Demon suorittaminen
Demon suorittaminen

Napsauta Arduino IDE: ssä Tiedosto… Esimerkkejä… ER-EPM0154-1R.

Liitä Arduino tietokoneeseesi USB -kaapelilla tai normaalisti.

Määritä Työkalut -kohdassa Taulu, suoritin ja portti.

Valitse Luonnos -kohdassa Lataa.

Lataamisen jälkeen on pieni viive, ja kymmenen viive vilkkuu useita kertoja, kun se maalaa ensimmäisen kuvan. Katso demon läpi.

Vaihe 4: Parannetun kirjaston käyttö

Voit ladata parannetun kirjastoni githubista osoitteesta

HUOM. Luotan siihen, että kirjastoni toimii minkä tahansa kokoisen näytön kanssa, mutta olen itse asiassa testannut sitä vain 1,54 tuuman mallilla. Jos käytät toista näyttöä, kerro siitä kommentin lopussa tämän opetusohjelman vahvistamiseksi, että se toimii. Mutta jos ei, yritän parhaani saada sinut liikkeelle.

Lataa ja tallenna zip -tiedosto. Napsauta Arduino IDE: ssä Luonnos… Sisällytä kirjasto… Lisää. ZIP -kirjasto ja valitse tallennettu zip -tiedosto.

Kirjastossani on useita pieniä parannuksia:

  • Sen avulla voidaan käyttää erilaisia Arduino -pin -numeroita (paitsi MOSI).
  • Samaa kirjastoa voidaan käyttää kaiken kokoisille laitteille.
  • Uusi 50% varjostettu täyttö ja pilkullinen täyttö (satunnaiset pikselit asetetaan) tarjotaan.

Kirjasto toimitetaan tavallisena Arduino -pakattuna (zip) tiedostona. Lataa se Lataukset -kansioon (tai minne haluat) ja valitse Arduino IDE: ssä Luonnos… Sisällytä kirjasto… Lisää ZIP -kirjasto.

Esimerkit-kohdasta löydät nyt E-ink_ER-EPM. Esimerkkejä luonnoksista on 3:

  • ER_EPM154-1R-Test: Alkuperäinen toimittajan esittely
  • E-ink_demo: Luonnos kehitettiin seuraavissa vaiheissa
  • E-ink_rotate: Esittely kuvan kiertämisestä.

Vaihe 5: Ohjelmoi se itse

Valitettavasti toimittajan antamalla koodilla ei ole dokumentaatiota, eikä esimerkkikoodia ole kommentoitu riittävästi. Tämä tekee sen käytöstä vaikeampaa kuin sen pitäisi olla, ja tämän ohjeen päätarkoitus on korjata se.

Peruskonseptit

Koska Arduinolla on rajallinen määrä käytettävissä olevaa RAM -muistia, kirjaston avulla voit piirtää tai kirjoittaa pienille ruudun osille kerrallaan ja ladata ne yksitellen laitteen sisäiseen muistiin. Vain kun olet ladannut kaikki tarvitsemasi osat, kehotat sitä näyttämään, mitä sillä on muistissa.

Nämä näytön osat tunnetaan "Paint" -objekteina. Tarvitset vain yhden, ja määrität kullekin näytön osalle sen korkeuden, leveyden ja pyörimisen. Kun olet valmis, lataat sen ja määrität sen sijainnin näytöllä, johon se ladataan, ja onko sen oltava mustavalkoinen vai puna -valkoinen.

Näytön vasemmassa yläkulmassa on vaaka- (x) ja pystysuora (y) -koordinaatit (0, 0), vasemmassa alakulmassa on (0, 151) ja oikeassa yläkulmassa on (151, 0).

Alustus

Avaa E-ink_demo-luonnos Arduino IDE: ssä ja seuraa sitä, kun kuvailen kirjaston käyttöä.

Luonnoksen yläosassa näet seuraavat rivit, joita tarvitaan aina:

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

#Include -rivit vetävät tarvittavat kirjastot. SPI.h on tavallinen Arduino-kirjasto, mutta muut ovat osa e-ink-kirjastoa.

Määritämme nimet värittömille (valkoisille) kuvapisteille ja VÄRISILLE (mustille tai punaisille). (Huomautus eurooppalaisille kollegoilleni: käytetään amerikkalaista COLOR -oikeinkirjoitusta.)

Epd epd; rivi luo sähköisen paperilaiteobjektin, jossa näytämme. Tämän on oltava täällä luonnoksen alussa, jotta se on käytettävissä setup () - ja loop () -toimintojen yhteydessä.

Jos sinulla on erikokoinen näyttö, voit korvata EPD -rivin seuraavasti:

Epd epd (LEVEYS, KORKEUS);

(määritellyt WIDTH ja HEIGHT aiemmin #define -lausekkeissa.)

Samalla tavalla voit määrittää ei-oletusnumerot seuraavilla tavoilla:

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

Asennuksessa () meidän on alustettava laite seuraavasti:

Sarja.alku (9600)

if (epd. Init ()! = 0) {Serial.print ("e-Paper init epäonnistui"); palata; }

(Itse asiassa epd. Init () ei koskaan palauta virhettä, mutta tuleva parannus saattaa havaita näytön puuttumisen tai toimimattoman.)

Vaihe 6: Tekstin kirjoittaminen

Tekstin kirjoittaminen
Tekstin kirjoittaminen

Käännä E-ink_demo-kohdassa huomio silmukkaan (). Tyhjennä ensin näyttö:

epd. ClearFrame ()

(Tämä ei ole välttämätöntä, jos aiot näyttää oman kuvan.)

Ennen kuin voimme piirtää mitään (tekstiä tai grafiikkaa), meidän on luotava Paint -objekti, johon voi piirtää:

allekirjoittamaton char -kuva [1024]

Maalimaali (kuva, 152, 18); // leveyden tulee olla 8: n monikerta

Tämä varaa jonkin verran tilaa (1024 tavua) ja jakaa sen Paint -objektille, jonka toinen rivi lopettaa. Tämä on alustavasti määritetty 152 pikseliä leveäksi ja 18 pikseliä syväksi. Voimme määrittää sen myöhemmin uudelleen käytettäväksi tarpeen mukaan, mutta huomaa: leveyden on oltava muultiple 8, koska 8 pikseliä tallennetaan tavua kohden, emmekä voi jakaa tavuja. (Se itse asiassa pyöristää sen tarvittaessa, mutta se voi sitten olla hämmentävää, kun näyttösi ei näytä siltä, miltä sen pitäisi näyttää.

Nyt meidän on tyhjennettävä maaliobjekti VÄRITÖN (valkoinen), sitten kohtaan (x, y) = (22, 2) kirjoitetaan "e-ink Demo" käyttäen 16 pikselin korkeaa fonttia ja VÄRI (näytetään VÄRITÖN tausta.

kirkas (VÄRITÖN)

paint. DrawStringAt (12, 2, "e-paperi-esittely", & Font16, VÄRI);

Huomaa, että koordinaatit (22, 2) ovat merkkijonon ensimmäisen merkin vasen yläkulma ja että ne ovat 22 pikseliä ja 2 kuvapistettä alaspäin suhteessa maaliobjektin vasempaan yläkulmaan, eivät koko näyttöön. Teksti näyttää parhaalta vähintään yhden pikselin alaspäin maalikohteen yläosasta.

Seuraavat fontit ovat käytettävissä:

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

Meidän on nyt vain lähetettävä maaliobjekti ("maali") laitteelle ("epd"):

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

SetPartialWindowBlack on menetelmä, jota käytämme epd -objektiin käyttämällä kuvaa ja sen leveys- ja syvyysominaisuuksia. Kehotamme sitä kirjoittamaan tämän kuvan laitteelle (x, y) = (0, 3). Ja väitämme, että VÄRISET pikselit ovat mustia.

Se ei ollut liian vaikeaa, vai mitä? Kokeillaan toista.

maali. Kirkas (VÄRINEN);

paint. DrawStringAt (20, 2, "(Valkoinen väri)", & Font12, VÄRITÖN); epd. SetPartialWindowRed (paint. GetImage (), 0, 24, paint. GetWidth (), paint. GetHeight ());

Käytämme samaa maaliobjektia uudelleen ja samaa leveyttä ja korkeutta, mutta tällä kertaa tyhjennä se värilliseksi ja kirjoita sille VÄRITÖN merkkijono. Ja muutoksen vuoksi teemme VÄRISET pikselit punaisiksi ja kirjoitamme ne laitteeseen (0, 24), aivan ensimmäisenä.

Olemme kirjoittaneet kaksi maaliobjektia laitteen muistiin, mutta emme ole vielä kehottaneet sitä näyttämään niitä. Teemme tämän seuraavan lausunnon avulla:

epd. DisplayFrame ();

(E-ink_demo-luonnoksessa jätämme tämän loppuun asti, piirtämisen jälkeen lisää, mutta voit lisätä sen tänne, jos haluat, mybe ja sen jälkeen viive (10000); antaa sinulle aikaa ihailla käsityötäsi.

Vaihe 7: Viivojen ja suorakulmioiden piirtäminen

Viivojen ja suorakulmioiden piirtäminen
Viivojen ja suorakulmioiden piirtäminen

Katsotaan kuinka piirtää viivoja ja suorakulmioita. Aiomme käyttää samaa maaliobjektia, mutta meidän on määritettävä se uudelleen 40 pikselin leveäksi ja 36 pikselin korkeudeksi. Tyhjennä se värittömälle.

maali. SetWidth (40);

maali. SetHeight (36); maali. Kirkas (VÄRITTÖMÄ);

Piirrämme (VÄRISET) suorakulmion, jossa on vasen yläkulma (5, 3) ja oikea alareuna (35, 33) suhteessa maalikohteeseen, kuten tavallista. Piirrämme myös sen lävistäjät viivoiksi (5, 3) - (35, 33) ja (35, 3) - (5, 33). Lopuksi kirjoitamme koko maalikohteen (punainen) näytölle (32, 42).

//YLIN RIVI:

// Rectange -maali. Clear (VÄRITÖN); paint. DrawRectangle (5, 3, 35, 33, COLORED;) paint. DrawLine (5, 3, 35, 33, COLORED); DrawLine (35, 3, 5, 33, VÄRI); epd. SetPartialWindowRed (paint. GetImage (), 32, 42, paint. GetWidth (), paint. GetHeight ());

Kirjasto tarjosi myös täytetyn suorakulmion, mutta halusin varjostetun, joten lisäsin uuden menetelmän. Teemme vielä kaksi suorakulmioita, yksi varjostettu ja toinen täytetty, ja asetamme ne ensimmäisen oikealle puolelle vuorotellen mustan ja punaisen kanssa.

// Varjostettu Rectange -maali. Clear (VÄRITÖN); paint. DrawShadedRectangle (5, 3, 35, 33); epd. SetPartialWindowBlack (paint. GetImage (), 72, 42, paint. GetWidth (), paint. GetHeight ()); // Täytetty suorakulmion maali. Clear (VÄRITÖN); paint. DrawFilledRectangle (5, 3, 35, 33, COLORED); epd. SetPartialWindowRed (paint. GetImage (), 112, 42, paint. GetWidth (), paint. GetHeight ());

Vaihe 8: Piirrosten piirtäminen

Piirien piirtäminen
Piirien piirtäminen

Ympyrät on yhtä helppo piirtää. Kahden kulman koordinaattien sijasta meidän on annettava keskipisteen koordinaatit ja säde. Tyhjennämme maalikohteen ja laitamme ympyrän kohtaan (20, 15) (suhteessa maaliobjektiin) ja säteeseen 15. Ja toista varjostettu ja täytetty ympyrä.

// TOINEN RIVI

// Ympyrämaali. Clear (VÄRITTÖMÄ); maali. DrawCircle (20, 18, 15, VÄRI); epd. SetPartialWindowBlack (paint. GetImage (), 32, 78, paint. GetWidth (), paint. GetHeight ()); // Shaded Circle -maali. Clear (VÄRITÖN); paint. DrawShadedCircle (20, 18, 15); epd. SetPartialWindowRed (paint. GetImage (), 72, 78, paint. GetWidth (), paint. GetHeight ()); // Täytetty ympyrämaali. Clear (VÄRITTÖMÄ); paint. DrawFilledCircle (20, 18, 15, COLORED); epd. SetPartialWindowBlack (paint. GetImage (), 112, 78, paint. GetWidth (), paint. GetHeight ());

Vaihe 9: VÄRITTÖMÄ VÄRISELLÄ taustalla

VÄRITTÖMÄ VÄRISELLÄ taustalla
VÄRITTÖMÄ VÄRISELLÄ taustalla

Täällä mennään tunnetusti! Joten kun olemme rullalla, tehkäämme vielä kolme ympyrää alla olevalle riville, tällä kertaa VÄRITTÖMÄN VÄRITYISELLE maalikohteelle, kuten teimme toisen tekstirivin kanssa.

// KOLMAS RIVI

// Ympyrämaali. Clear (COLORED); maali. DrawCircle (20, 18, 15, VÄRITTÖMÄ); epd. SetPartialWindowRed (paint. GetImage (), 32, 114, paint. GetWidth (), paint. GetHeight ()); // Varjostettu ympyrämaali. Kirkas (VÄRI) maali. DrawShadedCircle (20, 18, 15); epd. SetPartialWindowBlack (paint. GetImage (), 72, 114, paint. GetWidth (), paint. GetHeight ()); // Täytetty ympyrämaali. Clear (COLORED); paint. DrawFilledCircle (20, 18, 15, VÄRITTÖMÄ); epd. SetPartialWindowRed (paint. GetImage (), 112, 114, paint. GetWidth (), paint. GetHeight ());

Varjostetun täytön lisäksi on myös pilkullinen täyttö, joka värittää satunnaisia pikseleitä. Joten yllä olevan varjostetun ympyrän sijasta olisimme voineet laittaa

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

Viimeinen parametri (25) on tiheys eli värillisten pikselien prosenttiosuus. Jos se jätetään pois, oletetaan 50%.

On myös DrawSpeckledRectangle, jossa on valinnainen lisäparametri, joka määrittää tiheyden.

Vaihe 10: Kierto

Kierto
Kierto
Kierto
Kierto

Mitä tahansa voimme piirtää, voimme kääntää 90, 180 tai 270 astetta. (Laskemme kierroksia myötäpäivään.)

Voimme soveltaa ROTATE -ominaisuutta maaliobjektiin, mutta on tärkeää ymmärtää, että ei ole väriobjekti, jota pyöritetään, vaan kaikki, mitä siihen kirjoitat. Joten jos haluat pystysuuntaista tekstiä, sinun on määritettävä maalauskohteesi niin pitkiksi ja ohuiksi pystysuunnassa kuin vaakasuunnassa.

Joten jos haluat, että tekstiäsi käännetään myötäpäivään 90 astetta niin, että se lukee ylhäältä alas (vasemman oikealta sijasta), maalauskohteen oikea yläkulma on (0, 0) mitä tahansa kirjoitustasi varten tai piirrä siihen x -mittaus kulmasta alaspäin ja y kulmasta vasemmalle.

Olet todennäköisesti huomannut, että jätimme välilyönnin näytön vasempaan reunaan. Kirjoitetaan siis tekstiä sinne käännettynä 270 astetta eli lukeminen alhaalta ylöspäin. Tämä asettaa (0, 0) vasempaan alakulmaan.

Huomaa, että vaikka käännät maaliobjektia, kierto koskee vain sitä, kun piirrät siihen pikseleitä. Kun tulet kirjoittamaan sen laitteelle, se on edelleen vasemman yläkulman koordinaatit, jotka sinun on annettava SetPartialWindowille.

Joten yhteenvetona, määritämme maaliobjektimme leveydeksi 32 ja korkeudeksi 110, ja annamme sille ROTATE_270 -ominaisuuden. Ei niin, että meidän on tehtävä tämä kaikki ennen kuin kirjoitamme tai piirrämme siihen mitään.

maali. SetWidth (32);

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

Tyhjennä se värilliseksi ja kirjoita siihen VÄRITTÖMÄ merkkijono ja aseta se sitten kohtaan (0, 42). (Tämä on vasen yläkulma, muista. Unohda pikselien kierto.)

maali. Kirkas (VÄRINEN); paint. DrawStringAt (8, 8, "Sivuttain!", & Font16, VÄRITTÖMÄ); epd. SetPartialWindowBlack (paint. GetImage (), 0, 42, paint. GetWidth (), paint. GetHeight ());

Lopuksi meidän on kehotettava laitetta näyttämään kaikki sille antamamme pikselit. Ja jos emme halua muuttaa sitä jonkin aikaa ja säästää akkuvirtaa, voimme laittaa sen nukkumaan, ja miksi et laittaisi Arduinoa myös nukkumaan, jotta hänet herätettäisiin, kun on aika ottaa ja näyttää toinen mittaus.

epd. DisplayFrame ();

epd. Sleep ();

Toinen esimerkki luonnoksesta näyttää pyörimisen 90, 180 ja 270 astetta. Nyt sinun pitäisi pystyä seuraamaan sitä itse.

Vaihe 11: Bittikarttojen piirtäminen

Bittikarttojen piirtäminen
Bittikarttojen piirtäminen

Toimittajan esittely sisältää muutaman bittikarttakuvan näyttämisen. Nämä on helppo luoda työkalulla, jonka voi ladata

www.buydisplay.com/image2lcd

Se tulee zip -tiedostona, joka sisältää.exe -asennustiedoston ja tekstitiedoston, joka sisältää lisenssiavaimen. Laajenna se ja kaksoisnapsauta.exe-tiedostoa asentaaksesi sen.

On selvää, että näytettävälle sisällölle on asetettu melko ankaria rajoituksia, koska E-mustepikselit voivat olla joko päällä tai pois päältä, joten ne eivät voi edustaa harmaata tasoa. Mutta on mahdollista peittää suorakulmainen maaliobjekti kuvan päälle. Voit halutessasi näyttää logon, symbolit tai kiinteän tekstin hienolla fontilla, jolle voit levittää muuttuvaa tekstiä tai grafiikkaa, kuten palkki- tai ympyräkaaviota, mikä viittaa mahdollisesti nesteen tasoon.

Voit luoda kuvan millä tahansa tutulla piirustusohjelmistolla tai skannata luonnoksena tai piirustuksena, mutta kummassakin tapauksessa sinun on pystyttävä pienentämään se vain kahteen tasoon. Tallenna se muodossa.gif,-j.webp

Käynnistä Image2Lcd. Alareunassa näet Register -välilehden. Napsauta tätä ja kirjoita rekisteröintikoodi, joka tuli tekstitiedostoon lataamaasi zip -tiedostoon. Tämä poistaa peittokuvan kuvasta.

Avaa Image2Lcd -tiedostosi. Varmista vasemmassa ruudussa, että sinulla on

  • Lähdön tiedostotyyppi: C -taulukko
  • Skannaustila: Vaakaskannaus
  • BitsPixel: Yksivärinen
  • Suurin leveys ja korkeus: näytön koko ja
  • Sisällytä pään tiedot on poistettava.

Napsauta Maksimi leveys ja korkeus -kohdan vieressä olevaa painiketta käsitelläksesi. Käsittelyn tulos näytetään. Saatat joutua säätämään kirkkauden ja kontrastin liukusäätimiä saadaksesi parhaat tulokset.

Napsauta Kirkkaus -liukusäätimen yläpuolella olevaa Käänteinen väri -valintaruutua ja tee siitä negatiivinen kuva, joka jostain syystä on tarpeen, ja tallenna se imagedata.cpp -tiedostona Arduino -luonnoksen sisältävään kansioon valitsemalla Tallenna. Seuraavan kerran, kun avaat luonnoksen Arduino IDE: llä, sinun pitäisi nähdä se uutena välilehdenä.

Vaihe 12: Bittikartan näyttäminen

Bittikarttasi näyttäminen
Bittikarttasi näyttäminen

Lisää Arduino -luonnoksen päätiedostoon, heti ylhäällä olevien #include -rivien jälkeen, lisää:

#include "imagedata.h"

Luo uusi välilehti (napsauta välilehtirivin lopussa olevaa alanuolta) ja kutsu sitä imagedata.h. Lisää siihen seuraavat 2 riviä:

extern const unsigned char IMAGE_BLACK ;

extern const unsigned char IMAGE_RED ;

Imagedata.cpp -tiedoston ensimmäinen rivi alkaa

const unsigned char gImage_image [2888] = {

(Hakasulkeissa oleva numero on erilainen, jos et käytä 1,54 tuuman näyttöä.) Korvaa tämä merkinnällä

const unsigned char IMAGE_BLACK OHJELMA = {

Tämä koskee mustavalkoista kuvaa. Jos haluat sen punaiseksi ja valkoiseksi, vaihda se

const unsigned char IMAGE_RED OHJELMA = {

Lisää juuri ennen tätä riviä

#sisältää

#include "imagedata.h"

Olet nyt valmis näyttämään kuvasi. Lisää päätiedostosi silmukkaan ()

epd. ClearFrame ();

epd. DisplayFrame (IMAGE_BLACK, NULL);

Tai jos se oli punainen kuva, jonka olet luonut, toisen rivin pitäisi olla

epd. DisplayFrame (NULL, IMAGE_RED);

Itse asiassa voit luoda yhdistetyn punaisen ja mustan kuvan muuntamalla punaiset ja mustat osat erikseen Image2Lcd: llä ja näyttämällä ne molemmat

epd. DisplayFrame (IMAGE_BLACK, IMAGE_RED);

Kuitenkin kaikki pikselit, jotka on määritetty sekä mustiksi mustavalkoisessa kuvassa että punaisiksi punaisina ja valkoisina, tulevat punaisiksi.

Lopuksi voit peittää kuvasi millä tahansa aiemmin oppimastamme teksti- tai grafiikkatoiminnoista. Halusin lisätä Twitter -kahvani, joten lisäsin

Maalimaali (kuva, 20, 152); // leveyden tulee olla 8: n monikerta

paint. SetRotate (ROTATE_270); maali. Kirkas (VÄRITTÖMÄ); 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 ();

Suositeltava: