Indholdsfortegnelse:
- Forbrugsvarer
- Trin 1: Formater SD -kortet
- Trin 2: Forbered Arduino
- Trin 3: Arduino Sketch
- Trin 4: Brug af dette program
Video: Arduino TFT -tegningsprogram: 4 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:26
Denne instruerbare beskriver koden, der går til at lave et tegneprogram til en Arduino TFT -skærm. Dette program er imidlertid unikt, fordi det giver mulighed for at gemme en tegning på SD -kortet og indlæse det senere for at foretage flere redigeringer!
Forbrugsvarer
- Arduino Uno - original eller en kompatibel klon
- TFT touchscreen - Jeg brugte en Elegoo skærm, hvilket betyder, at jeg havde brug for Elegoo drivere.
- Micro SD -læserkort - bruges til at gemme tegningsdata til SD -kort. Min skærm havde en indbygget læser under skærmen.
- Stylus - min skærm fulgte med en. Fingernegle fungerer også godt.
- Micro SD -kort - ikke mere end 32 GB på grund af exFAT -formateringsbegrænsninger (Arduino kan læse FAT32 -formaterede kort, men IKKE exFAT. De fleste større kort er formateret med exFAT.). Det er den slags, du ville sætte i en telefon med udvideligt lager.
- Computer med Arduino IDE
- Programmeringskabel - USB A til USB B. Min Arduino fulgte med.
- SD -kortadapter - bruges til at konvertere Micro SD -kortet til et normalt SD til at sætte i SD -slot ELLER et, der forbinder et SD -kort til et USB -slot.
Trin 1: Formater SD -kortet
- Tag Micro SD -kortet, og tilslut det til din computer ved hjælp af din SD -kortlæser
- Åbn File Explorer og find SD -kortet.
- Højreklik på det, og vælg Format.
- Indstil indstillingerne baseret på skærmbilledet.
- Klik på Start.
- Skub kortet ud, når processen er fuldført.
Hvis du ikke kører Windows, kan du prøve at bruge SD -formatter fra SD -foreningen.
Trin 2: Forbered Arduino
- Tryk din skærm ned på Arduino, og pas på at stille stifterne op.
- Indsæt SD -kortet i læseren under skærmen.
Trin 3: Arduino Sketch
Selvom delelisten var ret enkel, er der masser af kode. Jeg gennemgår det trin for trin her.
#omfatte
#include #include #include #include
Elegoo_GFX, _TFTLCD og TouchScreen er alle hardware-specifikke. Hvis du bruger en anden skærm, skal du bruge de biblioteker, der leveres af producenten.
SPI og SD bruges til at kommunikere med SD -kortet. SPI er den protokol, der bruges af SD -kortcontrolleren.
#if defineret (_ SAM3X8E _) #undef _FlashStringHelper:: F (string_literal) #define F (string_literal) string_literal #endif
Dette er også hardware-specifikt.
#define YP A3 // skal være en analog pin #definere XM A2 // skal være en analog pin #define YM 9 #define XP 8
// Tryk for ny ILI9341 TP
#definer TS_MINX 120 #definer TS_MAXX 900 #definer TS_MINY 70 #definer TS_MAXY 920
#define CSPIN 10
#definer LCD_CS A3
#definer LCD_CD A2 #definer LCD_WR A1 #definer LCD_RD A0 #definer LCD_RESET A4
Hver af disse #define -sætninger får IDE til at erstatte navnet med værdien. Her indstiller de LCD- og SD I/O -benene.
// Tildel navne til nogle 16-bit farveværdier: #define BLACK 0x0000 #define WHITE 0xFFFF #define RED 0xF800 #define BLUE 0x001F #define GREEN 0x07E0
Dette er et par af de farver, der bruges i koden. #at definere dem gør det lettere at læse koden.
#define PENRADIUS 3
Dette definerer størrelsen på tegnestiften.
#define MINPRESSURE 10#definere MAXPRESSURE 1000
// For bedre trykpræcision skal vi kende modstanden
// mellem X+ og X- Brug et hvilket som helst multimeter til at læse det // For den, jeg bruger, er dens 300 ohm på tværs af X-pladen TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300);
Elegoo_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
Disse udsagn definerer det tryk, der er nødvendigt for at registrere et tryk, initialisere berøringsfunktionen og starte skærmen.
Filopbevaring; int storageSize; int stoX = 1; int stoY = 1;
Disse er variabler for lagringsdelen af programmet.
void setup (void) {Serial.begin (9600); Serial.println ("Malingsprogram");
tft.reset ();
uint16_t identifier = tft.readID ();
hvis (identifier == 0x0101) {identifier = 0x9341; Serial.println (F ("Fundet 0x9341 LCD -driver")); }
// Start skærmen
tft.begin (identifikator); tft.setRotation (2);
pinMode (13, OUTPUT);
// Start SD -kort
hvis (! SD.begin (CSPIN)) {Serial.println ("SD -initialisering mislykkedes"); Vend tilbage; } Serial.println ("SD initialiseret");
// Tegn baggrunden
drawBackground (); }
Opsætningsfunktionen starter Seriel, hvis den er tilgængelig, nulstiller skærmen, registrerer TFT -driveren, starter skærmen, starter kortet og kalder en funktion for at tegne baggrunden.
Jeg vil springe til hovedparten af loop -funktionen. Alt andet bruges bare til at køre berøringsskærmen.
// Find skærmtryk, og gem det i variabler, hvis (p.z> MINPRESSURE && p.z <MAXPRESSURE) {// Scale p.x = map (p.x, TS_MINX, TS_MAXX, tft.width (), 0); p.y = (tft.height () - map (p.y, TS_MINY, TS_MAXY, tft.height (), 0));
//Tegne
hvis (p.y> 21) {// Gem data på SD -kortlagring = SD.open ("storage.txt", FILE_WRITE); storage.print (s.x); storage.print (","); storage.println (p.y); storage.close ();
// Prik ved berøringspositionen
tft.fillCircle (p.x, p.y, PENRADIUS, WHITE); }
// Slet -knap
hvis ((s. 198) && (s. x <219)) {deleteStorage (); }
// Indlæs knaphandling
hvis ((s. 219)) {loadStorage (); }}
Hvis der registreres et tryk, skal du angive variabler for pressens placering.
Hvis pressen derefter er inden for tegneområdet, skal du gemme punktet på SD -kortet i storage.txt og tegne en cirkel på det sted, der trykkes, med en defineret størrelse og farve.
Hvis der derefter trykkes på stedet for sletteknappen, skal du køre en funktion, der sletter den lagrede tegning. Hvis du bruger en skærm i en anden størrelse, kan du prøve at spille med knappens placeringsværdier.
Hvis trykket er på stedet for indlæsningsknappen, skal du derefter køre en funktion, der indlæser den gemte tegning. Hvis du bruger en skærm i en anden størrelse, kan du prøve at spille med knappens placeringsværdier.
Nu vil jeg forklare funktionerne.
Den første funktion kaldes i opsætningen for at tegne baggrunden og knapperne.
void drawBackground () {// Indstil baggrunden tft.fillScreen (SORT);
// Mal tekst
tft.setTextColor (HVID); tft.setTextSize (3); tft.setCursor (0, 0); tft.println ("Paint");
// Indlæs -knap
tft.fillRect (219, 0, 21, 21, GRØN);
// Ryd knap
tft.fillRect (198, 0, 21, 21, RØD); }
Det fylder skærmen sort, skriver ordet Paint og tegner farvede firkanter til knapperne. Hvis du bruger en skærm i en anden størrelse, kan du prøve at spille med knappens placeringsværdier.
void deleteStorage () {// Slet filen SD.remove ("storage.txt");
// Indstil baggrunden
tft.fillScreen (SORT);
// Slet succestekst
tft.setTextColor (HVID); tft.setTextSize (2); tft.setCursor (0, 0); tft.println ("storage.txt slettet");
// Lad brugeren læse det
forsinkelse (2000);
// Fortsæt med at tegne
drawBackground (); }
DeleteStorage -funktionen fjerner storage.txt, fylder skærmen sort og giver en succesbesked om sletning. Det kalder derefter drawBackground -funktionen, så du kan begynde at male noget andet.
void loadStorage () {// Undgå gentagelser fra langsom fingers forsinkelse (250);
// Kontroller, om der er en lagringsfil
hvis (! SD.exists ("storage.txt")) {Serial.println ("Ingen storage.txt -fil"); Vend tilbage; }
// Åbn fil i skrivebeskyttet tilstand
storage = SD.open ("storage.txt", FILE_READ);
// Mens der er data, mens (stoY> 0) {// Opdater positionsvariabler stoX = storage.parseInt (); stoY = storage.parseInt ();
// Tegn fra opbevaring
tft.fillCircle (stoX, stoY, PENRADIUS, WHITE); } // Luk filen storage.close (); }
Endelig søger loadStorage-funktionen efter en lagringsfil, åbner den i skrivebeskyttet tilstand og gentager derefter denne loop:
Så længe der er flere data,
- Opdater positionsvariablerne med de analyserede data fra storage.txt
- Tegn en cirkel ved det indlæste punkt
Når sløjfen er færdig, og der ikke er flere data, lukker den lagringsfilen.
Koden til denne skitse kan findes nedenfor. Bare download det, åbn det i Arduino, og upload det til dit bord!
Trin 4: Brug af dette program
Tilslut bare din Arduino til en strømkilde - computer, batteri, vægvorter osv. Og begynd at tegne. Tryk på den røde knap for at slette din tegning og dens gemte data. Klik på den grønne knap for at indlæse en tegning fra lageret og fortsætte med at arbejde på den. På denne måde kan du gentage mange gange på en tegning!
Som en udvidelse kan du prøve at tegne tegningen på din computer:
- Slut SD -kortet med data til din computer.
- Åbn storage.txt i din foretrukne tekst/kode editor.
- Kopier alle værdierne i storage.txt.
- Følg dette link til et punktplanlægningsprogram.
- Slet de to eksempelpunkter til venstre.
- Indsæt dine data, hvor eksempelpunkterne var.
Dette er en pæn måde at vise dine tegninger frem på - måske endda prøve at ændre punktfarven på Arduino eller i punktplotteren!
Ændringer modtages gerne, og jeg vil meget gerne se nogle forslag i kommentarerne. Tak fordi du kiggede på dette, og jeg håber, at du finder pæne anvendelser til det i dine egne projekter!
Anbefalede:
Enkel overvågning af luftkvalitet med TFT LCD-display- Ameba Arduino: 3 trin
Enkel luftkvalitetsovervågning med TFT LCD-skærm-Ameba Arduino: Introduktion Nu hvor de fleste mennesker bliver hjemme for at undgå tæt kontakt med potentiel COVID-19-virusbærer, bliver luftkvalitet en vigtig faktor for folks velfærd, især i tropiske lande, hvor brug af air-con er et must i løbet af dagen
Arduino TFT Graphics Shield: 4 trin (med billeder)
Arduino TFT Graphics Shield: a.articles {font-size: 110.0%; skrifttype-vægt: fed; skrifttype: kursiv; tekst-dekoration: ingen; baggrundsfarve: rød;} a.articles: svæve {baggrundsfarve: sort;} Denne instruktion forklarer, hvordan man laver en 240 x 320 pixel (QVGA) farvegrafik
Akustisk levitation med Arduino Uno trin for trin (8 trin): 8 trin
Akustisk levitation med Arduino Uno Step-by Step (8-trin): ultralyds lydtransducere L298N Dc kvindelig adapter strømforsyning med en han-DC-pin Arduino UNOBreadboard Sådan fungerer det: Først uploader du kode til Arduino Uno (det er en mikrokontroller udstyret med digital og analoge porte til konvertering af kode (C ++)
Arduino Flappy Bird - Arduino 2,4 "TFT Touchscreen SPFD5408 Bird Game Project: 3 trin
Arduino Flappy Bird | Arduino 2,4 "TFT Touchscreen SPFD5408 Bird Game Project: Flappy Bird var for populært spil derude på få år, og mange mennesker skabte det på deres egen måde, det gjorde jeg også, jeg lavede min version af flappy bird med Arduino og den billige 2,4 " TFT Touchscreen SPFD5408, så lad os komme i gang
Sådan laver du ur i realtid ved hjælp af Arduino og TFT -skærm - Arduino Mega RTC med 3,5 tommer TFT -skærm: 4 trin
Sådan laver du ur i realtid ved hjælp af Arduino og TFT-skærm | Arduino Mega RTC med 3,5 tommer TFT-skærm: Besøg min Youtube-kanal. Introduktion:- I dette indlæg skal jeg lave “Real time Clock” ved hjælp af 3,5 tommer TFT touch LCD, Arduino Mega 2560 og DS3231 RTC-modul …. Inden start … tjek videoen fra min YouTube-kanal..Bemærk:- Hvis du bruger Arduin