Innholdsfortegnelse:
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-23 15:02
Denne instruksen beskriver koden som går til å lage et tegneprogram for en Arduino TFT -skjerm. Dette programmet er imidlertid unikt fordi det gjør det mulig å lagre en tegning på SD -kortet og laste det inn senere for å gjøre flere redigeringer!
Rekvisita
- Arduino Uno - original eller en kompatibel klon
- TFT berøringsskjerm - Jeg brukte en Elegoo -skjerm, noe som betyr at jeg trengte Elegoo -drivere.
- Micro SD -leserkort - brukes til å lagre tegningsdata til SD -kort. Skjermen min hadde en innebygd leser under skjermen.
- Pekepenn - skjermen min fulgte med. Negler fungerer også bra.
- Micro SD -kort - ikke mer enn 32 GB, på grunn av exFAT -formateringsbegrensninger (Arduino kan lese FAT32 -formaterte kort, men IKKE exFAT. De fleste større kortene er formatert med exFAT.). Dette er den typen du vil sette inn i en telefon med utvidbar lagringsplass.
- Datamaskin med Arduino IDE
- Programmeringskabel - USB A til USB B. Min Arduino fulgte med en.
- SD -kortadapter - brukes til å konvertere Micro SD -kortet til et normalt SD -kort som skal settes inn i SD -spor ELLER en som kobler et SD -kort til et USB -spor.
Trinn 1: Formater SD -kortet
- Ta Micro SD -kortet og fest det til datamaskinen din ved hjelp av SD -kortleseren
- Åpne File Explorer og finn SD -kortet.
- Høyreklikk på den og velg Format.
- Angi alternativene basert på skjermbildet.
- Klikk Start.
- Ta ut kortet når prosessen er fullført.
Hvis du ikke kjører Windows, kan du prøve å bruke SD Formatter fra SD -foreningen.
Trinn 2: Forbered Arduino
- Trykk skjermskjermen ned på Arduino, og pass på å sette pinnene på linje.
- Sett inn SD -kortet i leseren under skjermen.
Trinn 3: Arduino Sketch
Selv om delelisten var ganske enkel, er det massevis av kode. Jeg skal gå gjennom det trinnvis her.
#inkludere
#include #include #include #include
Elegoo_GFX, _TFTLCD og TouchScreen er alle maskinvarespesifikke. Hvis du bruker en annen skjerm, bruker du bibliotekene fra produsenten.
SPI og SD brukes til å kommunisere med SD -kortet. SPI er protokollen som brukes av SD -kortkontrolleren.
#if definert (_ SAM3X8E _) #undef _FlashStringHelper:: F (string_literal) #define F (string_literal) string_literal #endif
Dette er også maskinvarespesifikt.
#definere YP A3 // må være en analog pin #definere XM A2 // må være en analog pin #definere YM 9 #definere XP 8
// Trykk for ny ILI9341 TP
#definere TS_MINX 120 #definere TS_MAXX 900 #definere TS_MINY 70 #definere TS_MAXY 920
#define CSPIN 10
#definere LCD_CS A3
#definere LCD_CD A2 #definere LCD_WR A1 #definere LCD_RD A0 #definere LCD_RESET A4
Hver av disse #define -setningene får IDE til å erstatte navnet med verdien. Her setter de LCD- og SD I/O -pinnene.
// Tilordne navn til noen 16-biters fargeverdier: #define BLACK 0x0000 #define WHITE 0xFFFF #define RED 0xF800 #define BLUE 0x001F #define GREEN 0x07E0
Dette er noen av fargene som brukes i koden. #å definere dem gjør det enklere å lese koden.
#define PENRADIUS 3
Dette definerer størrelsen på tegnepennen.
#define MINPRESSURE 10#definere MAXPRESSURE 1000
// For bedre trykkpresisjon må vi vite motstanden
// mellom X+ og X- Bruk et hvilket som helst multimeter for å lese det // For den jeg bruker, er dens 300 ohm på tvers av X-platen TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300);
Elegoo_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
Disse utsagnene definerer trykket som er nødvendig for å registrere en berøring, initialisere berøringsfunksjonen og starte skjermen.
Fillagring; int storageSize; int stoX = 1; int stoY = 1;
Dette er variabler for lagringsdelen av 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 ("Fant 0x9341 LCD -driver")); }
// Start skjermen
tft.begin (identifikator); tft.setRotation (2);
pinMode (13, OUTPUT);
// Start SD -kort
if (! SD.begin (CSPIN)) {Serial.println ("SD -initialisering mislyktes"); komme tilbake; } Serial.println ("SD initialisert");
// Tegn bakgrunnen
drawBackground (); }
Oppsettfunksjonen starter Serial hvis den er tilgjengelig, nullstiller skjermen, oppdager TFT -driveren, starter skjermen, starter kortet og kaller en funksjon for å tegne bakgrunnen.
Jeg vil hoppe til hoveddelen av loop -funksjonen. Alt annet er bare brukt til å kjøre berøringsskjermen.
// Oppdag skjermpress og lagre den 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 () - kart (p.y, TS_MINY, TS_MAXY, tft.height (), 0));
//Tegne
if (s.y> 21) {// Lagre data på SD -kortlagring = SD.open ("storage.txt", FILE_WRITE); storage.print (s.x); storage.print (","); storage.println (s.y); storage.close ();
// Prikk ved berøringsposisjonen
tft.fillCircle (s.x, p.y, PENRADIUS, HVIT); }
// Slett -knappen
if ((s. 198) && (s. x <219)) {deleteStorage (); }
// Last inn knapp -handling
if ((s. 219)) {loadStorage (); }}
Hvis det oppdages et trykk, angir du variabler for pressens plassering.
Deretter, hvis pressen er innenfor tegneområdet, lagrer du punktet på SD -kortet i storage.txt og tegner en sirkel på det punktet du trykker på, med en definert størrelse og farge.
Kjør deretter en funksjon som sletter den lagrede tegningen hvis trykket er på sletteknappen. Hvis du bruker en skjerm i en annen størrelse, kan du prøve å leke med knappens plasseringsverdier.
Kjør deretter en funksjon som laster den lagrede tegningen, hvis trykket er på stedet for lasteknappen. Hvis du bruker en skjerm i en annen størrelse, kan du prøve å leke med knappens plasseringsverdier.
Nå skal jeg forklare funksjonene.
Den første funksjonen kalles i oppsettet for å tegne bakgrunn og knapper.
void drawBackground () {// Sett bakgrunnen tft.fillScreen (SVART);
// Mal tekst
tft.setTextColor (HVIT); tft.setTextSize (3); tft.setCursor (0, 0); tft.println ("Paint");
// Last inn -knapp
tft.fillRect (219, 0, 21, 21, GRØNN);
// Fjern knappen
tft.fillRect (198, 0, 21, 21, RØD); }
Den fyller skjermen svart, skriver ordet Paint og tegner fargede ruter for knappene. Hvis du bruker en skjerm i en annen størrelse, kan du prøve å leke med knappens plasseringsverdier.
void deleteStorage () {// Slett filen SD.remove ("storage.txt");
// Sett bakgrunnen
tft.fillScreen (SVART);
// Slett tekst for suksess
tft.setTextColor (HVIT); tft.setTextSize (2); tft.setCursor (0, 0); tft.println ("storage.txt slettet");
// La brukeren lese den
forsinkelse (2000);
// Fortsett å tegne
drawBackground (); }
DeleteStorage -funksjonen fjerner storage.txt, fyller skjermen svart og gir en vellykket melding om sletting. Den kaller deretter drawBackground -funksjonen for å la deg begynne å male noe annet.
void loadStorage () {// Unngå gjentagelser fra langsom fingerforsinkelse (250);
// Se etter lagringsfil
if (! SD.exists ("storage.txt")) {Serial.println ("No storage.txt file"); komme tilbake; }
// Åpne filen i skrivebeskyttet modus
lagring = SD.open ("storage.txt", FILE_READ);
// Selv om det er data, while (stoY> 0) {// Oppdater posisjonsvariabler stoX = storage.parseInt (); stoY = storage.parseInt ();
// Tegn fra lagring
tft.fillCircle (stoX, stoY, PENRADIUS, WHITE); } // Lukk filen storage.close (); }
Til slutt sjekker loadStorage-funksjonen etter en lagringsfil, åpner den i skrivebeskyttet modus, og gjentar deretter denne løkken:
Så lenge det er mer data,
- Oppdater posisjonsvariablene med de analyserte dataene fra storage.txt
- Tegn en sirkel på det lastede punktet
Når løkken er fullført og det ikke er flere data, lukker den lagringsfilen.
Koden for denne skissen finner du nedenfor. Bare last den ned, åpne den i Arduino, og last den opp til brettet ditt!
Trinn 4: Bruke dette programmet
Bare koble Arduino til en strømkilde - datamaskin, batteri, veggvorter, etc. og begynn å tegne. Trykk på den røde knappen for å slette tegningen og dens lagrede data. Klikk på den grønne knappen for å laste en tegning fra lagringen og fortsette å jobbe med den. På denne måten kan du gjenta mange ganger på en tegning!
Som en utvidelse, prøv å plotte tegningen på datamaskinen din:
- Koble SD -kortet med data til datamaskinen.
- Åpne storage.txt i din favoritt tekst/kode editor.
- Kopier alle verdiene i storage.txt.
- Følg denne lenken til et punktplottingsprogram.
- Slett de to eksempelpunktene til venstre.
- Lim inn dataene dine der eksempelpunktene var.
Dette er en fin måte å vise frem tegningene dine - kanskje til og med prøve å endre punktfargen på Arduino eller i punktplotteren!
Endringer mottas med takk, og jeg vil gjerne se noen forslag i kommentarene. Takk for at du tok en titt på dette, og jeg håper at du finner fine bruksområder for det i dine egne prosjekter!
Anbefalt:
Enkel overvåking av luftkvalitet med TFT LCD-skjerm- Ameba Arduino: 3 trinn
Enkel luftkvalitetsovervåking med TFT LCD-skjerm-Ameba Arduino: Innledning Nå som de fleste blir hjemme for å unngå nær kontakt med potensiell COVID-19-virusbærer, blir luftkvalitet en viktig faktor for folks velvære, spesielt i tropiske land der å bruke air-con er et must i løpet av dagen
Arduino TFT Graphics Shield: 4 trinn (med bilder)
Arduino TFT Graphics Shield: a.articles {font-size: 110.0%; font-weight: fet skrift; skriftstil: kursiv; tekst-dekorasjon: ingen; bakgrunnsfarge: rød;} a.articles: sveve {bakgrunnsfarge: svart;} Denne instruksjonen forklarer hvordan du lager en 240 x 320 piksler (QVGA) fargegrafikk
Magic Answers Ball med Arduino Pro Mini og TFT -skjerm: 7 trinn
Magic Answers Ball Med Arduino Pro Mini og TFT -skjerm: For en stund siden tok jeg og datteren min fra hverandre en Magic 8 -ball slik at hun kunne erstatte de tjue svarene med svarene hun valgte. Dette var en gave til en venn av henne. Det fikk meg til å tenke på hvordan jeg skulle gjøre det i større skala. Kan vi ha mye
Arduino Flappy Bird - Arduino 2,4 "TFT berøringsskjerm SPFD5408 Bird Game Project: 3 trinn
Arduino Flappy Bird | Arduino 2,4 "TFT berøringsskjerm SPFD5408 Bird Game Project: Flappy Bird var et for populært spill der på få år, og mange mennesker skapte det på sin egen måte, det gjorde jeg også, jeg laget min versjon av flappy bird med Arduino og den billige 2,4 " TFT Berøringsskjerm SPFD5408, så la oss komme i gang
Hvordan lage sanntidsklokke ved hjelp av Arduino og TFT -skjerm - Arduino Mega RTC med 3,5 tommers TFT -skjerm: 4 trinn
Hvordan lage sanntidsklokke ved hjelp av Arduino og TFT-skjerm | Arduino Mega RTC med 3,5 tommers TFT-skjerm: Besøk min Youtube-kanal. Introduksjon:- I dette innlegget skal jeg lage “Real time Clock” ved å bruke 3,5 tommers TFT touch LCD, Arduino Mega 2560 og DS3231 RTC-modul …. Før du starter … sjekk videoen fra YouTube-kanalen min..Merk:- Hvis du bruker Arduin