Indholdsfortegnelse:

Sådan tilføjes en E-Ink-skærm til dit projekt: 12 trin (med billeder)
Sådan tilføjes en E-Ink-skærm til dit projekt: 12 trin (med billeder)

Video: Sådan tilføjes en E-Ink-skærm til dit projekt: 12 trin (med billeder)

Video: Sådan tilføjes en E-Ink-skærm til dit projekt: 12 trin (med billeder)
Video: Zigbee lys-, temperatur- og fugtighedssensor med Moes e-ink-skærm 2024, Juli
Anonim
Sådan tilføjes en E-Ink-skærm til dit projekt
Sådan tilføjes en E-Ink-skærm til dit projekt
Sådan tilføjes en E-Ink-skærm til dit projekt
Sådan tilføjes en E-Ink-skærm til dit projekt

Mange projekter involverer overvågning af en slags data, såsom miljødata, ofte ved hjælp af en Arduino til kontrol. I mit tilfælde ville jeg overvåge saltniveauet i mit blødgøringsmiddel. Du vil måske have adgang til dataene via dit hjemmenetværk, men lige så gerne vil du vise dem, hvor de måles. Eller du kan have en fjerntilsluttet skærm, der altid er tændt, på et mere bekvemt sted.

Der er nu flere slags skærme, du kan bruge, alle ret billige, men med forskellige fordele og ulemper:

  • Et alfanumerisk LCD -display er det billigste, men også det mest begrænsede.
  • En OLED -skærm kan vise grafik, men de billige er meget små. Det andet foto viser en 128 x 64 pixel OLED-skærm ved siden af en E-Ink.
  • Et E-Ink (eller E-Paper) display er noget større og dermed lettere at læse, og har den fordel, at displayet bevares, selv når det er slukket! Men det tager flere sekunder at tegne displayet igen.

E-Ink-displayet virkede ideelt til min applikation, da jeg kun kunne programmere Arduino til at vågne kun med få timers mellemrum, tage en læsning og vise den, før jeg gik i dvale igen. Det har da ingen betydning, at det tager flere sekunder at tegne displayet igen.

I en sådan applikation kan det gennemsnitlige strømforbrug indrettes til at være så lavt, at et 9V litiumrøgdetektorbatteri kan fås til at holde i 10 år! Desuden viser nogle af disse skærme tre farver: hvid, sort og rød (eller gul). Ideel, hvis du gerne vil vise en advarsel eller advarsel med rødt.

Forbrugsvarer

De billigste E-Ink-skærme, jeg har fundet, sælges af BuyDisplay, som også fås hos mange eBay-sælgere. Desværre lader dokumentationen meget tilbage at ønske, så jeg tog på mig at skrive en tutorial - læs videre!

Afhængigt af dine krav og dit budget kan du vælge mellem forskellige størrelser:

  • 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 "(296x128 = 37, 888 pixels)
  • 4,2 "(400x300 = 120, 000 pixels)
  • 5,83 "(640x480 = 307, 200 pixels)
  • 7,5 "(880x528 = 464, 640 pixels)

(Sortimentet er udvidet siden sidste gang jeg kiggede, så det er muligvis udvidet yderligere, når du læser dette.)

De fås som enten 2-farve (sort/hvid) eller 3 farver (sort/rød/hvid eller sort/gul/hvid). Denne instruks antager, at du bruger den røde, men hvis du har valgt den gule version, skal du blot læse "gul" for "rød" hele vejen igennem.

Vælg en SPI-version (4-leder). Jeg brugte 1,54 modellen, som er en meget flot størrelse.

Trin 1: Tilslutning af din skærm

Tilslutning af din skærm
Tilslutning af din skærm

Disse skærme leveres med en 2x4 pin header. Pin -numrene er tydeligt mærket, pins 7, 5, 3 og 1 (fra venstre mod højre) langs den øverste række og 8, 6, 4, 2 langs bunden.

Din skærm leveres muligvis med et 8-vejs patchkabel, hvilket gør forbindelsen let. (Mit patchkabel har 2 røde ledninger og 2 brune. De kan ikke udskiftes!

Følgende tabel viser forbindelserne, der gælder for de fleste typer Arduino (herunder Uno, Pro Mini, Pro Micro og Nano).

E-ink modul Arduino
Pin Navn Pin Navn
1 VDD Vcc 3.3/5V
2 VSS Gnd Gnd
3 Serielle data i 11 MOSI
4 Serielt ur ind 13 SCK
5 /Chip Select 10
6 Data/Instr 9
7 Nulstil 8
8 Enhed optaget 7

Trin 2: Download den medfølgende software

Du kan bruge den medfølgende software som beskrevet i dette trin, eller du kan bruge mit forbedrede bibliotek i det næste trin, men ét.

Find din enhed på BuyDisplay.com. Mod bunden af siden finder du en ZIP-fil "Arduino-bibliotek og eksempel til 4-tråds SPI". Klik på dette for at downloade og åbne i Windows Stifinder.

Windows Stifinder viser, at den indeholder en enkelt mappe på topniveau "Libraries-Exempels_ER-EPM0154-1R". (Navnet vil være lidt anderledes, hvis dit ikke er 1,54 "modellen.)

Kopiér denne mappe på øverste niveau til din Arduino biblioteksmappe. Højreklik for at omdøbe mappen, og slet "Biblioteker-eksempler_" fra navnet.

(For at finde din Arduino biblioteksmappe skal du i Arduino IDE klikke på File … Preferences og notere Sketchbook Location. Naviger til dette, og du finder Arduino "biblioteker" -mappen blandt dine sketchmapper.)

Åbn denne mappe, og åbn mappen "Biblioteker" i den. Træk og slip alle filerne i denne mappe til den overordnede mappe et niveau højere ("ER-EPM0154-1R"). Slet mappen (nu tom) "Biblioteker".

Du har nu installeret filerne og en testskitse som et Arduino -bibliotek. Bemærk, at hvis din skærm ikke er den 1,54 , synes den eneste forskel at være to linjer i ER-ERM*-1.h, der definerer BREDDE og HØJDE.

I Arduino IDE skal du klikke på File … Exampes og rulle ned til ER-EPM0154-1R for demoskitsen, som du skal kunne kompilere og køre, så snart du har forbundet din skærm til din Arduino.

Trin 3: Kørsel af demoen

Kører demoen
Kører demoen
Kører demoen
Kører demoen

I Arduino IDE skal du klikke på Fil … Eksempler … ER-EPM0154-1R.

Tilslut din Arduino til din computer med et USB -kabel, eller som du normalt gør.

Under Værktøjer skal du indstille kortet, processoren og porten.

Klik på Upload under Skitse.

Der vil være en lille forsinkelse efter upload er fuldført, og ti forsinkelser vil blinke et antal gange, da det maler det første billede. Se mens det går gennem demoen.

Trin 4: Brug af det forbedrede bibliotek

Du kan downloade mit forbedrede bibliotek fra github på

N. B. Jeg har en høj grad af tillid til, at mit bibliotek vil fungere med alle størrelseskompatible skærme, men jeg har faktisk kun testet det med 1,54 modellen. Hvis du bruger en anden, så lad mig det vide i kommentarerne i slutningen af denne instruks, for at bekræfte, at den virker. Men hvis den ikke gør det, vil jeg gøre mit bedste for at få dig i gang.

Download og gem zip -filen. I Arduino IDE skal du klikke på Skitse … Inkluder bibliotek … Tilføj. ZIP -bibliotek, og vælg den gemte zip -fil.

Mit bibliotek indeholder flere mindre forbedringer:

  • Det gør det muligt at bruge forskellige Arduino pin -numre (undtagen MOSI).
  • Det samme bibliotek kan bruges til enhver enhed.
  • En ny 50% skraveret udfyldning og en plettet udfyldning (tilfældige pixel sæt) leveres.

Biblioteket kommer som en standard Arduino -komprimeret (zip) fil. Download den til din Downloads -mappe (eller hvor du foretrækker det), og klik på Sketch… Include Library… Tilføj ZIP -bibliotek i Arduino IDE.

Under Eksempler finder du nu E-ink_ER-EPM. Der er 3 eksempelskitser:

  • ER_EPM154-1R-Test: Den originale demonstration leveret af leverandøren
  • E-ink_demo: Skitsen udviklede sig i de næste trin
  • E-ink_rotate: En demonstration af billedrotation.

Trin 5: Programmering af det selv

Der er desværre ingen dokumentation med leverandørens kode, og eksemplet på koden kommenteres heller ikke tilstrækkeligt. Dette gør det sværere end det burde være at bruge, og hovedformålet med denne instruktionsbog er at rette det.

Basale koncepter

Da en Arduino er begrænset i mængden af tilgængelig RAM, giver biblioteket dig mulighed for at tegne eller skrive i små dele af skærmen ad gangen og opgradere dem individuelt til enhedens mellemhukommelse. Først når du har uploadet alle de dele, du har brug for, fortæller du den til at vise, hvad den har i hukommelsen.

Disse dele af skærmen er kendt som "Paint" -objekter. Du behøver kun en, og for hver sektion på skærmen definerer du dens højde, bredde og rotation. Når du er færdig, uploader du den og definerer placeringen på skærmen, hvor den skal indlæses, og om den skal være sort og hvid eller rød og hvid.

Skærmens øverste venstre hjørne har vandrette (x) og lodrette (y) koordinater (0, 0), nederst til venstre er (0, 151) og øverst til højre er (151, 0).

Initialisering

Åbn te E-ink_demo-skitsen i Arduino IDE, og følg den, mens jeg beskriver, hvordan du bruger biblioteket.

Øverst på skitsen vil du se følgende linjer, som altid er nødvendige:

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

Linjerne #include trækker i de nødvendige biblioteker. SPI.h er et standard Arduino-bibliotek, men de andre er en del af e-ink-biblioteket.

Vi definerer navne for UFARVEDE (hvide) pixels og FARVEDE (sorte eller røde). (Bemærk til mine med -europæere: den amerikanske stavning af COLOR bruges.)

Epd epd; line opretter det elektroniske papirenhedsobjekt, som vi vil vise på. Dette skal være her i starten af skitsen for at gøre det tilgængeligt for funktionerne setup () og loop ().

Hvis du har en anden størrelse display, kan du erstatte EPD -linjen med:

Epd epd (BREDDE, HØJDE);

(har tidligere defineret BREDDE og HØJDE i #define udsagn.)

På samme måde kan du angive pin-numre, der ikke er standard, med:

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

Inden setup () skal vi initialisere enheden som følger:

Serial.begin (9600)

hvis (epd. Init ()! = 0) {Serial.print ("e-Paper init mislykkedes"); Vend tilbage; }

(Faktisk returnerer epd. Init () aldrig en fejl, men en fremtidig forbedring kan muligvis opdage fraværet af et display eller et ikke-fungerende.)

Trin 6: Skrivning af tekst

Skrive tekst
Skrive tekst

I E-ink_demo skal du rette din opmærksomhed mod loop (). Lad os først rydde displayet:

epd. ClearFrame ()

(Dette er faktisk ikke nødvendigt, hvis du er ved at vise dit eget billede.)

Inden vi kan tegne noget (hvad enten tekst eller grafik), skal vi oprette et Paint -objekt at trække på:

usigneret billedbillede [1024]

Mal maling (billede, 152, 18); // bredde skal være multiplumet af 8

Dette reserverer noget plads (1024 bytes) og allokerer det til Paint -objektet, der er henvist til den anden linje. Dette er foreløbigt konfigureret som 152 pixels bredt og 18 pixels dybt. Vi kan rekonfigurere det senere til genbrug efter behov, men bemærk: bredden skal være et muultiple på 8, da 8 pixels gemmes pr. Byte, og vi kan ikke opdele bytes. (Det vil faktisk afrunde det, hvis det er nødvendigt, men det kan så være gådefuldt, når dit display ikke ser ud, hvordan det skal.

Nu skal vi rydde malingsobjektet til UFARVET (hvid), så i position (x, y) = (22, 2) skriver vi "e-ink Demo" ved hjælp af en 16-pixel høj skrifttype og FARVET (for at vise mod UFARVET baggrund.

male. Clear (UFARVET)

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

Bemærk, at koordinaterne (22, 2) er øverste venstre hjørne af strengens første tegn og er 22 pixels ind og 2 pixels ned i forhold til det øverste venstre hjørne af malingobjektet, ikke hele displayet. Tekst ser bedst mindst en pixel ned fra toppen af malingsobjektet.

Følgende skrifttyper er tilgængelige:

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

Vi skal nu bare sende malingsobjektet ("maling") til enheden ("epd"):

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

SetPartialWindowBlack er en metode, som vi anvender på epd -objektet ved hjælp af billedet og dets bredde og dybdeegenskaber for malingobjektet. Vi fortæller det at skrive dette billede til enheden på (x, y) = (0, 3). Og vi siger, at de FARVEDE pixels skal være sorte.

Det var ikke for svært, var det? Lad os prøve en anden.

maling. Klar (FARVET);

paint. DrawStringAt (20, 2, "(hvid på farve)", og Font12, UFARVET); epd. SetPartialWindowRed (paint. GetImage (), 0, 24, paint. GetWidth (), paint. GetHeight ());

Vi genbruger det samme malingsobjekt og samme bredde og højde, men lad os denne gang rydde det til FARVET og skrive en UFARVET streng til det. Og for en ændring gør vi de FARVEDE pixels røde og skriver det til enheden på (0, 24), lige under den første.

Vi har skrevet de to malingobjekter til enhedens hukommelse, men endnu ikke fortalt det at vise dem. Vi gør dette med følgende erklæring:

epd. DisplayFrame ();

(I E-ink_demo-skitsen lader vi dette faktisk stå til sidst, efter at have tegnet nogle flere ting, men du kan indsætte det her, hvis du vil, mybe efterfulgt af forsinkelse (10000); for at give dig tid til at beundre dit håndværk.

Trin 7: Tegn linjer og rektangler

Tegning af linjer og rektangler
Tegning af linjer og rektangler

Lad os se, hvordan vi tegner linjer og rektangler. Vi kommer til at bruge det samme malingsobjekt, men vi skal omkonfigurere det som 40 pixels bredt og 36 pixels i højden. Vi rydder det til UFARVET.

paint. SetWidth (40);

paint. SetHeight (36); maling. Klar (UFARVET);

Vi tegner et (FARVET) rektangel med øverste venstre hjørne (5, 3) og nederste højre (35, 33) i forhold til malingsobjektet som normalt. Vi tegner også dets diagonaler som linjer fra (5, 3) til (35, 33) og fra (35, 3) til (5, 33). Endelig skriver vi hele malingsobjektet (rødt) til skærmen ved (32, 42).

// TOP RÆKKE:

// Rektangulær maling. Klar (UFARVET); paint. DrawRectangle (5, 3, 35, 33, COLORED;) paint. DrawLine (5, 3, 35, 33, COLORED); paint. DrawLine (35, 3, 5, 33, FARVET); epd. SetPartialWindowRed (paint. GetImage (), 32, 42, paint. GetWidth (), paint. GetHeight ());

Biblioteket, som det kom, gav også et fyldt rektangel, men hej, jeg ville have et skraveret, så jeg tilføjede en ny metode. Vi laver yderligere to rektangler, en skraveret og en fyldt, og placerer dem til højre for den første og skifter dem sort og rød.

// Skraveret rektangulær maling. Klar (UFARVET); paint. DrawShadedRectangle (5, 3, 35, 33); epd. SetPartialWindowBlack (paint. GetImage (), 72, 42, paint. GetWidth (), paint. GetHeight ()); // Fyldt rektangelmaling. Klar (UFARVET); paint. DrawFilledRectangle (5, 3, 35, 33, COLORED); epd. SetPartialWindowRed (paint. GetImage (), 112, 42, paint. GetWidth (), paint. GetHeight ());

Trin 8: Tegn cirkler

Tegning af cirkler
Tegning af cirkler

Cirkler er lige så lette at tegne. I stedet for koordinaterne for to hjørner skal vi angive koordinaterne for midten og radius. Vi rydder malingsobjektet og sætter derefter en cirkel ved (20, 15) (i forhold til malingsobjektet) og radius 15. Og gentag for en skraveret og en fyldt cirkel.

// ANDEN RÆKKE

// Cirkelmaling. Klar (UFARVET); paint. DrawCircle (20, 18, 15, FARVET); epd. SetPartialWindowBlack (paint. GetImage (), 32, 78, paint. GetWidth (), paint. GetHeight ()); // Shaded Circle paint. Clear (UFARVET); paint. DrawShadedCircle (20, 18, 15); epd. SetPartialWindowRed (paint. GetImage (), 72, 78, paint. GetWidth (), paint. GetHeight ()); // Fyldt cirkelmaling. Klar (UFARVET); paint. DrawFilledCircle (20, 18, 15, COLORED); epd. SetPartialWindowBlack (paint. GetImage (), 112, 78, paint. GetWidth (), paint. GetHeight ());

Trin 9: UFARVET på en FARVET baggrund

UFARVET på en FARVET Baggrund
UFARVET på en FARVET Baggrund

Vi kommer berømt videre her! Så mens vi er på rulle, lad os lave 3 cirkler mere på en række nedenfor, denne gang UFARVET på et FARVET malingobjekt, som vi gjorde med den anden tekstlinje.

// TREDJE RÆKKE

// Cirkelmaling. Klar (FARVET); paint. DrawCircle (20, 18, 15, UFARVET); epd. SetPartialWindowRed (paint. GetImage (), 32, 114, paint. GetWidth (), paint. GetHeight ()); // Shaded Circle paint. Clear (COLORED) paint. DrawShadedCircle (20, 18, 15); epd. SetPartialWindowBlack (paint. GetImage (), 72, 114, paint. GetWidth (), paint. GetHeight ()); // Fyldt cirkelmaling. Klar (FARVET); paint. DrawFilledCircle (20, 18, 15, UFARVET); epd. SetPartialWindowRed (paint. GetImage (), 112, 114, paint. GetWidth (), paint. GetHeight ());

Udover det skraverede fyld er der også en plettet fyld, som farver tilfældige pixels. Så i stedet for den skyggefulde cirkel ovenfor kunne vi have sat

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

Den sidste parameter (25) er densiteten, dvs. procentdelen af pixels, der skal farves. Hvis den udelades, antages 50%.

Der er også et DrawSpeckledRectangle, med en valgfri ekstra parameter, der angiver tætheden.

Trin 10: Rotation

Rotation
Rotation
Rotation
Rotation

Alt, hvad vi kan tegne, kan vi rotere 90, 180 eller 270 grader. (Vi tæller rotationer med uret.)

Vi kan anvende en ROTATE -egenskab på et malingobjekt, men det er vigtigt at forstå, at det ikke er malerobjektet, der roteres, men alt, hvad du skriver til det. Så hvis du vil have lodret tekst, skal du konfigurere dit malingobjekt så langt og tyndt i lodret retning i stedet for vandret.

Så hvis du vil have din tekst drejet med 90 grader med uret, så den læser fra top til bund (i stedet for fra venstre mod højre), vil det øverste højre hjørne af malingobjektet være (0, 0) med henblik på alt, hvad du skriver eller tegne i det, med x målt fra det hjørne nedad, og y fra det hjørne mod venstre.

Du har sikkert bemærket, at vi efterlod et mellemrum nede på venstre side af skærmen. Så lad os skrive noget tekst der roteret 270 grader, dvs. læse nedenfra og op. Dette vil sætte (0, 0) i nederste venstre hjørne.

Bemærk, at uanset hvordan du roterer et malingobjekt, gælder rotationen kun, når du tegner pixels på det. Når du kommer til at skrive det til enheden, er det stadig koordinaterne i øverste venstre hjørne, du skal give til SetPartialWindow.

Så for at opsummere, lad os konfigurere vores malingobjekt til at have bredde 32 og højde 110, og vi giver det en ROTATE_270 ejendom. Ikke at vi skal gøre alt dette, før vi skriver eller tegner noget til det.

paint. SetWidth (32);

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

Vi rydder den til FARVET og skriver en UFARVET streng til den, og placerer den derefter på (0, 42). (Det er det øverste venstre hjørne, husk. Glem enhver rotation af pixelerne i det.)

maling. Klar (FARVET); paint. DrawStringAt (8, 8, "sidelæns!" og skrifttype16, UFARVET); epd. SetPartialWindowBlack (paint. GetImage (), 0, 42, paint. GetWidth (), paint. GetHeight ());

Endelig skal vi fortælle enheden at vise alle de pixels, vi har givet den. Og hvis vi ikke har lyst til at ændre det et stykke tid og vil spare på batteriet, kan vi sætte det i dvale, og hvorfor ikke også sætte Arduino i dvale, for at blive vækket, når det er tid til at tage og vise en anden måling.

epd. DisplayFrame ();

epd. Sleep ();

Et andet eksempel skitse viser rotation gennem 90, 180 og 270 grader. Nu skulle du være i stand til at følge det selv.

Trin 11: Tegning af bitmaps

Tegning af bitmaps
Tegning af bitmaps

Leverandørens demo inkluderer visning af et par bitmapbilleder. Disse er nemme at oprette ved hjælp af et værktøj, som kan downloades fra

www.buydisplay.com/image2lcd

Den kommer som en zip -fil, der indeholder en.exe -installationsfil og en tekstfil, der indeholder en licensnøgle. Udvid den, og dobbeltklik derefter på.exe-filen for at installere den.

Det er klart, at der er temmelig alvorlige begrænsninger for, hvad du kan vise, da E-ink-pixels kun kan være enten til eller fra og derfor ikke kan repræsentere gråtoner. Men det er muligt at lægge et rektangulært malingobjekt på et billede. Du vil måske vise et logo, symboler eller fast tekst med en fancy skrifttype, hvorpå du kan overlejre variabel tekst eller grafik, f.eks. Et søjle- eller cirkeldiagram, hvilket måske angiver noget som et væskestand.

Du kan oprette dit billede med den tegningssoftware, du kender, eller du kan scanne en skitse eller tegning, men i begge tilfælde skal du være i stand til at reducere det til kun 2 niveauer. Gem det som.gif,-j.webp

Start Image2Lcd. I bunden vil du se en fane Registrer. Klik på dette, og indtast registreringskoden, der kom i en tekstfil i den zip -fil, du downloadede. Dette fjerner et overlay på billedet.

Åbn din billedfil i Image2Lcd. Sørg for, at du har det i venstre rude

  • Output filtype: C array
  • Scannetilstand: Horisontal scanning
  • BitsPixel: Monokrom
  • Max bredde og højde: størrelsen på din skærm og
  • Inkluder hoveddata skal ikke være markeret.

Klik på knappen ud for Maksimal bredde og højde, der skal behandles. Resultatet af behandlingen vil blive vist. Du skal muligvis justere skyderne Lysstyrke og Kontrast for at få de bedste resultater.

Klik på afkrydsningsfeltet Omvendt farve over skyderen Lysstyrke, hvilket gør det til et negativt billede, hvilket af en eller anden grund er nødvendigt, og klik derefter på Gem for at gemme det som imagedata.cpp i mappen, der indeholder din Arduino -skitse. Næste gang du åbner skitsen med Arduino IDE, skal du se den som en ny fane.

Trin 12: Visning af din bitmap

Visning af din bitmap
Visning af din bitmap

I hovedfilen i din Arduino -skitse, umiddelbart efter #include -linjerne øverst, skal du indsætte:

#include "imagedata.h"

Opret en ny fane (klik på pil ned for enden af fanebladet) og kald den imagedata.h. Indsæt følgende 2 linjer i den:

ekstern const usigneret char IMAGE_BLACK ;

ekstern const usigneret char IMAGE_RED ;

I din imagedata.cpp -fil starter den første linje med

const unsigned char gImage_image [2888] = {

(Tallet i firkantede parenteser vil være anderledes, hvis du ikke bruger 1,54”displayet.) Erstat dette med

const unsigned char IMAGE_BLACK PROGMEM = {

Dette er et sort / hvidt billede. Hvis du vil have den rød og hvid, skal du ændre den til

const unsigned char IMAGE_RED PROGMEM = {

Lige før denne linje tilføjes

#omfatte

#include "imagedata.h"

Du er nu klar til at vise dit billede. I loop () i din hovedfil, tilføj

epd. ClearFrame ();

epd. DisplayFrame (IMAGE_BLACK, NULL);

Eller hvis det var et rødt billede, du havde oprettet, skulle den anden linje være

epd. DisplayFrame (NULL, IMAGE_RED);

Faktisk kan du oprette et kombineret rødt og sort billede ved at konvertere de røde og sorte dele separat med Image2Lcd og vise dem begge med

epd. DisplayFrame (IMAGE_BLACK, IMAGE_RED);

Enhver pixel, der er angivet både som sort i det sort -hvide billede, og rød i den røde og hvide, kommer dog rødt ud.

Endelig kan du overlejre dit billede med en hvilken som helst af de tekst- eller grafikfunktioner, vi lærte om tidligere. Jeg ville tilføje mit Twitter -håndtag, så jeg tilføjede

Mal maling (billede, 20, 152); // bredde skal være multiplumet af 8

paint. SetRotate (ROTATE_270); maling. Klar (UFARVET); paint. DrawStringAt (20, 2, "@pleriche", og Font16, FARVET); epd. SetPartialWindowRed (paint. GetImage (), 0, 0, paint. GetWidth (), paint. GetHeight ()); epd. SetPartialWindowRed (paint. GetImage (), 0, 0, paint. GetWidth (), paint. GetHeight ()); epd. DisplayFrame ();

Anbefalede: