Innehållsförteckning:
2025 Författare: John Day | [email protected]. Senast ändrad: 2025-01-23 15:10
Denna instruerbara beskriver koden som går till att göra ett ritprogram för en Arduino TFT -skärm. Detta program är dock unikt eftersom det gör det möjligt att spara en ritning till SD -kortet och ladda det senare för att göra fler redigeringar!
Tillbehör
- Arduino Uno - original eller en kompatibel klon
- TFT -pekskärm - Jag använde en Elegoo -skärm, vilket betyder att jag behövde Elegoo -drivrutiner.
- Micro SD -läsarkort - används för att lagra ritningsdata till SD -kort. Min skärm hade en inbyggd läsare under skärmen.
- Stylus - min skärm kom med en. Naglar fungerar också bra.
- Micro SD -kort - högst 32 GB, på grund av exFAT -formateringsbegränsningar (Arduino kan läsa FAT32 -formaterade kort men INTE exFAT. De flesta större kort formateras med exFAT.). Detta är den typ som du skulle sätta i en telefon med utbyggbart lagringsutrymme.
- Dator med Arduino IDE
- Programmeringskabel - USB A till USB B. Min Arduino följde med en.
- SD -kortadapter - används för att konvertera Micro SD -kortet till ett normalt SD -kort för att sätta i SD -kort ELLER ett som ansluter ett SD -kort till ett USB -kort.
Steg 1: Formatera SD -kortet
- Ta Micro SD -kortet och anslut det till din dator med din SD -kortläsare
- Öppna File Explorer och hitta SD -kortet.
- Högerklicka på den och välj Format.
- Ange alternativen baserat på skärmdumpen.
- Klicka på Start.
- Mata ut kortet när processen är klar.
Om du inte kör Windows kan du prova att använda SD Formatter från SD -föreningen.
Steg 2: Förbered Arduino
- Tryck ner skärmskyddet på Arduino, var noga med att ställa in stiften.
- Sätt in SD -kortet i läsaren under skärmen.
Steg 3: Arduino Sketch
Även om listan med delar var ganska enkel, finns det massor av kod. Jag går igenom det steg för steg här.
#omfatta
#include #include #include #include
Elegoo_GFX, _TFTLCD och TouchScreen är alla hårdvaruspecifika. Om du använder en annan skärm använder du de bibliotek som tillhandahålls av tillverkaren.
SPI och SD används för att kommunicera med SD -kortet. SPI är det protokoll som används av SD -kortkontrollanten.
#if definierad (_ SAM3X8E _) #undef _FlashStringHelper:: F (string_literal) #define F (string_literal) string_literal #endif
Detta är också hårdvaruspecifikt.
#define YP A3 // måste vara en analog pin #definiera XM A2 // måste vara en analog pin #define YM 9 #define XP 8
// Tryck för ny ILI9341 TP
#definiera TS_MINX 120 #definiera TS_MAXX 900 #definiera TS_MINY 70 #definiera TS_MAXY 920
#define CSPIN 10
#definiera LCD_CS A3
#definiera LCD_CD A2 #definiera LCD_WR A1 #definiera LCD_RD A0 #definiera LCD_RESET A4
Var och en av dessa #define -satser får IDE att ersätta namnet med värdet. Här ställer de in LCD- och SD I/O -stiften.
// Tilldela namn till några 16-bitars färgvärden: #define BLACK 0x0000 #define WHITE 0xFFFF #define RED 0xF800 #define BLUE 0x001F #define GREEN 0x07E0
Det här är några av de färger som används i koden. #att definiera dem gör det lättare att läsa koden.
#define PENRADIUS 3
Detta definierar ritpennans storlek.
#define MINPRESSURE 10#definiera MAXPRESSURE 1000
// För bättre tryckprecision måste vi känna till motståndet
// mellan X+ och X- Använd valfri multimeter för att läsa den // För den jag använder är dess 300 ohm över X-plattan TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300);
Elegoo_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
Dessa uttalanden definierar trycket som behövs för att registrera en touch, initiera touch -funktionen och starta skärmen.
Fillagring; int storageSize; int stoX = 1; int stoY = 1;
Dessa är variabler för lagringsdelen av programmet.
void setup (void) {Serial.begin (9600); Serial.println ("Paint -program");
tft.reset ();
uint16_t identifierare = tft.readID ();
om (identifierare == 0x0101) {identifierare = 0x9341; Serial.println (F ("Hittade 0x9341 LCD -drivrutin")); }
// Starta skärmen
tft.begin (identifierare); tft.setRotation (2);
pinMode (13, OUTPUT);
// Starta SD -kort
if (! SD.begin (CSPIN)) {Serial.println ("SD -initialisering misslyckades"); lämna tillbaka; } Serial.println ("SD initialiserad");
// Rita bakgrunden
drawBackground (); }
Installationsfunktionen startar Serial om den är tillgänglig, återställer skärmen, upptäcker TFT -drivrutinen, startar skärmen, startar kortet och ringer en funktion för att rita bakgrunden.
Jag hoppar över till huvuddelen av loop -funktionen. Allt annat används bara för att driva pekskärmen.
// Upptäck skärmtryck och lagra den i variabler om (p.z> MINPRESSURE && p.z <MAXPRESSURE) {// Skala 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));
//Dra
if (s.y> 21) {// Spara data på SD -kortlagring = SD.open ("storage.txt", FILE_WRITE); storage.print (s.x); storage.print (","); storage.println (s.y); storage.close ();
// Prick vid beröringspositionen
tft.fillCircle (p.x, p.y, PENRADIUS, WHITE); }
// Radera -knappen
if ((s. 198) && (s. x <219)) {deleteStorage (); }
// Ladda knappåtgärd
if ((s. 219)) {loadStorage (); }}
Om en tryckning upptäcks, ställ in variabler för pressens plats.
Om pressen befinner sig inom ritområdet, spara punkten till SD -kortet i storage.txt och rita en cirkel vid den nedtryckta punkten, med en definierad storlek och färg.
Kör sedan en funktion som tar bort den lagrade ritningen om pressen är på plats för raderingsknappen. Om du använder en skärm av annan storlek kan du prova att spela med knappens platsvärden.
Om sedan pressen är på platsen för laddningsknappen, kör en funktion som laddar den lagrade ritningen. Om du använder en skärm av annan storlek kan du prova att spela med knappens platsvärden.
Nu ska jag förklara funktionerna.
Den första funktionen kallas i setup för att rita bakgrunden och knapparna.
void drawBackground () {// Ställ in bakgrunden tft.fillScreen (SVART);
// Måla text
tft.setTextColor (VIT); tft.setTextSize (3); tft.setCursor (0, 0); tft.println ("Paint");
// Ladda knappen
tft.fillRect (219, 0, 21, 21, GRÖN);
// Rensa -knappen
tft.fillRect (198, 0, 21, 21, RÖD); }
Det fyller skärmen svart, skriver ordet Paint och ritar färgade rutor för knapparna. Om du använder en skärm av annan storlek kan du prova att spela med knappens platsvärden.
void deleteStorage () {// Radera filen SD.remove ("storage.txt");
// Ställ in bakgrunden
tft.fillScreen (SVART);
// Radera framgångstext
tft.setTextColor (VIT); tft.setTextSize (2); tft.setCursor (0, 0); tft.println ("storage.txt raderad");
// Låt användaren läsa den
fördröjning (2000);
// Fortsätt rita
drawBackground (); }
DeleteStorage -funktionen tar bort storage.txt, fyller skärmen svart och ger ett framgångsmeddelande för radering. Den kallar sedan drawBackground -funktionen så att du kan börja måla något annat.
void loadStorage () {// Undvik upprepningar från långsamma fingerfördröjning (250);
// Sök efter lagringsfil
if (! SD.exists ("storage.txt")) {Serial.println ("No storage.txt file"); lämna tillbaka; }
// Öppna filen i skrivskyddat läge
lagring = SD.open ("storage.txt", FILE_READ);
// Medan det finns data, medan (stoY> 0) {// Uppdatera positionsvariabler stoX = storage.parseInt (); stoY = storage.parseInt ();
// Rita från lagring
tft.fillCircle (stoX, stoY, PENRADIUS, WHITE); } // Stäng filen storage.close (); }
Slutligen söker loadStorage-funktionen efter en lagringsfil, öppnar den i skrivskyddat läge och upprepar sedan den här slingan:
Så länge det finns mer data,
- Uppdatera positionsvariablerna med de analyserade data från storage.txt
- Rita en cirkel vid den laddade punkten
När slingan är klar och det inte finns mer data stänger den lagringsfilen.
Koden för denna skiss hittar du nedan. Bara ladda ner den, öppna den i Arduino och ladda upp den till ditt bräde!
Steg 4: Använda detta program
Anslut bara din Arduino till en strömkälla - dator, batteri, väggvarta etc. och börja rita. För att radera din teckning och dess lagrade data, tryck på den röda knappen. Klicka på den gröna knappen för att ladda en ritning från lagringen och fortsätta arbeta med den. På detta sätt kan du iterera många gånger på en ritning!
Som en förlängning, försök att rita ritningen på din dator:
- Anslut SD -kortet med data till din dator.
- Öppna storage.txt i din favorittext-/kodredigerare.
- Kopiera alla värden i storage.txt.
- Följ den här länken till ett punktplottningsprogram.
- Ta bort de två exempelpunkterna till vänster.
- Klistra in dina data där exempelpunkterna fanns.
Detta är ett snyggt sätt att visa upp dina teckningar - kanske till och med försöka ändra punktfärgen på Arduino eller i punktplottern!
Ändringar välkomnas, och jag ser gärna några förslag i kommentarerna. Tack för att du tittade på detta och jag hoppas att du hittar snygga användningsområden för det i dina egna projekt!
Rekommenderad:
Enkel övervakning av luftkvalitet med TFT LCD-skärm- Ameba Arduino: 3 steg
Enkel övervakning av luftkvalitet med TFT LCD-skärm-Ameba Arduino: Introduktion Nu när de flesta stannar hemma för att undvika nära kontakt med potentiell COVID-19-virusbärare, blir luftkvalitet en viktig faktor för människors välbefinnande, särskilt i tropiska länder där att använda luftkonditionering är ett måste under dagen
Arduino TFT Graphics Shield: 4 steg (med bilder)
Arduino TFT Graphics Shield: a.articles {font-size: 110.0%; font-weight: fet; typsnitt: kursiv; text-dekoration: ingen; bakgrund-färg: röd;} a.articles: sväva {bakgrund-färg: svart;} Denna instruktion förklarar hur man gör en 240 x 320 pixlar (QVGA) färggrafik
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)
Arduino Flappy Bird - Arduino 2,4 "TFT pekskärm SPFD5408 Bird Game Project: 3 steg
Arduino Flappy Bird | Arduino 2,4 "TFT pekskärm SPFD5408 Bird Game Project: Flappy Bird var för populärt spel där på några år och många människor skapade det på sitt eget sätt så gjorde jag, jag skapade min version av flappy bird med Arduino och den billiga 2,4 " TFT Pekskärm SPFD5408, så låt oss komma igång
Hur man gör realtidsklocka med Arduino och TFT -skärm - Arduino Mega RTC med 3,5 tums TFT -skärm: 4 steg
Hur man gör realtidsklocka med Arduino och TFT-skärm | Arduino Mega RTC med 3,5 tums TFT-skärm: Besök min Youtube-kanal. Introduktion:- I det här inlägget ska jag göra “Real time Clock” med 3,5 tums TFT touch LCD, Arduino Mega 2560 och DS3231 RTC-modul …. Innan du börjar … kolla videon från min YouTube-kanal..OBS:- Om du använder Arduin