INHOUDSOPGAWE:

Hoe u 'n e-ink-skerm by u projek kan voeg: 12 stappe (met foto's)
Hoe u 'n e-ink-skerm by u projek kan voeg: 12 stappe (met foto's)

Video: Hoe u 'n e-ink-skerm by u projek kan voeg: 12 stappe (met foto's)

Video: Hoe u 'n e-ink-skerm by u projek kan voeg: 12 stappe (met foto's)
Video: How to Make Stained Glass Cards + How to Use Less Ink! 2024, November
Anonim
Hoe om 'n e-ink-skerm by u projek te voeg
Hoe om 'n e-ink-skerm by u projek te voeg
Hoe u 'n e-ink-skerm by u projek kan voeg
Hoe u 'n e-ink-skerm by u projek kan voeg

Baie projekte behels die monitering van 'n soort data, soos omgewingsdata, wat dikwels 'n Arduino vir beheer gebruik. In my geval wou ek die soutpeil in my waterversagmiddel monitor. U sal moontlik toegang tot die data via u tuisnetwerk wil hê, maar u kan dit ook wys waar dit gemeet word. Of u kan 'n altyd op afstand gekoppelde skerm op 'n meer gerieflike plek hê.

Daar is nou verskillende soorte skerms, almal redelik goedkoop, maar met verskillende voordele en nadele:

  • 'N Alfanumeriese LCD -skerm is die goedkoopste, maar ook die beperkste.
  • 'N OLED -skerm kan grafika vertoon, maar die goedkoop is baie klein. Die tweede foto toon 'n 128 x 64 pixel OLED-skerm langs 'n E-Ink.
  • 'N E-Ink (of E-Paper) skerm is ietwat groter en dus makliker om te lees, en het die voordeel dat die skerm behoue bly, selfs as dit afgeskakel is! Maar dit neem 'n paar sekondes om die skerm weer te teken.

Die E-Ink-skerm lyk ideaal vir my toepassing, aangesien ek die Arduino slegs elke paar uur kan wakker maak, lees en dit vertoon voordat ek weer gaan slaap. Dit het dan geen rede dat dit 'n paar sekondes neem om die skerm weer te teken nie.

In so 'n toepassing kan die gemiddelde stroomverbruik so laag wees dat 'n 9V litium -rookmelderbattery 10 jaar lank kan hou! Boonop vertoon sommige van hierdie skerms drie kleure: wit, swart en rooi (of geel). Ideaal as u 'n waarskuwing of waarskuwing in rooi wil vertoon.

Voorrade

Die goedkoopste E-Ink-skerms wat ek gevind het, word verkoop deur BuyDisplay, ook beskikbaar by baie eBay-verkopers. Ongelukkig laat die dokumentasie nog te wense oor, so ek het self besluit om 'n handleiding te skryf - lees verder!

Afhangende van u behoeftes en u begroting, kan u verskillende groottes kies:

  • 1,54 "(152x152 = 23, 104 pixels)
  • 2.13 "(212x104 = 22, 048 pixels)
  • 2.6 "(296x152 = 44, 992 pixels)
  • 2.7 "(176x264 = 46, 464 pixels)
  • 2,9 duim (296 x 128 = 37, 888 piksels)
  • 4,2 duim (400x300 = 120 000 pixels)
  • 5,83 "(640x480 = 307, 200 pixels)
  • 7,5 duim (880x528 = 464, 640 pixels)

(Die reeks het uitgebrei sedert ek dit laas gekyk het, so dit kan verder uitgebrei word sodra u dit lees.)

Hulle is beskikbaar as 2-kleur (swart/wit) of 3-kleur (swart/rooi/wit of swart/geel/wit). Hierdie instruksies neem aan dat u die rooi een gebruik, maar as u die geel weergawe gekies het, lees eenvoudig deurgaans "geel" vir "rooi".

Kies 'n SPI-weergawe (4-draad). Ek het die 1.54 model gebruik, wat 'n baie goeie grootte het.

Stap 1: Koppel u skerm

Koppel jou skerm
Koppel jou skerm

Hierdie skerms het 'n 2x4 -penkop. Die pennommers is duidelik gemerk, penne 7, 5, 3 en 1 (van links na regs) langs die boonste ry en 8, 6, 4, 2 langs die onderkant.

U skerm het moontlik 'n 8-rigting patchkabel, wat die verbinding maklik maak. (My patchkabel het 2 rooi drade en 2 bruin. Hulle is nie uitruilbaar nie!

Die volgende tabel gee die verbindings, wat van toepassing is op die meeste soorte Arduino (insluitend Uno, Pro Mini, Pro Micro en Nano).

E-ink module Arduino
Speld Naam Speld Naam
1 VDD Vcc 3.3/5V
2 VSS Gnd Gnd
3 Seriële data in 11 MOSI
4 Seriële klok in 13 SCK
5 /Chip Select 10
6 Data/Instr 9
7 Herstel 8
8 Toestel besig 7

Stap 2: Laai die meegeleverde sagteware af

U kan die sagteware wat in hierdie stap beskryf word, gebruik, of u kan my uitgebreide biblioteek in die volgende stap gebruik.

Soek u toestel op BuyDisplay.com. Onderaan die bladsy vind u 'n zip-lêer "Arduino Library and Example for 4-wire SPI". Klik hierop om dit af te laai en oop te maak in Windows Explorer.

Windows Explorer sal dit bevat as 'n enkele topvlak-vouer "Libraries-Example_ER-EPM0154-1R". (Die naam sal effens anders wees as die uwe nie die 1,54 duim -model is nie.)

Kopieer hierdie gids op die hoogste vlak in u gids Arduino biblioteke. Klik met die rechtermuisknop om die vouer te hernoem en verwyder "Biblioteke-voorbeelde_" uit die naam.

(Om u gids Arduino biblioteke te vind, klik in die Arduino IDE op File … Preferences en let op die Sketchbook Location. Naviger hierna, en u vind die Arduino "biblioteke" gids tussen u sketsvouers.)

Maak hierdie gids oop en maak die gids "Biblioteke" daarin oop. Sleep al die lêers in hierdie vouer een vlak hoër in die ouermap ("ER-EPM0154-1R"). Vee die (nou leë) gids "Biblioteke" uit.

U het nou die lêers en 'n voorbeeldskets geïnstalleer as 'n Arduino -biblioteek. Let daarop dat as u skerm nie die 1,54 een is nie, die enigste verskil twee reëls in ER-ERM*-1.h is wat WIDTH en HEIGHT definieer.

Klik in die Arduino IDE op File … Exampes en blaai af na ER-EPM0154-1R vir die demo-skets, wat u moet kan saamstel en laat loop sodra u die skerm aan u Arduino gekoppel het.

Stap 3: voer die demo uit

Die uitvoering van die demo
Die uitvoering van die demo
Die uitvoering van die demo
Die uitvoering van die demo

Klik in die Arduino IDE op File … Voorbeelde … ER-EPM0154-1R.

Koppel u Arduino aan u rekenaar met 'n USB -kabel, of soos u gewoonlik doen.

Stel die bord, verwerker en poort onder Gereedskap in.

Onder Skets, klik op Laai op.

Daar sal 'n geringe vertraging wees nadat die oplaai voltooi is, en tien keer sal die vertraging 'n paar keer flits terwyl dit die eerste prentjie skilder. Kyk terwyl dit deur die demo gaan.

Stap 4: Gebruik die verbeterde biblioteek

U kan my verbeterde biblioteek van github aflaai op

N. B. Ek het 'n groot mate van vertroue dat my biblioteek sal werk met enige skerm wat verenigbaar is, maar ek het dit eintlik net met die 1.54 -model getoets. As u 'n ander een gebruik, laat weet my dan in die kommentaar aan die einde van hierdie Instructable, om te bevestig dat dit werk. Maar as dit nie die geval is nie, sal ek my bes doen om u aan die gang te kry.

Laai die zip -lêer af en stoor dit. Klik in die Arduino IDE op Skets … Sluit biblioteek in … Voeg. ZIP -biblioteek by en kies die gestoorde zip -lêer.

My biblioteek bevat verskeie klein verbeteringe:

  • Dit laat verskillende Arduino -speldnommers toe (behalwe vir MOSI).
  • Dieselfde biblioteek kan vir enige grootte toestel gebruik word.
  • 'N Nuwe vulsel van 50% en 'n gespikkelde vulsel (ewekansige pixels) word voorsien.

Die biblioteek kom as 'n standaard Arduino -saamgeperste (zip) lêer. Laai dit af na u aflaai -lêergids (of waar u dit verkies), en klik in die Arduino IDE op Skets … Sluit biblioteek in … Voeg zip -biblioteek by.

Onder voorbeelde vind u nou E-ink_ER-EPM. Daar is 3 voorbeeldsketse:

  • ER_EPM154-1R-toets: die oorspronklike demonstrasie wat deur die verskaffer verskaf is
  • E-ink_demo: die skets het in die volgende stappe ontwikkel
  • E-ink_rotate: 'n demonstrasie van beeldrotasie.

Stap 5: programmeer dit self

Daar is ongelukkig geen dokumentasie met die kode wat deur die verskaffer verskaf is nie, en die voorbeeldkode word ook nie behoorlik kommentaar gelewer nie. Dit maak dit moeiliker om te gebruik, en die hoofdoel van hierdie instruksies is om dit reg te stel.

Basiese begrippe

Aangesien 'n beperkte hoeveelheid RAM beskikbaar is, kan die biblioteek tegelykertyd in klein gedeeltes van die skerm teken of skryf en dit individueel na die interne geheue van die toestel laai. Eers nadat u al die benodigde gedeeltes opgelaai het, sê u dit moet wys wat dit in u geheue het.

Hierdie dele van die skerm staan bekend as "Paint" -voorwerpe. U benodig slegs een, en vir elke gedeelte van die skerm definieer u die hoogte, breedte en rotasie. As u klaar is, laai u dit op en definieer u die posisie op die skerm om dit te laai en of dit swart en wit of rooi en wit moet wees.

Die linker boonste hoek van die skerm het horisontale (x) en vertikale (y) koördinate (0, 0), links onder (0, 151) en regs bo (151, 0).

Inisialisering

Maak die E-ink_demo-skets oop in die Arduino IDE en volg dit terwyl ek beskryf hoe u die biblioteek kan gebruik.

Bo -aan die skets sien u die volgende reëls wat altyd nodig is:

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

Die #include -reëls trek die vereiste biblioteke in. SPI.h is 'n standaard Arduino-biblioteek, maar die ander vorm deel van die e-ink-biblioteek.

Ons definieer name vir ONGEKLEURDE (wit) pixels en KLEURIG (swart of rooi). (Nota aan my mede -Europeërs: die Amerikaanse spelling van COLOR word gebruik.)

Die Epd epd; line skep die elektroniese voorwerp vir papierapparate waarop ons dit sal vertoon. Dit moet hier aan die begin van die skets wees om dit beskikbaar te stel vir die opset () en lus () funksies.

As u 'n ander grootte skerm het, kan u die EPD -reël vervang deur:

Epd epd (WIDTH, HEIGHT);

(met voorheen WIDTH en HEIGHT in #define statements verklaar.)

Op dieselfde manier kan u nie-standaard speldnommers spesifiseer met:

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

Binne setup () moet ons die toestel soos volg initialiseer:

Reeks.begin (9600)

if (epd. Init ()! = 0) {Serial.print ("e-Paper init misluk"); terugkeer; }

(Trouens, epd. Init () gee nooit 'n fout op nie, maar 'n toekomstige verbetering kan die afwesigheid van 'n skerm of 'n nie-funksionele.

Stap 6: Skryf teks

Teks skryf
Teks skryf

Draai u aandag in die E-ink_demo na lus (). Laat ons eers die skerm skoonmaak:

epd. ClearFrame ()

(Dit is eintlik nie nodig as u u eie prentjie wil vertoon nie.)

Voordat ons iets kan teken (teks of grafika), moet ons 'n Paint -voorwerp skep waarop ons kan teken:

ongetekende char beeld [1024]

Verf verf (prent, 152, 18); // breedte moet die veelvoud van 8 wees

Dit behou 'n bietjie ruimte (1024 grepe) en ken dit toe aan die Paint -voorwerp, onder die tweede reël. Dit is voorlopig gekonfigureer as 152 pixels breed en 18 pixels diep. Ons kan dit later herkonfigureer vir hergebruik, soos nodig, maar let op: die breedte moet 'n veelvoud van 8 wees, aangesien 8 pixels per byte gestoor word en ons nie die grepe kan verdeel nie. (Dit sal dit eintlik afrond as dit nodig is, maar dit kan dan raaiselagtig wees as u skerm nie lyk hoe dit moet nie.

Nou moet ons die verfvoorwerp skoonmaak na UNCOLORED (wit), dan op posisie (x, y) = (22, 2) skryf ons 'e-ink Demo' met 'n 16-pixel hoë lettertipe en COLORED (om teen die ONGEKLEURDE agtergrond.

verf. Helder (ONKLEUR)

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

Let daarop dat die koördinate (22, 2) in die linker boonste hoek van die eerste teken van die string is, en 22 pixels in en 2 pixels af is in verhouding tot die linker boonste hoek van die verfvoorwerp, nie die hele skerm nie. Teks lyk die beste ten minste een pixel van die bokant van die verfvoorwerp af.

Die volgende lettertipes is beskikbaar:

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

Ons moet nou net die verfvoorwerp ("verf") na die toestel stuur ("epd"):

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

SetPartialWindowBlack is 'n metode wat ons op die epd -voorwerp toepas, met behulp van die beeld en die breedte en diepte -eienskappe van die verfvoorwerp. Ons vertel dit om hierdie prent aan die toestel te skryf by (x, y) = (0, 3). En ons sê dat die GEKLEURDE pixels swart moet wees.

Dit was nie te moeilik nie, was dit? Kom ons probeer 'n ander een.

verf. Helder (KLEURIG);

paint. DrawStringAt (20, 2, "(Wit op kleur)", en Font12, ONKLEUR); epd. SetPartialWindowRed (paint. GetImage (), 0, 24, paint. GetWidth (), paint. GetHeight ());

Ons hergebruik dieselfde verfvoorwerp en dieselfde breedte en hoogte, maar laat ons dit hierdie keer na COLORED skoonmaak en 'n ongekleurde string daaraan skryf. En vir 'n verandering maak ons die GEKLEURDE pixels rooi en skryf dit aan die toestel op (0, 24), net onder die eerste een.

Ons het die twee verfvoorwerpe in die geheue van die toestel geskryf, maar ons het dit nog nie aangesê om dit te vertoon nie. Ons doen dit met die volgende stelling:

epd. DisplayFrame ();

(In die E-ink_demo-skets laat ons dit eintlik tot aan die einde, nadat ons nog 'n paar dinge geteken het, maar u kan dit hier invoeg as u wil, gevolg deur vertraging (10000); om u tyd te gee om u handewerk te bewonder.

Stap 7: Trek lyne en reghoeke

Trek lyne en reghoeke
Trek lyne en reghoeke

Kom ons kyk hoe om lyne en reghoeke te teken. Ons gaan dieselfde verfvoorwerp gebruik, maar ons moet dit herkonfigureer as 40 pixels breed en 36 pixels hoog. Ons sal dit vir UNCOLORED uitvee.

verf. SetWydte (40);

verf. SetHoogte (36); verf. Helder (ongekleurd);

Ons gaan soos gewoonlik 'n (GEKLEURDE) reghoek met linker boonste hoek (5, 3) en regs onder (35, 33) teken, relatief tot die verfvoorwerp. Ons sal ook sy diagonale teken as lyne van (5, 3) tot (35, 33) en van (35, 3) tot (5, 33). Laastens skryf ons die hele verfvoorwerp (rooi) op die skerm op (32, 42).

// TOP RY:

// Regverf verf. Helder (ongekleurd); paint. DrawRectangle (5, 3, 35, 33, COLORED;) paint. DrawLine (5, 3, 35, 33, COLORED); paint. DrawLine (35, 3, 5, 33, COLORED); epd. SetPartialWindowRed (paint. GetImage (), 32, 42, paint. GetWidth (), paint. GetHeight ());

Die biblioteek het ook 'n gevulde reghoek verskaf, maar ek wou 'n skaduwee hê, en ek het 'n nuwe metode bygevoeg. Ons maak nog twee reghoeke, een met 'n skaduwee en een wat gevul is, en plaas dit regs van die eerste een, en wissel dit van swart en rooi.

// Shaded Rectange paint. Clear (UNCOLORED); paint. DrawShadedRectangle (5, 3, 35, 33); epd. SetPartialWindowBlack (paint. GetImage (), 72, 42, paint. GetWidth (), paint. GetHeight ()); // Gevulde reghoekverf. Helder (ongekleurd); verf. DrawFilledRectangle (5, 3, 35, 33, COLORED); epd. SetPartialWindowRed (paint. GetImage (), 112, 42, paint. GetWidth (), paint. GetHeight ());

Stap 8: Trek sirkels

Sirkels teken
Sirkels teken

Sirkels is net so maklik om te teken. In plaas van die koördinate van twee hoeke, moet ons die koördinate van die middelpunt en die radius gee. Ons maak die verfvoorwerp skoon, plaas dan 'n sirkel op (20, 15) (relatief tot die verfvoorwerp) en radius 15. En herhaal vir 'n sirkel met 'n skaduwee en 'n gevulde sirkel.

// TWEEDE RY

// Sirkelverf. Helder (ongekleurd); paint. DrawCircle (20, 18, 15, COLORED); epd. SetPartialWindowBlack (paint. GetImage (), 32, 78, paint. GetWidth (), paint. GetHeight ()); // Gekleurde sirkelverf. Duidelik (ongekleurd); verf. DrawShadedCircle (20, 18, 15); epd. SetPartialWindowRed (paint. GetImage (), 72, 78, paint. GetWidth (), paint. GetHeight ()); // Gevulde sirkelverf. Duidelik (ongekleurd); verf. DrawFilledCircle (20, 18, 15, COLORED); epd. SetPartialWindowBlack (paint. GetImage (), 112, 78, paint. GetWidth (), paint. GetHeight ());

Stap 9: ONKLEUR op 'n GEKLEURDE agtergrond

ONKLEUR op 'n GEKLEURDE agtergrond
ONKLEUR op 'n GEKLEURDE agtergrond

Ons gaan beroemd hier aan die gang! Dus, terwyl ons op 'n rol is, laat ons nog drie sirkels op 'n ry hieronder doen, hierdie keer ONKLEUR op 'n GEKLEURDE verfvoorwerp, soos ons met die tweede teksreël gedoen het.

// DERDE RY

// Sirkelverf. Helder (KLEURIG); verf. DrawCircle (20, 18, 15, ongekleurd); epd. SetPartialWindowRed (paint. GetImage (), 32, 114, paint. GetWidth (), paint. GetHeight ()); // Shaded Circle -verf. Duidelike (KLEURIGE) verf. DrawShadedCircle (20, 18, 15); epd. SetPartialWindowBlack (paint. GetImage (), 72, 114, paint. GetWidth (), paint. GetHeight ()); // Gevulde sirkelverf. Helder (KLEURIG); verf. DrawFilledCircle (20, 18, 15, ongekleurd); epd. SetPartialWindowRed (paint. GetImage (), 112, 114, paint. GetWidth (), paint. GetHeight ());

Benewens die gevulde skaduwee, is daar ook 'n gespikkelde vulling wat willekeurige pixels kleur. Dus, in plaas van die skaduryke sirkel hierbo, kon ons dit gestel het

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

Die finale parameter (25) is die digtheid, dit wil sê die persentasie pixels wat gekleur moet word. As dit weggelaat word, word 50% aanvaar.

Daar is ook 'n DrawSpeckledRectangle, met 'n opsionele ekstra parameter wat die digtheid spesifiseer.

Stap 10: Rotasie

Rotasie
Rotasie
Rotasie
Rotasie

Alles wat ons kan teken, kan deur 90, 180 of 270 grade draai. (Ons tel rotasies kloksgewys.)

Ons kan 'n ROTATE -eienskap op 'n verfvoorwerp toepas, maar dit is belangrik om te verstaan dat dit nie die verfvoorwerp is wat draai nie, maar alles wat u daaraan skryf. As u dus vertikale teks wil hê, moet u u verfvoorwerp so lank en dun in 'n vertikale rigting instel in plaas van horisontaal.

As u dus wil hê dat u teks 90 grade met die kloksgewys draai, sodat dit van bo na onder kan lees (in plaas van links na regs), is die regter boonste hoek van die verfvoorwerp (0, 0) vir alles wat u skryf of teken daarin, met x gemes vanaf die hoek afwaarts, en y vanaf die hoek na links.

U het waarskynlik opgemerk dat ons 'n spasie aan die linkerkant van die skerm gelaat het. Laat ons dus 'n teks skryf wat 270 grade gedraai het, dit wil sê van onder na bo lees. Dit plaas (0, 0) in die linker onderste hoek.

Let daarop dat die rotasie slegs geld as u 'n verfvoorwerp draai terwyl u pixels daarop teken. As u dit aan die toestel skryf, is dit steeds die koördinate van die linker boonste hoek wat u aan SetPartialWindow moet gee.

Om dit weer te gee, laat ons ons verfvoorwerp konfigureer met breedte 32 en hoogte 110, en gee dit 'n ROTATE_270 -eiendom. Nie dat ons dit alles moet doen voordat ons iets skryf of daarop teken nie.

verf. SetWidth (32);

verf. SetHoogte (110); verf. SetRotate (ROTATE_270);

Ons sal dit na COLORED skoonmaak en 'n UNCOLORED string daaraan skryf, en dit dan plaas by (0, 42). (Onthou, dit is die boonste linkerhoek. Vergeet van die rotasie van die pixels daarin.)

verf. Helder (KLEURIG); paint. DrawStringAt (8, 8, "Sideways!", & Font16, UNCOLORED); epd. SetPartialWindowBlack (paint. GetImage (), 0, 42, paint. GetWidth (), paint. GetHeight ());

Uiteindelik moet ons die toestel vertel om al die pixels wat ons dit gegee het, te vertoon. En as ons dit nie 'n rukkie wil verander nie en die batterykrag wil bespaar, kan ons dit aan die slaap maak, en waarom laat ons die Arduino ook aan die slaap raak, sodat ons wakker word wanneer dit tyd is om 'n ander te neem en weer te wys? meting.

epd. DisplayFrame ();

epd. Sleep ();

'N Tweede voorbeeldskets toon rotasie deur 90, 180 en 270 grade. Teen hierdie tyd behoort u dit self te kan volg.

Stap 11: Teken bitmaps

Teken Bitmaps
Teken Bitmaps

Die demo van die verskaffer bevat die vertoning van 'n paar bitmap -beelde. Dit is maklik om te skep met behulp van 'n instrument waarmee u dit kan aflaai

www.buydisplay.com/image2lcd

Dit kom as 'n zip -lêer met 'n.exe -installeringslêer en 'n tekslêer met 'n lisensiesleutel. Vou dit uit en dubbelklik op die.exe-lêer om dit te installeer.

Dit is duidelik dat daar redelik ernstige beperkings is op wat u kan vertoon, aangesien E-ink-pixels slegs aan of af kan wees en dus nie grysvlakke kan verteenwoordig nie. Maar dit is moontlik om 'n reghoekige verfvoorwerp op 'n beeld te lê. U wil moontlik 'n logo, simbole of vaste teks met 'n spoggerige lettertipe vertoon waarop u veranderlike teks of grafika soos 'n staaf- of sirkeldiagram kan oorlê, wat kan dui op iets soos 'n vloeistofvlak.

U kan u beeld skep met watter tekenprogrammatuur u ook al ken, of u kan 'n skets of tekening skandeer, maar in elk geval moet u dit tot 2 vlakke kan verminder. Stoor dit as.gif,-j.webp

Begin Image2Lcd. Onderaan sien u 'n Register -oortjie. Klik hierop en voer die registrasiekode in wat in 'n tekslêer in die zip -lêer wat u afgelaai het, ingevoer het. Dit sal 'n oorlaag op die prent verwyder.

Maak u beeldlêer in Image2Lcd oop. Maak seker dat u dit in die linkerdeelvenster het

  • Uitset filetipe: C skikking
  • Skandeermodus: horisontale skandering
  • BitsPixel: Monochroom
  • Maksimum breedte en hoogte: die grootte van u skerm, en
  • Sluit kopdata in moet nie gemerk wees nie.

Klik op die knoppie langs die maksimum breedte en hoogte om te verwerk. Die resultaat van die verwerking sal getoon word. Miskien moet u die skuifknoppies Helderheid en Kontras aanpas om die beste resultate te kry.

Klik op die boks Omgekeerde kleur bo die skuifbalk Helderheid, wat 'n negatiewe beeld maak, wat om een of ander rede nodig is, en klik dan op Stoor om dit as imagedata.cpp in die gids met u Arduino -skets te stoor. Die volgende keer as u die skets met die Arduino IDE oopmaak, moet u dit as 'n nuwe oortjie sien.

Stap 12: Vertoon u bitmap

Vertoon u bitmap
Vertoon u bitmap

Voeg in die hooflêer van u Arduino -skets, onmiddellik na die #sluit reëls bo -aan:

#sluit "imagedata.h" in

Skep 'n nuwe oortjie (klik op die afpyltjie aan die einde van die oortjie -reël) en noem dit imagedata.h. Voeg die volgende 2 reëls daarin:

ekstern konst ongetekende char IMAGE_BLACK ;

ekstern konst ongetekende char IMAGE_RED ;

In u imagedata.cpp -lêer begin die eerste reël

const unsigned char gImage_image [2888] = {

(Die getal tussen hakies sal anders wees as u nie die 1,54”-skerm gebruik nie.) Vervang dit deur

const unsigned char IMAGE_BLACK PROGMEM = {

Dit is vir 'n swart en wit beeld. As u dit rooi en wit wil hê, verander dit na

const unsigned char IMAGE_RED PROGMEM = {

Voeg net voor hierdie reël by

#insluit

#sluit "imagedata.h" in

U is nou gereed om u beeld te vertoon. Voeg in lus () in u hooflêer by

epd. ClearFrame ();

epd. DisplayFrame (IMAGE_BLACK, NULL);

Of as dit 'n rooi prentjie was wat u geskep het, behoort die tweede reël te wees

epd. DisplayFrame (NULL, IMAGE_RED);

In werklikheid kan u 'n gekombineerde rooi en swart beeld skep deur die rooi en swart dele afsonderlik met Image2Lcd om te skakel en hulle albei met

epd. DisplayFrame (IMAGE_BLACK, IMAGE_RED);

Alle pixels wat in die swart -en -wit beeld sowel as swart in die rooi en wit prentjie gespesifiseer word, sal egter rooi verskyn.

Uiteindelik kan u u prentjie bedek met enige van die teks- of grafiese funksies waarvan ons vroeër geleer het. Ek wou my Twitter -handvatsel byvoeg, so ek het bygevoeg

Verf verf (prent, 20, 152); // breedte moet die veelvoud van 8 wees

verf. SetRotate (ROTATE_270); verf. Helder (ongekleurd); 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 ();

Aanbeveel: