Turinys:

„Arduino“TFT piešimo programa: 4 žingsniai
„Arduino“TFT piešimo programa: 4 žingsniai

Video: „Arduino“TFT piešimo programa: 4 žingsniai

Video: „Arduino“TFT piešimo programa: 4 žingsniai
Video: Draw Wall Painting Robot with Cable Plotter Arduino Maker Project Kit Polar Graph with Motor 2024, Liepa
Anonim
„Arduino“TFT piešimo programa
„Arduino“TFT piešimo programa
„Arduino“TFT piešimo programa
„Arduino“TFT piešimo programa
„Arduino“TFT piešimo programa
„Arduino“TFT piešimo programa

Šioje instrukcijoje išsamiai aprašomas kodas, kuris naudojamas kuriant „Arduino“TFT ekrano piešimo programą. Tačiau ši programa yra unikali, nes ji leidžia išsaugoti piešinį SD kortelėje ir vėliau jį įkelti, kad būtų galima daugiau redaguoti!

Prekės

  1. „Arduino Uno“- originalus arba suderinamas klonas
  2. TFT jutiklinis ekranas - naudojau „Elegoo“ekraną, tai reiškia, kad man reikia „Elegoo“tvarkyklių.
  3. „Micro SD“skaitytuvo lenta - naudojama piešimo duomenims saugoti į SD kortelę. Mano ekrane buvo įmontuotas skaitytuvas po ekranu.
  4. Rašiklis - mano ekranas buvo su vienu. Pirštų nagai taip pat veikia gerai.
  5. „Micro SD“kortelė - ne daugiau kaip 32 GB dėl „exFAT“formatavimo apribojimų („Arduino“gali skaityti FAT32 formato korteles, bet NE „exFAT“. Dauguma didesnių kortelių yra suformatuotos naudojant exFAT.). Tai yra tas, kurį įdėtumėte į telefoną su išplėsta saugykla.
  6. Kompiuteris su „Arduino IDE“
  7. Programavimo kabelis - USB A į USB B. Mano „Arduino“buvo su vienu.
  8. SD kortelės adapteris - naudojamas paversti „Micro SD“kortelę į įprastą SD, kad būtų įdėta į SD lizdą ARBA tokią, kuri jungia SD kortelę prie USB lizdo.

1 veiksmas: suformatuokite SD kortelę

Formatuokite SD kortelę
Formatuokite SD kortelę
Formatuokite SD kortelę
Formatuokite SD kortelę
  1. Paimkite „Micro SD“kortelę ir pritvirtinkite ją prie kompiuterio naudodami SD kortelių skaitytuvą
  2. Atidarykite „File Explorer“ir raskite SD kortelę.
  3. Dešiniuoju pelės mygtuku spustelėkite jį ir pasirinkite Formatas.
  4. Nustatykite parinktis pagal ekrano kopiją.
  5. Spustelėkite Pradėti.
  6. Baigę procesą, išimkite kortelę.

Jei nenaudojate „Windows“, pabandykite naudoti SD formato programą iš SD asociacijos.

2 žingsnis: Paruoškite „Arduino“

Paruoškite „Arduino“
Paruoškite „Arduino“
Paruoškite „Arduino“
Paruoškite „Arduino“
  1. Paspauskite ekrano skydą žemyn ant „Arduino“, stengdamiesi sujungti kaiščius.
  2. Įdėkite SD kortelę į skaitytuvą po ekranu.

3 žingsnis: „Arduino“eskizas

Nors dalių sąrašas buvo gana paprastas, yra daugybė kodų. Čia aš eisiu žingsnis po žingsnio.

#įtraukti

#įtraukimas #įtraukimas #įtraukimas #įtraukimas

„Elegoo_GFX“, „_TFTLCD“ir „TouchScreen“yra skirti konkrečiai aparatinei įrangai. Jei naudojate kitą ekraną, naudokite gamintojo pateiktas bibliotekas.

SPI ir SD naudojami bendrauti su SD kortele. SPI yra protokolas, kurį naudoja SD kortelės valdiklis.

#if apibrėžta (_ SAM3X8E _) #undef _FlashStringHelper:: F (string_literal) #define F (string_literal) string_literal #endif

Tai taip pat būdinga aparatinei įrangai.

#define YP A3 // turi būti analoginis kaištis #apibrėžti XM A2 // turi būti analoginis PIN #define YM 9 #define XP 8

// Palieskite „For New ILI9341 TP“

#define TS_MINX 120 #define TS_MAXX 900 #define TS_MINY 70 #define TS_MAXY 920

#define CSPIN 10

#define LCD_CS A3

#define LCD_CD A2 #define LCD_WR A1 #define LCD_RD A0 #define LCD_RESET A4

Kiekvienas iš šių #define teiginių priverčia IDE pavadinimą pakeisti reikšme. Čia jie nustato LCD ir SD įvesties/išvesties kaiščius.

// Priskirkite pavadinimus kai kurioms 16 bitų spalvų reikšmėms: #define BLACK 0x0000 #define WHITE 0xFFFF #define RED 0xF800 #define BLUE 0x001F #define GREEN 0x07E0

Tai yra kelios kodo spalvos. #juos apibrėžus, lengviau skaityti kodą.

#define PENRADIUS 3

Tai nustato piešimo rašiklio dydį.

#define MINPRESSURE 10#apibrėžti MAXPRESSURE 1000

// Kad slėgis būtų tikslesnis, turime žinoti pasipriešinimą

// tarp X+ ir X- skaitykite bet kokiu multimetru // Tam, kurį naudoju, jo 300 omų skersmuo per X plokštę Jutiklinis ekranas ts = jutiklinis ekranas (XP, YP, XM, YM, 300);

„Elegoo_TFTLCD tft“(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);

Šie teiginiai apibrėžia spaudimą, reikalingą prisilietimui užregistruoti, prisilietimo funkcijai inicijuoti ir ekranui paleisti.

Failų saugykla; int storageSize; int stoX = 1; int stoY = 1;

Tai yra programos saugojimo dalies kintamieji.

void setup (void) {Serial.begin (9600); Serial.println („Dažų programa“);

tft.reset ();

uint16_t identifikatorius = tft.readID ();

if (identifikatorius == 0x0101) {identifikatorius = 0x9341; Serial.println (F ("Rasta 0x9341 LCD tvarkyklė")); }

// Pradėti ekraną

tft.begin (identifikatorius); tft.setRotation (2);

pinMode (13, OUTPUT);

// Paleisti SD kortelę

if (! SD.begin (CSPIN)) {Serial.println ("Nepavyko inicijuoti SD"); grįžti; } Serial.println ("SD inicijuota");

// Nubrėžkite foną

drawBackground (); }

Sąrankos funkcija paleidžia serijinį, jei yra, iš naujo nustato ekraną, aptinka TFT tvarkyklę, paleidžia ekraną, paleidžia kortelę ir iškviečia fono piešimo funkciją.

Aš pereisiu prie pagrindinės ciklo funkcijos dalies. Visa kita naudojama tik jutikliniam ekranui vairuoti.

// Aptikti ekrano paspaudimą ir išsaugoti jį kintamajame, jei (p.z> MINPRESSURE && p.z <MAXPRESSURE) {// Mastelis p.x = map (p.x, TS_MINX, TS_MAXX, tft.width (), 0); p.y = (tft.height () - žemėlapis (p.y, TS_MINY, TS_MAXY, tft.height (), 0));

// Piešti

if (p.y> 21) {// Išsaugoti duomenis į SD kortelės saugyklą = SD.open ("storage.txt", FILE_WRITE); storage.print (p.x); storage.print (","); storage.println (p.y); storage.close ();

// Taškas liečiamoje padėtyje

tft.fillCircle (p.x, p.y, PENRADIUS, BALTAS); }

// Ištrinti mygtukas

if ((p.y 198) && (p.x <219)) {deleteStorage (); }

// Įkelti mygtuko veiksmas

if ((p.y 219)) {loadStorage (); }}

Jei aptinkamas spaudas, nustatykite spaudos vietos kintamuosius.

Tada, jei spauda yra piešimo srityje, išsaugokite tašką SD kortelėje, esančioje saugykloje.

Tada, jei spaudžiate ištrynimo mygtuko vietoje, paleiskite funkciją, kuri ištrina išsaugotą piešinį. Jei naudojate kitokio dydžio ekraną, pabandykite žaisti naudodami mygtukų vietos reikšmes.

Tada, jei spaudžiamas įkėlimo mygtuko vietoje, paleiskite funkciją, kuri įkelia išsaugotą piešinį. Jei naudojate kitokio dydžio ekraną, pabandykite žaisti naudodami mygtukų vietos reikšmes.

Dabar paaiškinsiu funkcijas.

Sąrankoje iškviečiama pirmoji funkcija, skirta piešti foną ir mygtukus.

void drawBackground () {// Nustatykite foną tft.fillScreen (BLACK);

// Dažyti tekstą

tft.setTextColor (BALTA); tft.setTextSize (3); tft.setCursor (0, 0); tft.println („Dažai“);

// Įkelti mygtukas

tft.fillRect (219, 0, 21, 21, ŽALIA);

// Išvalymo mygtukas

tft.fillRect (198, 0, 21, 21, RAUDONA); }

Jis užpildo ekraną juodai, rašo žodį „Paint“ir piešia spalvotus mygtukų kvadratus. Jei naudojate kitokio dydžio ekraną, pabandykite žaisti naudodami mygtukų vietos reikšmes.

void deleteStorage () {// Ištrinkite failą SD.remove ("storage.txt");

// Nustatykite foną

tft.fillScreen (JUODAS);

// Ištrinti sėkmės tekstą

tft.setTextColor (BALTA); tft.setTextSize (2); tft.setCursor (0, 0); tft.println ("storage.txt ištrintas");

// Leiskite vartotojui ją perskaityti

vėlavimas (2000 m.);

// Tęsti piešimą

drawBackground (); }

Funkcija „deleteStorage“pašalina „storage.txt“, užpildo ekraną juodai ir pateikia sėkmingą pranešimą ištrinti. Tada ji iškviečia „drawBackground“funkciją, kad galėtumėte pradėti piešti ką nors kita.

void loadStorage () {// Venkite pakartojimų dėl lėto pirštų uždelsimo (250);

// Patikrinkite, ar nėra saugojimo failo

if (! SD.exists ("storage.txt")) {Serial.println ("Nėra storage.txt failo"); grįžti; }

// Atidaryti failą tik skaitymo režimu

saugykla = SD.open ("storage.txt", FILE_READ);

// Kol yra duomenų, while (stoY> 0) {// Atnaujinti padėties kintamuosius stoX = storage.parseInt (); stoY = saugykla.parseInt ();

// Piešti iš saugyklos

tft.fillCircle (stoX, stoY, PENRADIUS, WHITE); } // Uždaryti failą storage.close (); }

Galiausiai „loadStorage“funkcija patikrina saugojimo failą, atidaro jį tik skaitymo režimu, tada pakartoja šią kilpą:

Kol yra daugiau duomenų,

  1. Atnaujinkite pozicijos kintamuosius naudodami išanalizuotus duomenis iš storage.txt
  2. Nubrėžkite apskritimą įkeltame taške

Kai ciklas baigiamas ir nebėra duomenų, jis uždaro saugojimo failą.

Šio eskizo kodą rasite žemiau. Tiesiog atsisiųskite, atidarykite „Arduino“ir įkelkite į savo lentą!

4 žingsnis: šios programos naudojimas

Naudojant šią programą
Naudojant šią programą

Tiesiog prijunkite „Arduino“prie maitinimo šaltinio - kompiuterio, akumuliatoriaus, sieninių karpų ir pan. Ir pradėkite piešti. Norėdami ištrinti piešinį ir jo saugomus duomenis, paspauskite raudoną mygtuką. Norėdami įkelti piešinį iš saugyklos ir toliau dirbti su juo, spustelėkite žalią mygtuką. Tokiu būdu jūs galite daug kartų kartoti piešinį!

Kaip plėtinį pabandykite piešti piešinį savo kompiuteryje:

  1. Prijunkite SD kortelę su duomenimis prie kompiuterio.
  2. Atidarykite „storage.txt“failą mėgstamiausiame teksto/kodo redaktoriuje.
  3. Nukopijuokite visas „storage.txt“esančias reikšmes.
  4. Sekite šią nuorodą į taškų braižymo programą.
  5. Ištrinkite du pavyzdžius kairėje.
  6. Įklijuokite duomenis ten, kur buvo pavyzdiniai taškai.

Tai puikus būdas parodyti savo piešinius - galbūt net pabandykite pakeisti taško spalvą „Arduino“arba taškiniame braižytuve!

Pakeitimai yra sveikintini, ir aš norėčiau pamatyti keletą pasiūlymų komentaruose. Dėkojame, kad pažvelgėte į tai ir tikiuosi, kad savo projektuose rasite tinkamų jo panaudojimo būdų!

Rekomenduojamas: