Mundarija:

Arduino TFT chizish dasturi: 4 qadam
Arduino TFT chizish dasturi: 4 qadam

Video: Arduino TFT chizish dasturi: 4 qadam

Video: Arduino TFT chizish dasturi: 4 qadam
Video: SKR 1.4 - TMC2208 UART v3.0 2024, Noyabr
Anonim
Arduino TFT chizish dasturi
Arduino TFT chizish dasturi
Arduino TFT chizish dasturi
Arduino TFT chizish dasturi
Arduino TFT chizish dasturi
Arduino TFT chizish dasturi

Bu ko'rsatma Arduino TFT ekrani uchun chizmachilik dasturini tuzish kodini batafsil bayon qiladi. Ammo bu dastur o'ziga xosdir, chunki u chizilganni SD -kartaga saqlashga va keyinchalik uni tahrir qilish uchun yuklashga imkon beradi!

Ta'minotlar

  1. Arduino Uno - original yoki mos klon
  2. TFT sensorli ekrani - Men Elegoo ekranini ishlatardim, ya'ni menga Elegoo drayverlari kerak edi.
  3. Micro SD o'quvchi paneli - chizilgan ma'lumotni SD -kartaga saqlash uchun ishlatiladi. Mening ekranimda displey ostida o'rnatilgan o'quvchi bor edi.
  4. Stylus - mening ekranim bitta bilan keldi. Tirnoqlar ham yaxshi ishlaydi.
  5. Micro SD karta - 32 GB dan oshmaydi, chunki exFAT formatlash cheklovlari tufayli (Arduino FAT32 formatidagi kartalarni o'qiydi, lekin exFAT emas. Ko'pchilik katta kartalar exFAT bilan formatlangan). Bu siz kengaytiriladigan xotiraga ega telefonga qo'yadigan narsadir.
  6. Arduino IDE bilan kompyuter
  7. Dasturlash kabeli - USB A dan USB B. Mening Arduino bittasi bilan birga kelgan.
  8. SD -karta adapteri - Micro SD -kartani SD -uyaga yoki SD -kartani USB uyasiga ulash uchun oddiy SD -kartaga aylantirish uchun ishlatiladi.

1 -qadam: SD -kartani formatlash

SD -kartani formatlash
SD -kartani formatlash
SD -kartani formatlash
SD -kartani formatlash
  1. Micro SD kartani oling va uni SD kartani o'quvchi yordamida kompyuteringizga ulang
  2. Fayl Explorer -ni oching va SD -kartani toping.
  3. Uni o'ng tugmasini bosing va Format-ni tanlang.
  4. Skrinshot asosida variantlarni o'rnating.
  5. Boshlash -ni bosing.
  6. Jarayon tugagach, kartani chiqarib oling.

Agar sizda Windows ishlamayotgan bo'lsa, SD assotsiatsiyasidan SD Formatter -dan foydalanib ko'ring.

2 -qadam: Arduino -ni tayyorlang

Arduino -ni tayyorlang
Arduino -ni tayyorlang
Arduino -ni tayyorlang
Arduino -ni tayyorlang
  1. Tarmoqlarni to'g'rilashga harakat qilib, ekran qalqonini Arduino -ga bosing.
  2. SD -kartani ekran ostidagi o'quvchiga joylashtiring.

3 -qadam: Arduino eskiz

Qismlarning ro'yxati juda oddiy bo'lsa -da, juda ko'p kod mavjud. Men bu erda bosqichma-bosqich o'taman.

#qo'shing

#qo'shish #qo'shish #qo'shish #qo'shish

Elegoo_GFX, _TFTLCD va TouchScreen hammasi apparat uchun xosdir. Agar siz boshqa ekranni ishlatsangiz, ishlab chiqaruvchi tomonidan taqdim etilgan kutubxonalardan foydalaning.

SD -karta bilan aloqa qilish uchun SPI va SD ishlatiladi. SPI - bu SD karta boshqaruvchisi tomonidan ishlatiladigan protokol.

#if aniqlangan bo'lsa (_ SAM3X8E _) #undef _FlashStringHelper:: F (string_literal) #define F (string_literal) string_literal #endif

Bu, shuningdek, qurilmaga xosdir.

#YP A3 ni belgilang // analog pin bo'lishi kerak #XM A2 ni aniqlang // analog pin bo'lishi kerak #YM 9ni belgilang #XPni aniqlang 8

// Yangi ILI9341 TP uchun teging

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

#CSPIN 10 ni aniqlang

#LCD_CS A3 ni aniqlang

#LCD_CD A2 ta'rifi #LCD_WR A1 ta'rifi #LCD_RD A0 ta'rifi #LCD_RESET A4

Ushbu #define so'zlarining har biri IDEni qiymatni qiymat bilan almashtirishga majbur qiladi. Bu erda ular LCD va SD kirish/chiqish pinlarini o'rnatadilar.

// Nomlarni 16-bitli rang qiymatlariga belgilang: #QARA 0x0000ni belgilang #oqni belgilang 0xFFFF #REDni aniqlang 0xF800 #ko'kni aniqlang 0x001F #aniqlang Yashil 0x07E0

Bu kodda ishlatiladigan bir nechta ranglar. #ularni aniqlash kodni o'qishni osonlashtiradi.

#PENRADIUS 3 ni aniqlang

Bu chizilgan qalamning hajmini aniqlaydi.

#MINPRESSURE 10 ni belgilang#MAXPRESSURE 1000 ni aniqlang

// Yaxshi bosim aniqligi uchun biz qarshilikni bilishimiz kerak

// X+ va X o'rtasida- O'qish uchun har qanday multimetrdan foydalaning // Men foydalanayotganim uchun uning X plitasi bo'ylab 300 ohmli TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300);

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

Bu bayonotlar teginishni qayd etish, sensorli funktsiyani ishga tushirish va ekranni ishga tushirish uchun zarur bo'lgan bosimni belgilaydi.

Fayllarni saqlash; int storageSize; int stoX = 1; int stoY = 1;

Bu dasturni saqlash qismi uchun o'zgaruvchilar.

void setup (void) {Serial.begin (9600); Serial.println ("Paint dasturi");

tft.reset ();

uint16_t identifikatori = tft.readID ();

agar (identifikator == 0x0101) {identifikator = 0x9341; Serial.println (F ("0x9341 LCD drayveri topildi")); }

// Ekranni ishga tushiring

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

pinMod (13, OUTPUT);

// SD -kartani ishga tushiring

if (! SD.begin (CSPIN)) {Serial.println ("SDni ishga tushirish muvaffaqiyatsiz tugadi"); qaytish; } Serial.println ("SD boshlandi");

// Fonni chizish

drawBackground (); }

O'rnatish funktsiyasi mavjud bo'lsa, Serialni ishga tushiradi, ekranni qayta o'rnatadi, TFT drayverini aniqlaydi, ekranni ishga tushiradi, kartani ishga tushiradi va fonni chizish funksiyasini chaqiradi.

Men loop funktsiyasining asosiy qismiga o'taman. Qolganlarning hammasi sensorli ekranni boshqarish uchun ishlatiladi.

// Ekranni bosishni aniqlang va uni o'zgaruvchilarga saqlang, agar (p.z> MINPRESSURE && p.z <MAXPRESSURE) {// Scale p.x = map (p.x, TS_MINX, TS_MAXX, tft.width (), 0); p.y = (tft.height () - xarita (p.y, TS_MINY, TS_MAXY, tft.height (), 0));

// Chizma

if (p.y> 21) {// Ma'lumotlarni SD karta saqlashga saqlash = SD.open ("storage.txt", FILE_WRITE); saqlash.print (p.x); saqlash.print (","); saqlash.println (p.y); storage.close ();

// Tekshirish joyida nuqta

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

// O'chirish tugmasi

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

// Yuklash tugmasi harakati

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

Agar press aniqlansa, matbuot joylashuvi uchun o'zgaruvchilarni o'rnating.

So'ngra, agar rasm chizish maydonida bo'lsa, nuqta SD.txt -dagi saqlash joyini saqlang va bosilgan nuqtada belgilangan o'lcham va rangdagi aylana chiziladi.

Keyin, agar bosish o'chirish tugmasi joylashgan bo'lsa, saqlangan chizilganni o'chiradigan funktsiyani bajaring. Agar siz boshqa o'lchamdagi ekranni ishlatayotgan bo'lsangiz, tugma joylashuvi qiymatlari bilan o'ynashga harakat qiling.

Keyin, agar yuklash tugmasi joylashgan joyda bo'lsa, saqlangan rasmni yuklaydigan funktsiyani bajaring. Agar siz boshqa o'lchamdagi ekranni ishlatayotgan bo'lsangiz, tugma joylashuvi qiymatlari bilan o'ynashga harakat qiling.

Endi men funktsiyalarni tushuntiraman.

Birinchi funktsiya fon va tugmachalarni chizish uchun o'rnatishda chaqiriladi.

void drawBackground () {// Orqa fonni sozlash tft.fillScreen (Qora);

// Matnni bo'yash

tft.setTextColor (oq); tft.setTextSize (3); tft.setCursor (0, 0); tft.println ("Bo'yoq");

// Yuklash tugmasi

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

// Tozalash tugmasi

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

U ekranni qora rang bilan to'ldiradi, Paint so'zini yozadi va tugmalar uchun rangli kvadratchalar chizadi. Agar siz boshqa o'lchamdagi ekranni ishlatayotgan bo'lsangiz, tugma joylashuvi qiymatlari bilan o'ynashga harakat qiling.

void deleteStorage () {// SD.remove ("storage.txt") faylini o'chirish;

// Fonni o'rnating

tft.fillScreen (Qora);

// Muvaffaqiyat matnini o'chirish

tft.setTextColor (oq); tft.setTextSize (2); tft.setCursor (0, 0); tft.println ("storage.txt o'chirilgan");

// Foydalanuvchiga o'qishga ruxsat bering

kechikish (2000);

// Chizishni davom ettiring

drawBackground (); }

DeleteStorage funktsiyasi storage.txt faylini olib tashlaydi, ekranni qora rangga to'ldiradi va o'chirish uchun muvaffaqiyatli xabar beradi. Keyin DrawBackground funktsiyasini chaqiradi, bu sizga boshqa narsani bo'yashni boshlash imkonini beradi.

void loadStorage () {// Barmoqlarning sekin kechikishidan takrorlashdan saqlaning (250);

// Saqlash faylini tekshiring

agar (! SD.exists ("storage.txt"))) {Serial.println ("storage.txt fayli yo'q"); qaytish; }

// Faylni faqat o'qish rejimida ochish

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

// Ma'lumotlar mavjud bo'lganda, while (stoY> 0) {// Manzil o'zgaruvchilarini yangilash stoX = storage.parseInt (); stoY = saqlash.parseInt ();

// Saqlash joyidan chizish

tft.fillCircle (stoX, stoY, PENRADIUS, WHITE); } // storage.close () faylini yoping; }

Va nihoyat, loadStorage funktsiyasi saqlash faylini tekshiradi, uni faqat o'qish rejimida ochadi, so'ngra bu tsiklni takrorlaydi:

Ko'proq ma'lumotlar mavjud ekan,

  1. Pozitsiya o'zgaruvchilarini storage.txt dan ajratilgan ma'lumotlar bilan yangilang
  2. Yuklangan nuqtada aylana chizish

Agar tsikl tugasa va boshqa ma'lumotlar bo'lmasa, u saqlash faylini yopadi.

Ushbu eskizning kodini quyida topishingiz mumkin. Uni yuklab oling, Arduino -da oching va taxtangizga yuklang!

4 -qadam: Ushbu dasturdan foydalanish

Ushbu dasturdan foydalanish
Ushbu dasturdan foydalanish

Arduino -ni quvvat manbaiga ulang - kompyuter, batareya, devor siğili va boshqalar. Chizilgan rasm va undagi ma'lumotlarni o'chirish uchun qizil tugmani bosing. Rasmni ombordan yuklash va uning ustida ishlashni davom ettirish uchun yashil tugmani bosing. Shunday qilib, siz rasmni ko'p marta takrorlashingiz mumkin!

Kengaytma sifatida chizilgan rasmni kompyuteringizga chizib ko'ring:

  1. Ma'lumotlar bilan SD -kartani kompyuterga ulang.
  2. Storage.txt faylini sevimli matn/kod muharriridan oching.
  3. Storage.txt -dagi barcha qiymatlarni nusxalash.
  4. Nuqta tuzish dasturiga ushbu havola orqali kiring.
  5. Chapdagi ikkita misol nuqtasini o'chirib tashlang.
  6. Ma'lumotlaringizni misollar bo'lgan joyga qo'ying.

Bu chizmalaringizni namoyish qilishning eng yaxshi usuli - ehtimol Arduino yoki nuqta chizgichidagi nuqta rangini o'zgartirishga urinib ko'ring!

O'zgartirishlar qabul qilinadi va men izohlarda ba'zi takliflarni ko'rishni xohlayman. Buni ko'rib chiqqaningiz uchun tashakkur va umid qilamanki, siz o'zingizning loyihalaringizda undan to'g'ri foydalanishni topasiz!

Tavsiya: