Përmbajtje:

Programi i vizatimit Arduino TFT: 4 hapa
Programi i vizatimit Arduino TFT: 4 hapa

Video: Programi i vizatimit Arduino TFT: 4 hapa

Video: Programi i vizatimit Arduino TFT: 4 hapa
Video: Робот на Arduino Nano #ардуино #роботы #электроника 2024, Korrik
Anonim
Programi i vizatimit Arduino TFT
Programi i vizatimit Arduino TFT
Programi i vizatimit Arduino TFT
Programi i vizatimit Arduino TFT
Programi i vizatimit Arduino TFT
Programi i vizatimit Arduino TFT

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

  1. Arduino Uno - klon origjinal ose i pajtueshëm
  2. Ekran me prekje TFT - Kam përdorur një ekran Elegoo, që do të thotë se kisha nevojë për drejtuesit e Elegoo.
  3. 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.
  4. Stylus - ekrani im erdhi me një. Thonjtë e gishtave gjithashtu punojnë mirë.
  5. 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.
  6. Kompjuter me Arduino IDE
  7. Kabllo programimi - USB A në USB B. Arduino im erdhi me një të tillë.
  8. 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

Formatoni kartën SD
Formatoni kartën SD
Formatoni kartën SD
Formatoni kartën SD
  1. Merrni kartën Micro SD dhe bashkojeni atë në kompjuterin tuaj duke përdorur lexuesin tuaj të kartave SD
  2. Hapni File Explorer dhe gjeni kartën SD.
  3. Klikoni me të djathtën mbi të dhe zgjidhni Format.
  4. Vendosni opsionet bazuar në pamjen e ekranit.
  5. Kliko Start.
  6. 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

Përgatitni Arduino
Përgatitni Arduino
Përgatitni Arduino
Përgatitni Arduino
  1. Shtypni mburojën e ekranit tuaj mbi Arduino, duke u kujdesur që të rreshtoni kunjat.
  2. 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,

  1. Përditësoni variablat e pozicionit me të dhënat e analizuara nga storage.txt
  2. 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

Duke përdorur këtë program
Duke përdorur këtë program

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:

  1. Lidheni kartën SD me të dhëna në kompjuterin tuaj.
  2. Hapni storage.txt në redaktorin tuaj të preferuar të tekstit/kodit.
  3. Kopjoni të gjitha vlerat në ruajtje.txt.
  4. Ndiqni këtë lidhje për një program për komplotimin e pikave.
  5. Fshini dy pikat shembull në të majtë.
  6. 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: