Orodha ya maudhui:

Programu ya Kuchora ya Arduino TFT: Hatua 4
Programu ya Kuchora ya Arduino TFT: Hatua 4

Video: Programu ya Kuchora ya Arduino TFT: Hatua 4

Video: Programu ya Kuchora ya Arduino TFT: Hatua 4
Video: Mambo 3 Ya Kufanya Leo Ili Uondoe Stress Maishani Mwako 2024, Julai
Anonim
Programu ya Kuchora ya Arduino TFT
Programu ya Kuchora ya Arduino TFT
Programu ya Kuchora ya Arduino TFT
Programu ya Kuchora ya Arduino TFT
Programu ya Kuchora ya Arduino TFT
Programu ya Kuchora ya Arduino TFT

Maelezo haya yanayoweza kufundishwa nambari ambayo inafanya mpango wa kuchora kwa skrini ya Arduino TFT. Mpango huu ni wa kipekee, hata hivyo, kwa sababu inaruhusu kuokoa mchoro kwenye kadi ya SD na kuipakia baadaye ili kuhariri zaidi!

Vifaa

  1. Arduino Uno - asili au kiini kinachofaa
  2. Skrini ya kugusa ya TFT - Nilitumia skrini ya Elegoo, ikimaanisha nilihitaji madereva ya Elegoo.
  3. Bodi ya kusoma ya Micro SD - hutumiwa kuhifadhi data ya kuchora kwenye kadi ya SD. Skrini yangu ilikuwa na kujengwa katika msomaji chini ya onyesho.
  4. Stylus - skrini yangu ilikuja na moja. Vidole vinafanya kazi vizuri, pia.
  5. Kadi ndogo ya SD SD - sio zaidi ya 32GB, kwa sababu ya mapungufu ya muundo wa exFAT (Arduino inaweza kusoma kadi za muundo wa FAT32 lakini SI exFAT. Kadi kubwa zaidi zimepangwa na exFAT.). Hii ndio aina ambayo ungeweka kwenye simu na uhifadhi wa kupanuka.
  6. Kompyuta na Arduino IDE
  7. Cable ya programu - USB A hadi USB B. Arduino yangu ilikuja na moja.
  8. Adapta ya kadi ya SD - hutumiwa kubadilisha kadi ya Micro SD kuwa SD ya kawaida kuweka ndani ya SD yanayopangwa AU inayounganisha kadi ya SD na nafasi ya USB.

Hatua ya 1: Umbiza Kadi ya SD

Umbiza Kadi ya SD
Umbiza Kadi ya SD
Umbiza Kadi ya SD
Umbiza Kadi ya SD
  1. Chukua kadi ya Micro SD na uiambatanishe kwenye kompyuta yako ukitumia kisomaji chako cha kadi ya SD
  2. Fungua File Explorer na upate kadi ya SD.
  3. Bonyeza-kulia na uchague Umbizo.
  4. Weka chaguzi kulingana na skrini.
  5. Bonyeza Anza.
  6. Toa kadi wakati mchakato umekamilika.

Ikiwa hautumii Windows, jaribu kutumia Fomati ya SD kutoka kwa ushirika wa SD.

Hatua ya 2: Andaa Arduino

Andaa Arduino
Andaa Arduino
Andaa Arduino
Andaa Arduino
  1. Bonyeza ngao yako ya skrini chini kwenye Arduino, ukitunza kupanga pini.
  2. Ingiza kadi ya SD ndani ya msomaji chini ya skrini.

Hatua ya 3: Mchoro wa Arduino

Ingawa orodha ya sehemu ilikuwa rahisi sana, kuna tani ya nambari. Nitapitia hatua kwa hatua hapa.

# pamoja

#jumlisha #jumlisha #jumuisha #jumuisha

Elegoo_GFX, _TFTLCD, na TouchScreen zote ni maalum kwa vifaa. Ikiwa unatumia skrini tofauti, tumia maktaba zinazotolewa na mtengenezaji.

SPI na SD hutumiwa kuwasiliana na kadi ya SD. SPI ni itifaki inayotumiwa na mdhibiti wa kadi ya SD.

# ikiwa imefafanuliwa (_ SAM3X8E _) # undef _FlashStringHelper:: F (string_literal) #fasili F (string_literal) string_literal # endif

Hii pia ni maalum kwa vifaa.

#fafanua YP A3 // lazima iwe pini ya analog # fafanua XM A2 // lazima iwe pini ya analog #fafanua YM 9 #fafanua XP 8

// Gusa kwa ILI9341 TP mpya

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

#fafanua CSPIN 10

#fafanua LCD_CS A3

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

Kila moja ya taarifa hizi #fafanua hufanya IDE ibadilishe jina na thamani. Hapa, wanaweka pini za LCD na SD I / O.

// Tuma majina kwa nambari kadhaa za rangi 16-bit: #fafanua NYEUSI 0x0000 #fafanua NYEUPE 0xFFFF #fafanua RED 0xF800 #fafanua BLUE 0x001F #fafanua KIJANI 0x07E0

Hizi ni chache za rangi zinazotumiwa katika nambari. # kuzifafanua hufanya iwe rahisi kusoma nambari.

#fafanua PENRADIUS 3

Hii inafafanua saizi ya kalamu ya kuchora.

#fafanua CHANZO 10 # fafanua MAFUTO 1000

// Kwa usahihi bora wa shinikizo, tunahitaji kujua upinzani

// kati ya X + na X- Tumia multimeter yoyote kuisoma // Kwa ile ninayotumia, ohms zake 300 kwenye X sahani TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300);

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

Taarifa hizi zinafafanua shinikizo linalohitajika kusajili kugusa, kuanzisha kazi ya kugusa, na kuanza skrini.

Uhifadhi wa faili, uhifadhi wa ndaniSize; stoX = 1; stoY = 1;

Hizi ni vigeugeu kwa sehemu ya uhifadhi ya programu.

kuanzisha batili (batili) {Serial.begin (9600); Serial.println ("Programu ya Rangi");

tft.setet ();

kitambulisho cha uint16_t = tft.readID ();

ikiwa (kitambulisho == 0x0101) {kitambulisho = 0x9341; Serial.println (F ("Kupatikana 0x9341 LCD dereva")); }

// Anza skrini

tft kuanza (kitambulisho); tft.setRotation (2);

pinMode (13, OUTPUT);

// Anza kadi ya SD

ikiwa (! SD.begin (CSPIN)) {Serial.println ("Uanzishaji wa SD umeshindwa"); kurudi; } Serial.println ("SD imeanzishwa");

// Chora usuli

choraBackground (); }

Kazi ya usanidi huanza Serial ikiwa inapatikana, inawasha skrini tena, inagundua dereva wa TFT, inaanza skrini, inaanzisha kadi, na inaita kazi kuteka usuli.

Nitaruka kwa sehemu kuu ya kazi ya kitanzi. Kila kitu kingine hutumiwa tu kuendesha skrini ya kugusa.

// Gundua kitufe cha skrini na uihifadhi kwa vigeuzi ikiwa (p.z> MINPRESSURE && p.z <MAXPRESSURE) {// Scale p.x = ramani (p.x, TS_MINX, TS_MAXX, tft.width (), 0); p.y = (tft.height () - ramani (p.y, TS_MINY, TS_MAXY, tft.height (), 0));

// Chora

ikiwa (p.y> 21) {// Hifadhi data kwenye hifadhi ya kadi ya SD = SD.open ("storage.txt", FILE_WRITE); alama ya kuhifadhi (p.x); alama ya kuhifadhi (","); kuhifadhi.println (p.y); kuhifadhi karibu ();

// Nukta kwenye eneo la kugusa

tft.fill Circle (p.x, p.y, PENRADIUS, NYEUPE); }

// Kitufe cha kufuta

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

// Kitendo cha kifungo cha mzigo

ikiwa ((p. 219)) {loadStorage (); }}

Ikiwa waandishi wa habari hugunduliwa, weka vigeuzi kwa eneo la vyombo vya habari.

Halafu, ikiwa vyombo vya habari viko ndani ya eneo la kuchora, weka nukta kwenye kadi ya SD iliyo kwenye hifadhi.txt na chora duara kwenye hatua iliyobanwa, na saizi na rangi iliyofafanuliwa.

Kisha, ikiwa vyombo vya habari viko kwenye kitufe cha kufuta, fanya kazi ambayo inafuta mchoro uliohifadhiwa. Ikiwa unatumia skrini ya ukubwa tofauti, jaribu kucheza na nambari za kitufe cha eneo.

Kisha, ikiwa vyombo vya habari viko kwenye kitufe cha kupakia, fanya kazi inayobeba mchoro uliohifadhiwa. Ikiwa unatumia skrini ya ukubwa tofauti, jaribu kucheza na nambari za kitufe cha eneo.

Sasa, nitaelezea kazi.

Kazi ya kwanza inaitwa katika usanidi kuteka usuli na vifungo.

batili DrawBackground () {// Weka background tft.fillScreen (NYEUSI);

// Nakala ya rangi

tft.setTextColor (NYEUPE); tft.setTextSize (3); tft.setCursor (0, 0); tft.println ("Rangi");

// Kitufe cha kupakia

tft.fillRect (219, 0, 21, 21, KIJANI);

// Bonyeza kitufe

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

Inajaza skrini nyeusi, inaandika neno Rangi, na inachora miraba ya rangi kwa vifungo. Ikiwa unatumia skrini ya ukubwa tofauti, jaribu kucheza na nambari za kitufe cha eneo.

tupuUhifadhi () {// Futa faili SD.remove ("storage.txt");

// Weka msingi

tft.fillScreen (NYEUSI);

// Futa maandishi ya Mafanikio

tft.setTextColor (NYEUPE); tft.setTextSize (2); tft.setCursor (0, 0); tft.println ("storage.txt imefutwa");

// Hebu mtumiaji aisome

kuchelewa (2000);

// Endelea kuchora

choraBackground (); }

Kazi ya kufuta Hifadhi huondoa kuhifadhi.txt, inajaza skrini nyeusi, na inatoa ujumbe wa kufanikiwa kwa kufutwa. Halafu inaita kazi ya DrawBackground kukuruhusu kuanza kuchora kitu kingine.

Uhifadhi wa mzigo batili () {// Epuka kurudia kutoka kwa ucheleweshaji wa vidole polepole (250);

// Angalia faili ya kuhifadhi

ikiwa (! SD.exists ("storage.txt")) {Serial.println ("Hakuna faili ya kuhifadhi.txt"); kurudi; }

// Fungua faili katika hali ya kusoma tu

kuhifadhi = SD. kufungua ("storage.txt", FILE_READ);

// Wakati kuna data, wakati (stoY> 0) {// Sasisha nafasi anuwai stoX = storage.parseInt (); stoY = kuhifadhi.parseInt ();

// Chora kutoka kwa uhifadhi

tft.fill Circle (stoX, stoY, PENRADIUS, NYEUPE); } // Funga hifadhi ya faili karibu (); }

Mwishowe, kazi ya mzigo wa Uhifadhi inatafuta faili ya kuhifadhi, kuifungua kwa hali ya kusoma tu, kisha kurudia kitanzi hiki:

Maadamu kuna data zaidi,

  1. Sasisha vigeuzi vya nafasi na data iliyotengwa kutoka kwa storage.txt
  2. Chora duara kwenye sehemu iliyobeba

Wakati kitanzi kinakamilisha na hakuna data zaidi, inafunga faili ya kuhifadhi.

Nambari ya mchoro huu inaweza kupatikana hapa chini. Pakua tu, fungua kwa Arduino, na uipakie kwenye bodi yako!

Hatua ya 4: Kutumia Programu hii

Kutumia Programu hii
Kutumia Programu hii

Ingiza tu Arduino yako kwa chanzo cha nguvu - kompyuta, betri, wart ya ukuta, nk na uanze kuchora. Ili kufuta mchoro wako na data iliyohifadhiwa, bonyeza kitufe chekundu. Ili kupakia kuchora kutoka kwa uhifadhi na uendelee kuifanyia kazi, bonyeza kitufe cha kijani kibichi. Kwa njia hii, unaweza kurudia mara nyingi kwenye kuchora!

Kama kiendelezi, jaribu kupanga mchoro kwenye kompyuta yako:

  1. Chomeka kadi ya SD na data kwenye kompyuta yako.
  2. Fungua storage.txt katika kihariri cha maandishi / msimbo unaopenda.
  3. Nakili maadili yote kwenye storage.txt.
  4. Fuata kiunga hiki kwa mpango wa kupanga njama.
  5. Futa vielelezo viwili vya mfano upande wa kushoto.
  6. Bandika data yako ambapo alama za mfano zilikuwa.

Hii ni njia nadhifu ya kuonyesha michoro yako - labda hata jaribu kubadilisha rangi ya uhakika kwenye Arduino au kwa mpangaji wa uhakika!

Marekebisho yanakaribishwa, na ningependa kuona maoni kadhaa kwenye maoni. Asante kwa kuangalia hii na ninatumahi kuwa utapata matumizi mazuri kwa miradi yako mwenyewe!

Ilipendekeza: