Arduino TFT նկարչական ծրագիր ՝ 4 քայլ
Arduino TFT նկարչական ծրագիր ՝ 4 քայլ
Anonim
Arduino TFT նկարչական ծրագիր
Arduino TFT նկարչական ծրագիր
Arduino TFT նկարչական ծրագիր
Arduino TFT նկարչական ծրագիր
Arduino TFT նկարչական ծրագիր
Arduino TFT նկարչական ծրագիր

Այս հրահանգը մանրամասնում է Arduino TFT էկրանի գծագրման ծրագիր կազմելու համար անհրաժեշտ կոդը: Այս ծրագիրը, սակայն, եզակի է, քանի որ այն թույլ է տալիս նկարը պահել SD քարտում և հետագայում բեռնել ՝ ավելի շատ փոփոխություններ կատարելու համար:

Պարագաներ

  1. Arduino Uno - բնօրինակ կամ համատեղելի կլոն
  2. TFT սենսորային էկրան - ես օգտագործել եմ Elegoo էկրան, այսինքն ՝ ինձ պետք էին Elegoo- ի վարորդները:
  3. Micro SD ընթերցող տախտակ - օգտագործվում է SD քարտի վրա գծագրման տվյալները պահելու համար: Screenուցադրման տակ իմ էկրանը ներկառուցված ընթերցող ուներ:
  4. Stylus - իմ էկրանը եկավ մեկով: Ձեռքերի եղունգները նույնպես լավ են աշխատում:
  5. Միկրո SD քարտ - ոչ ավելի, քան 32 ԳԲ ՝ exFAT ձևաչափման սահմանափակումների պատճառով (Arduino- ն կարող է կարդալ FAT32 ձևաչափով քարտեր, բայց ՉԻ exFAT: Մեծ քարտերի մեծ մասը ձևաչափվում է exFAT- ով): Սա այն տեսակն է, որը դուք կդնեիք ընդլայնվող պահեստով հեռախոսի մեջ:
  6. Համակարգիչ Arduino IDE- ով
  7. Mingրագրավորման մալուխ - USB A- ից USB B. Իմ Arduino- ն եկավ մեկի հետ:
  8. SD քարտի ադապտեր - օգտագործվում է Micro SD քարտը սովորական SD- ի վերածելու համար `SD բնիկի մեջ տեղադրելու համար, կամ այն, որը SD քարտը միացնում է USB բնիկին:

Քայլ 1: Ձևաչափեք SD քարտը

Ձևաչափեք SD քարտը
Ձևաչափեք SD քարտը
Ձևաչափեք SD քարտը
Ձևաչափեք SD քարտը
  1. Վերցրեք Micro SD քարտը և այն կցեք ձեր համակարգչին ՝ օգտագործելով ձեր SD քարտի ընթերցողը
  2. Բացեք File Explorer- ը և գտեք SD քարտը:
  3. Աջ սեղմեք դրա վրա և ընտրեք Ձևաչափ:
  4. Սահմանեք ընտրանքները ՝ հիմնված էկրանի նկարի վրա:
  5. Կտտացրեք Սկսել:
  6. Գործընթացն ավարտելուց հետո հանեք քարտը:

Եթե Windows չեք աշխատում, փորձեք օգտագործել SD ձևաչափը SD ասոցիացիայից:

Քայլ 2. Պատրաստեք Arduino- ն

Պատրաստեք Arduino- ն
Պատրաստեք Arduino- ն
Պատրաստեք Arduino- ն
Պատրաստեք Arduino- ն
  1. Սեղմեք ձեր էկրանի վահանը Arduino- ի վրա ՝ հոգալով շարելով կապում:
  2. Տեղադրեք SD քարտը էկրանի ներքևի ընթերցողի մեջ:

Քայլ 3: Arduino Sketch

Չնայած մասերի ցանկը բավականին պարզ էր, բայց կա մի տոննա կոդ: Ես քայլ առ քայլ կանցնեմ այստեղ:

#ներառում

#ներառել #ներառել #ներառել #ներառել

Elegoo_GFX, _TFTLCD և TouchScreen- ը բոլորը սարքավորումների համար հատուկ են: Եթե այլ էկրան եք օգտագործում, օգտագործեք արտադրողի տրամադրած գրադարանները:

SPI և SD- ն օգտագործվում են SD քարտի հետ հաղորդակցվելու համար: SPI- ն այն քարտն է, որն օգտագործում է SD քարտի վերահսկիչը:

#if սահմանված (_ SAM3X8E _) #undef _FlashStringHelper:: F (string_literal) #սահմանել F (string_literal) string_literal #endif

Սա նաև ապարատային է:

#սահմանել YP A3 // պետք է լինի անալոգային քորոց #սահմանի XM A2 // պետք է լինի անալոգային քորոց #սահմանի YM 9 #սահմանի XP 8

// Հպեք նոր ILI9341 TP- ի համար

#սահմանել TS_MINX 120 #սահմանել TS_MAXX 900 #սահմանել TS_MINY 70 #սահմանել TS_MAXY 920

#սահմանեք CSPIN 10 -ը

#սահմանել LCD_CS A3

#սահմանել LCD_CD A2 #սահմանել LCD_WR A1 #սահմանել LCD_RD A0 #սահմանել LCD_RESET A4

Այս #սահմանումներից յուրաքանչյուրը ստիպում է IDE- ն փոխարինել անունը արժեքով: Այստեղ նրանք դրել են LCD և SD մուտքի/ելքի կապերը:

// Անվանեք անուններ որոշ 16-բիթանոց գույնի արժեքների համար.

Սրանք ծածկագրում օգտագործված մի քանի գույներ են: #դրանց սահմանումը հեշտացնում է ծածկագիրը կարդալը:

#սահմանեք ՊԵՆՐԱԴԻՈ 3Ս 3

Սա սահմանում է գծագրության չափը:

#սահմանել MINPRESSURE 10#սահմանել MAXPRESSURE 1000

// pressureնշման ավելի լավ ճշգրտության համար մենք պետք է իմանանք դիմադրությունը

// X+- ի և X- ի միջև `ցանկացած մուլտիմետր օգտագործելու համար այն կարդալու համար // այն մեկի համար, որը ես օգտագործում եմ, դրա 300 օմ-ն X ափսեի վրա TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300);

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

Այս հայտարարությունները սահմանում են ճնշումը, որն անհրաժեշտ է հպում գրանցելու, հպման գործառույթը նախաստորագրելու և էկրանը գործարկելու համար:

Ֆայլի պահպանում; int պահեստավորում Չափ; int stoX = 1; int stoY = 1;

Սրանք փոփոխականներ են ծրագրի պահպանման մասի համար:

void setup (void) {Serial.begin (9600); Serial.println («Ներկերի ծրագիր»);

tft.reset ();

uint16_t նույնացուցիչ = tft.readID ();

եթե (նույնացուցիչ == 0x0101) {նույնացուցիչ = 0x9341; Serial.println (F («Գտնվել է 0x9341 LCD վարորդ»)); }

// Սկսեք էկրանը

tft.begin (նույնացուցիչ); tft.setRotation (2);

pinMode (13, OUTPUT);

// Սկսել SD քարտը

if (! SD.begin (CSPIN)) {Serial.println ("SD- ի նախաստորագրումը ձախողվեց"); վերադարձ; } Serial.println ("SD- ն նախաստորագրված է");

// Նկարեք ֆոնը

drawBackground (); }

Կարգավորման գործառույթը սկսում է Սերիան, եթե այն հասանելի է, վերականգնում է էկրանը, հայտնաբերում է TFT վարորդը, սկսում է էկրանը, գործարկում է քարտը և կանչում ֆոն նկարելու գործառույթ:

Ես կանցնեմ դեպի հանգույցի գործառույթի հիմնական մասը: Մնացած ամեն ինչ պարզապես օգտագործվում է սենսորային էկրանը վարելու համար:

// Հայտնաբերել էկրանի սեղմումը և պահել այն փոփոխականների վրա, եթե (p.z> MINPRESSURE && p.z <MAXPRESSURE) {// Scale p.x = map (p.x, TS_MINX, TS_MAXX, tft.width (), 0); p.y = (tft. բարձրություն () - քարտեզ (p.y, TS_MINY, TS_MAXY, tft.height (), 0));

// Ոչ ոքի

if (p.y> 21) {// Պահել տվյալները SD քարտի պահեստում = SD.open ("storage.txt", FILE_WRITE); պահեստավորում. տպագիր (p.x); storage.print (","); պահեստավորում. տպագիր (p.y); պահեստավորում. փակել ();

// Կետ հպման դիրքում

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

// Deնջել կոճակը

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

// Բեռի կոճակի գործողություն

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

Եթե մամուլ է հայտնաբերվում, փոփոխականներ տեղադրեք մամուլի գտնվելու վայրի համար:

Այնուհետև, եթե մամուլը գտնվում է գծագրման տարածքում, պահեք կետը SD քարտում պահեստում: txt և սեղմված կետում գծեք շրջան ՝ սահմանված չափով և գույնով:

Այնուհետև, եթե մամուլը գտնվում է ջնջման կոճակի գտնվելու վայրում, գործարկեք գործառույթ, որը ջնջում է պահված նկարը: Եթե օգտագործում եք տարբեր չափերի էկրան, փորձեք խաղալ կոճակի տեղադրության արժեքների հետ:

Այնուհետև, եթե մամուլը գտնվում է բեռնման կոճակի գտնվելու վայրում, գործարկեք գործառույթ, որը բեռնում է պահված նկարը: Եթե օգտագործում եք տարբեր չափերի էկրան, փորձեք խաղալ կոճակի տեղադրության արժեքների հետ:

Այժմ ես կբացատրեմ գործառույթները:

Առաջին գործառույթը կոչվում է setup ՝ նկարելու ֆոնը և կոճակները:

void drawBackground () {// Սահմանել ֆոնը tft.fillScreen (Սև);

// Ներկել տեքստը

tft.setTextColor (Սպիտակ); tft.setTextSize (3); tft.setCursor (0, 0); tft.println («Ներկ»);

// Բեռնման կոճակ

tft.fillRect (219, 0, 21, 21, Կանաչ);

// Մաքրել կոճակը

tft.fillRect (198, 0, 21, 21, ԿԱՐՄԻՐ); }

Այն էկրանը սև է լցնում, գրում է Paint բառը և կոճակների համար գծում է գունավոր քառակուսիներ: Եթե օգտագործում եք տարբեր չափերի էկրան, փորձեք խաղալ կոճակի տեղադրության արժեքների հետ:

void deleteStorage () {// leteնջել SD.remove ֆայլը ("storage.txt");

// Սահմանել ֆոնը

tft.fillScreen (ՍԵՎ);

// leteնջել հաջողության տեքստը

tft.setTextColor (Սպիտակ); tft.setTextSize (2); tft.setCursor (0, 0); tft.println ("storage.txt ջնջված է");

// Թող օգտվողը կարդա այն

ուշացում (2000);

// Շարունակեք նկարել

drawBackground (); }

The deleteStorage գործառույթը հեռացնում է storage.txt- ը, լրացնում է սև էկրանը և ջնջման հաջողության հաղորդագրություն է տալիս: Այնուհետև այն կոչում է drawBackground գործառույթը, որը թույլ է տալիս սկսել այլ բան նկարել:

void loadStorage () {// Խուսափեք դանդաղ մատների հետաձգումից կրկնելուց (250);

// Ստուգեք պահպանման ֆայլը

եթե (! SD.exists ("storage.txt")) {Serial.println ("storage.txt ֆայլ չկա"); վերադարձ; }

// Բացել ֆայլը միայն կարդալու ռեժիմում

պահեստավորում = SD.open ("storage.txt", FILE_READ);

// Քանի դեռ կան տվյալներ, while (stoY> 0) {// Թարմացնել դիրքի փոփոխականները stoX = storage.parseInt (); stoY = storage.parseInt ();

// Նկարեք պահեստից

tft.fillCircle (stoX, stoY, PENRADIUS, WHITE); } // Փակել ֆայլը storage.close (); }

Վերջապես, loadStorage գործառույթը ստուգում է պահեստային ֆայլը, բացում է այն միայն կարդալու ռեժիմում, այնուհետև կրկնում է այս հանգույցը.

Քանի դեռ ավելի շատ տվյալներ կան,

  1. Թարմացրեք դիրքի փոփոխականները storage.txt- ից վերլուծված տվյալներով
  2. Բեռված կետում նկարեք շրջան

Երբ հանգույցն ավարտվում է և այլևս տվյալներ չկան, այն փակում է պահեստավորման ֆայլը:

Այս ուրվագծի ծածկագիրը կարելի է գտնել ստորև: Պարզապես ներբեռնեք այն, բացեք այն Arduino- ում և վերբեռնեք այն ձեր տախտակին:

Քայլ 4: Այս ծրագրի օգտագործումը

Օգտագործելով այս ծրագիրը
Օգտագործելով այս ծրագիրը

Պարզապես միացրեք ձեր Arduino- ն էներգիայի աղբյուրին `համակարգչին, մարտկոցին, պատի գորտնուկին և այլն և սկսեք նկարել: Ձեր նկարը և դրա պահված տվյալները ջնջելու համար սեղմեք կարմիր կոճակը: Պահեստից գծանկար բեռնելու և դրա վրա աշխատելու համար կտտացրեք կանաչ կոճակին: Այսպիսով, դուք կարող եք բազմիցս կրկնել գծագրի վրա:

Որպես ընդլայնում, փորձեք գծել գծագիրը ձեր համակարգչի վրա.

  1. Միացրեք SD քարտը տվյալներով ձեր համակարգչին:
  2. Բացեք storage.txt- ը ձեր նախընտրած տեքստի/կոդի խմբագրիչում:
  3. Պատճենեք storage.txt- ի բոլոր արժեքները:
  4. Հետևեք կետին գծագրող ծրագրի այս հղմանը:
  5. Deնջեք ձախից երկու օրինակային կետերը:
  6. Տեղադրեք ձեր տվյալները այնտեղ, որտեղ եղել են օրինակելի կետերը:

Սա ձեր գծանկարները ցուցադրելու կոկիկ միջոց է. Գուցե նույնիսկ փորձեք փոխել կետի գույնը Arduino- ում կամ point -plotter- ում:

Փոփոխությունները ողջունելի են, և ես կցանկանայի մեկնաբանություններում տեսնել որոշ առաջարկություններ: Շնորհակալություն սա դիտելու համար, և ես հույս ունեմ, որ դրա կոկիկ օգտագործումը կգտնեք ձեր սեփական նախագծերում:

Խորհուրդ ենք տալիս: