Mundarija:
- Ta'minotlar
- 1 -qadam: SD -kartani formatlash
- 2 -qadam: Arduino -ni tayyorlang
- 3 -qadam: Arduino eskiz
- 4 -qadam: Ushbu dasturdan foydalanish
Video: Arduino TFT chizish dasturi: 4 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:23
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
- Arduino Uno - original yoki mos klon
- TFT sensorli ekrani - Men Elegoo ekranini ishlatardim, ya'ni menga Elegoo drayverlari kerak edi.
- Micro SD o'quvchi paneli - chizilgan ma'lumotni SD -kartaga saqlash uchun ishlatiladi. Mening ekranimda displey ostida o'rnatilgan o'quvchi bor edi.
- Stylus - mening ekranim bitta bilan keldi. Tirnoqlar ham yaxshi ishlaydi.
- 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.
- Arduino IDE bilan kompyuter
- Dasturlash kabeli - USB A dan USB B. Mening Arduino bittasi bilan birga kelgan.
- 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
- Micro SD kartani oling va uni SD kartani o'quvchi yordamida kompyuteringizga ulang
- Fayl Explorer -ni oching va SD -kartani toping.
- Uni o'ng tugmasini bosing va Format-ni tanlang.
- Skrinshot asosida variantlarni o'rnating.
- Boshlash -ni bosing.
- Jarayon tugagach, kartani chiqarib oling.
Agar sizda Windows ishlamayotgan bo'lsa, SD assotsiatsiyasidan SD Formatter -dan foydalanib ko'ring.
2 -qadam: Arduino -ni tayyorlang
- Tarmoqlarni to'g'rilashga harakat qilib, ekran qalqonini Arduino -ga bosing.
- 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,
- Pozitsiya o'zgaruvchilarini storage.txt dan ajratilgan ma'lumotlar bilan yangilang
- 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
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:
- Ma'lumotlar bilan SD -kartani kompyuterga ulang.
- Storage.txt faylini sevimli matn/kod muharriridan oching.
- Storage.txt -dagi barcha qiymatlarni nusxalash.
- Nuqta tuzish dasturiga ushbu havola orqali kiring.
- Chapdagi ikkita misol nuqtasini o'chirib tashlang.
- 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:
Arduino -dan Excel -ga ma'lumotlarni yuborish (va uni chizish): 3 qadam (rasmlar bilan)
Ma'lumotlarni Arduino -dan Excel -ga yuborish (va uni chizish): Men Arduino sensori o'qilishini real vaqtda chizish usulini izladim. Nafaqat syujet, balki keyingi tajribalar va tuzatishlar uchun ma'lumotlarni ko'rsatish va saqlash.Men topgan eng oddiy echim excel -dan foydalanish edi, lekin
Esp -01 dasturi Arduino yordamida: 3 qadam
Arduino -dan foydalanib Esp -01 dasturi: esp8266 -ni dasturlash juda oson, chunki unda ttl konvertoriga o'rnatilgan USB yoki boshqa tiklash tugmasi yo'q
HC-05 orqali Arduino-dan Android-da real vaqtda grafikni chizish: 3 qadam
HC-05 orqali Arduino-dan Android-da real vaqtda grafikni chizish: Salom, mana bu erda Arduino kabi mikro-kontrollerdan real vaqtda qiymatlar grafigini tuzish bo'yicha qo'llanma. U HC-05 kabi Bluetooth modulidan foydalanadi, bu ma'lumotlar uzatish va qabul qilish uchun xabar almashish qurilmasi vazifasini bajaradi
Arduino Uno darsligi #1 - Blinkning asosiy dasturi: 4 qadam
Arduino Uno darsligi #1 - Blink dasturining asosiy dasturi: Hammaga salom! Men birinchi ko'rsatmali darsimni nashr etganimdan xursandman! Bu fikr, men Arduino Uno -ni ishga tushirishda qiynalgan paytimda paydo bo'lgan, shuning uchun men qiyinchiliklarga duch kelganimda, atrofimdagi noobiyalarga, men bilmaydigan narsalarni tushuntiraman
LED yorug'lik chizish qalamchalari: Doodle chizish uchun asboblar: 6 qadam (rasmlar bilan)
LED yorug'lik chizish qalamchalari: Doodle chizish uchun asboblar: Xotinim Lori - tinimsiz dudler, men uzoq yillar davomida uzoq vaqt suratga tushganman. PikaPika engil rassomchilik guruhidan va raqamli kameralarning qulayligidan ilhomlanib, biz nima qila olishimizni ko'rish uchun engil chizmachilik san'ati turini oldik