Përmbajtje:
2025 Autor: John Day | [email protected]. E modifikuara e fundit: 2025-01-23 15:10
Ky udhëzues detajon kodin që hyn në krijimin e një programi vizatimi për një ekran TFT Arduino. Ky program është unik, megjithatë, sepse lejon ruajtjen e një vizatimi në kartën SD dhe ngarkimin e tij më vonë për të bërë më shumë redaktime!
Furnizimet
- Arduino Uno - klon origjinal ose i pajtueshëm
- Ekran me prekje TFT - Kam përdorur një ekran Elegoo, që do të thotë se kisha nevojë për drejtuesit e Elegoo.
- Bordi i lexuesit Micro SD - përdoret për të ruajtur të dhënat e vizatimit në kartën SD. Ekrani im kishte një lexues të integruar nën ekran.
- Stylus - ekrani im erdhi me një. Thonjtë e gishtave gjithashtu punojnë mirë.
- Kartë Micro SD - jo më shumë se 32 GB, për shkak të kufizimeve të formatimit exFAT (Arduino mund të lexojë karta të formatuara FAT32 por JO exFAT. Shumica e kartave më të mëdha janë të formatuara me exFAT.). Ky është lloji që do të vendosnit në një telefon me hapësirë ruajtëse të zgjerueshme.
- Kompjuter me Arduino IDE
- Kabllo programimi - USB A në USB B. Arduino im erdhi me një të tillë.
- Përshtatës i kartës SD - përdoret për të shndërruar kartën Micro SD në një SD normale për ta futur në fole SD ose atë që lidh një kartë SD me një çarë USB.
Hapi 1: Formatoni kartën SD
- Merrni kartën Micro SD dhe bashkojeni atë në kompjuterin tuaj duke përdorur lexuesin tuaj të kartave SD
- Hapni File Explorer dhe gjeni kartën SD.
- Klikoni me të djathtën mbi të dhe zgjidhni Format.
- Vendosni opsionet bazuar në pamjen e ekranit.
- Kliko Start.
- Hiqni kartën kur procesi të ketë përfunduar.
Nëse nuk jeni duke përdorur Windows, provoni të përdorni SD Formatter nga shoqata SD.
Hapi 2: Përgatitni Arduino
- Shtypni mburojën e ekranit tuaj mbi Arduino, duke u kujdesur që të rreshtoni kunjat.
- Futni kartën SD në lexuesin poshtë ekranit.
Hapi 3: Skica Arduino
Edhe pse lista e pjesëve ishte mjaft e thjeshtë, ka një ton kod. Unë do ta kaloj atë hap pas hapi këtu.
#përfshi
#përfshi #përfshi #përfshi #përfshi
Elegoo_GFX, _TFTLCD dhe TouchScreen janë të gjitha specifike për harduerin. Nëse përdorni një ekran tjetër, përdorni bibliotekat e siguruara nga prodhuesi.
SPI dhe SD përdoren për të komunikuar me kartën SD. SPI është protokolli i përdorur nga kontrolluesi i kartës SD.
#ifa definuar (_ SAM3X8E _) #undef _FlashStringHelper:: F (string_literal) #define F (string_literal) string_literal #endif
Kjo është gjithashtu specifike për harduerin.
#përcakto YP A3 // duhet të jetë një kunj analog #përcakto XM A2 // duhet të jetë një kunj analog #përcakto YM 9 #përcakto XP 8
// Prekni Për ILI9341 TP të Re
#përcakto TS_MINX 120 #përcakto TS_MAXX 900 #përcakto TS_MINY 70 #përcakto TS_MAXY 920
#përcaktoni CSPIN 10
#përcakto LCD_CS A3
#percakto LCD_CD A2 #percakto LCD_WR A1 #percakto LCD_RD A0 #percakto LCD_RESET A4
Secila prej këtyre #define deklaratave bën që IDE të zëvendësojë emrin me vlerën. Këtu, ata vendosën kunjat e I/O LCD dhe SD.
// Cakto emra për disa vlera ngjyrash 16-bit: #define BLACK 0x0000 #define WHITE 0xFFFF #define RED 0xF800 #define BLUE 0x001F #define GREEN 0x07E0
Këto janë disa nga ngjyrat e përdorura në kod. #përcaktimi i tyre e bën leximin e kodit më të lehtë.
#përcakto PENRADIUS 3
Kjo përcakton madhësinë e stilolapsit të vizatimit.
#përcaktoni MINPRESSURE 10#përcaktoni MAXPRESSURE 1000
// Për një saktësi më të mirë të presionit, ne duhet të dimë rezistencën
// midis X+ dhe X- Përdorni çdo multimetër për ta lexuar atë // Për atë që unë përdor, 300 ohms e tij në pllakën X TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300);
Elegoo_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
Këto deklarata përcaktojnë presionin e nevojshëm për të regjistruar një prekje, për të nisur funksionin e prekjes dhe për të filluar ekranin.
Magazinimi i skedarëve; int storageSize; int stoX = 1; int stoY = 1;
Këto janë ndryshore për pjesën e ruajtjes së programit.
void setup (void) {Serial.begin (9600); Serial.println ("Programi i bojës");
tft.reset ();
identifikuesi uint16_t = tft.readID ();
nëse (identifikuesi == 0x0101) {identifikuesi = 0x9341; Serial.println (F ("U gjet shoferi LCD 0x9341")); }
// Filloni ekranin
tft.filloj (identifikuesi); tft.setRotation (2);
pinMode (13, OUTPUT);
// Filloni kartën SD
nëse (! SD.begin (CSPIN)) {Serial.println ("Inicimi i SD dështoi"); kthim; } Serial.println ("SD e inicializuar");
// Vizatoni sfondin
drawBackground (); }
Funksioni i konfigurimit fillon Serial nëse është i disponueshëm, rivendos ekranin, zbulon drejtuesin TFT, fillon ekranin, fillon kartën dhe thërret një funksion për të vizatuar sfondin.
Unë do të kaloj në pjesën kryesore të funksionit të lakut. Çdo gjë tjetër përdoret vetëm për të drejtuar ekranin me prekje.
// Zbuloni shtypjen e ekranit dhe ruajeni atë te ndryshoret nëse (p.z> MINPRESSURE && p.z <MAXPRESSURE) {// Shkalla p.x = harta (p.x, TS_MINX, TS_MAXX, tft.width (), 0); p.y = (tft. lartësia () - harta (p.y, TS_MINY, TS_MAXY, tft.height (), 0));
// Vizatoni
nëse (p.y> 21) {// Ruaj të dhënat në ruajtjen e kartës SD = SD.open ("storage.txt", FILE_WRITE); ruajtje.print (p.x); ruajtje.print (","); ruajtje.println (p.y); ruajtje.mbylle ();
// Pika në pozicionin e prekjes
tft.fillCircle (p.x, p.y, PENRADIUS, WHITE); }
// butoni Fshi
nëse ((p.y 198) && (p.x <219)) {deleteStorage (); }
// Veprimi i butonit të ngarkimit
if ((p.y 219)) {loadStorage (); }}
Nëse zbulohet një shtypje, vendosni variabla për vendndodhjen e shtypit.
Pastaj, nëse shtypi është brenda zonës së vizatimit, ruani pikën në kartën SD në ruajtje.txt dhe vizatoni një rreth në pikën e shtypur, me një madhësi dhe ngjyrë të përcaktuar.
Pastaj, nëse shtypi është në vendin e butonit të fshirjes, ekzekutoni një funksion që fshin vizatimin e ruajtur. Nëse jeni duke përdorur një ekran me madhësi të ndryshme, provoni të luani me vlerat e vendndodhjes së butonit.
Pastaj, nëse shtypi është në vendin e butonit të ngarkimit, ekzekutoni një funksion që ngarkon vizatimin e ruajtur. Nëse jeni duke përdorur një ekran me madhësi të ndryshme, provoni të luani me vlerat e vendndodhjes së butonit.
Tani, unë do të shpjegoj funksionet.
Funksioni i parë thirret në konfigurim për të vizatuar sfondin dhe butonat.
void drawBackground () {// Vendos sfondin tft.fillScreen (E ZI);
// Ngjyrosni tekstin
tft.setTextColor (E BARDH); tft.setTextSize (3); tft.setCursor (0, 0); tft.println ("Paint");
// Butoni i ngarkimit
tft.fillRect (219, 0, 21, 21, GREEN);
// Butoni i pastrimit
tft.fillRect (198, 0, 21, 21, KUQ); }
Mbush ekranin të zi, shkruan fjalën Paint dhe vizaton katrorë me ngjyra për butonat. Nëse jeni duke përdorur një ekran me madhësi të ndryshme, provoni të luani me vlerat e vendndodhjes së butonit.
void deleteStorage () {// Fshini skedarin SD.remove ("storage.txt");
// Vendosni sfondin
tft.fillScreen (E ZI);
// Fshi tekstin Suksesi
tft.setTextColor (E BARDH); tft.setTextSize (2); tft.setCursor (0, 0); tft.println ("ruajtja.txt u fshi");
// Lëreni përdoruesin ta lexojë atë
vonesa (2000);
// Vazhdoni të vizatoni
drawBackground (); }
Funksioni deleteStorage heq storage.txt, mbush ekranin e zi dhe jep një mesazh suksesi për fshirje. Pastaj thërret funksionin drawBackground për t'ju lejuar të filloni të pikturoni diçka tjetër.
void loadStorage () {// Shmangni përsëritjet nga vonesa e ngadalshme e gishtërinjve (250);
// Kontrolloni për skedarin e ruajtjes
nëse (! SD.ekziston ("storage.txt")) {Serial.println ("Nuk ka skedar storage.txt"); kthim; }
// Hapni skedarin në modalitetin vetëm për lexim
ruajtje = SD.hapur ("storage.txt", FILE_READ);
// Ndërsa ka të dhëna, ndërsa (stoY> 0) {// Përditësoni ndryshoret e pozicionit stoX = storage.parseInt (); stoY = ruajtje.parseInt ();
// Vizatoni nga ruajtja
tft.fillCircle (stoX, stoY, PENRADIUS, WHITE); } // Mbyll ruajtjen e skedarit.mbylli (); }
Së fundi, funksioni loadStorage kontrollon për një skedar ruajtjeje, e hap atë në modalitetin vetëm për lexim, pastaj përsërit këtë lak:
Për sa kohë që ka më shumë të dhëna,
- Përditësoni variablat e pozicionit me të dhënat e analizuara nga storage.txt
- Vizatoni një rreth në pikën e ngarkuar
Kur lak përfundon dhe nuk ka më të dhëna, ai mbyll skedarin e ruajtjes.
Kodi për këtë skicë mund të gjendet më poshtë. Thjesht shkarkojeni, hapeni në Arduino dhe ngarkojeni në tabelën tuaj!
Hapi 4: Përdorimi i këtij Programi
Thjesht lidhni Arduino -n tuaj me një burim energjie - kompjuter, bateri, lyth muri, etj. Dhe filloni të vizatoni. Për të fshirë vizatimin tuaj dhe të dhënat e tij të ruajtura, shtypni butonin e kuq. Për të ngarkuar një vizatim nga ruajtja dhe për të vazhduar punën në të, klikoni butonin e gjelbër. Në këtë mënyrë, ju mund të përsërisni shumë herë në një vizatim!
Si një shtesë, provoni të vizatoni vizatimin në kompjuterin tuaj:
- Lidheni kartën SD me të dhëna në kompjuterin tuaj.
- Hapni storage.txt në redaktorin tuaj të preferuar të tekstit/kodit.
- Kopjoni të gjitha vlerat në ruajtje.txt.
- Ndiqni këtë lidhje për një program për komplotimin e pikave.
- Fshini dy pikat shembull në të majtë.
- Ngjitni të dhënat tuaja aty ku ishin pikat e shembullit.
Kjo është një mënyrë e pastër për të shfaqur vizatimet tuaja - ndoshta edhe provoni të ndryshoni ngjyrën e pikës në Arduino ose në komplotuesin e pikave!
Ndryshimet janë të mirëseardhura dhe do të doja të shihja disa sugjerime në komente. Faleminderit që i hodhët një sy kësaj dhe shpresoj se do të gjeni përdorime të rregullta për të në projektet tuaja!
Recommended:
Roboti i vizatimit me Adafruit Shield (Bëni atë të lëvizë konkurs): 10 hapa (me fotografi)
Roboti i vizatimit me Adafruit Shield (Make It Move Contest): Përshëndetje emrat e mi Jacob dhe unë jetojmë në MB. Në këtë projekt unë do të ndërtoj një robot që tërheq për ju. *Unë jam i sigurt se shumë prej jush duan ta shohin atë, kështu që nëse doni ta dini, kaloni menjëherë në hapin e dytë deri në të fundit, por sigurohuni që të ktheheni këtu për të parë
Bordi MXY - Bordi Robot i Vizatimit të XY Plotter me Buxhet të ulët: 8 hapa (me fotografi)
Bordi MXY - Bordi i Robotit të Vizatimit të Plotterit XY me Buxhet të ulët: Qëllimi im ishte të hartoja bordin mXY për të bërë buxhet të ulët makinën e vizatimit të komplotit XY. Kështu që unë projektova një tabelë që e bën më të lehtë për ata që duan ta bëjnë këtë projekt. Në projektin e mëparshëm, ndërsa përdorni 2 copë motorë stepper Nema17, ky bord u
Roboti i vizatimit për Arduino: 18 hapa (me fotografi)
Roboti i vizatimit për Arduino: Shënim: Unë kam një version të ri të këtij roboti që përdor një tabelë qarku të shtypur, është më e lehtë për tu ndërtuar dhe ka zbulim të pengesave IR! Shikojeni atë në http://bit.ly/OSTurtle Unë e projektova këtë projekt për një punëtori 10-orëshe për ChickTech.org qëllimi i të cilit është të
Arduino CNC Plotter (MAKINA E Vizatimit): 10 hapa (me fotografi)
Arduino CNC Plotter (MAKINA E Vizatimit): Hej djema! Shpresoj që ju të keni shijuar tashmë " Si të krijoni platformën tuaj të trajnimit Arduino " dhe ju jeni gati për një të re, si zakonisht kam bërë këtë tutorial për t'ju udhëhequr hap pas hapi duke e bërë këtë lloj super të mahnitshëm
Krahu i vizatimit që kontrollohet me zë - Projekti i shkollës Arduino: 4 hapa (me fotografi)
Drawing krah që kontrollohet me zë - Projekti i shkollës Arduino: Kjo është hera ime e parë që punoj me Arduino, dhe punoj me diçka të tillë ndonjëherë, prandaj më falni nëse kam bërë ndonjë gabim! Këtë ide e mora kur mendova për hobet e mia, të cilat janë vizatimi dhe muzika. Kështu që unë u përpoqa t'i kombinoja të dyja në këtë! Një shitës