Mundarija:
- 1 -qadam: Arduino Mega 2560
- 2 -qadam: TFT LCD qalqoni 2,4 dyuym
- 3 -qadam: kutubxonalar
- 4 -qadam: funktsiyalar
- 5 -qadam: Misol
- 6 -qadam: kutubxonalar
- 7 -qadam: belgilaydi
- 8 -qadam: sozlash
- 9 -qadam: halqa
- 10 -qadam: Biz aylanaga tegishimizni tekshiring
- 11 -qadam: Geometrik shakllarni yaratish funktsiyalari
- 12 -qadam: To'rtburchakka tegishimizni tekshiring
- 13 -qadam: Biz aylanaga tegmasligimizni tekshiring
- 14 -qadam: Uchburchakka tegishimizni tekshiring
- 15 -qadam: tegilgan ob'ekt nomini chop etish funktsiyasi
- 16 -qadam: fayllar
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-23 15:14
Siz ko'proq moslashtirilgan menyu va yaxshiroq inson/mashina interfeyslarini yaratmoqchimisiz? Bunday loyihalar uchun siz Arduino va sensorli displeydan foydalanishingiz mumkin. Bu fikr o'ziga jalb etadimi? Agar shunday bo'lsa, bugun videoni ko'ring, men sizga Mega Arduino va sensorli ekranli montajni ko'rsataman. Siz xohlagan dizaynni ekranda qanday qilishni, shuningdek, ma'lum bir buyruqni tegizish va faollashtirish uchun ekran maydonini qanday aniqlashni ko'rasiz. Men ta'kidlaymanki, men Arduino Mega -ni pimlari tufayli ishlatishni tanladim.
Shunday qilib, bugun men sizga sensorli ekran, uning grafik funktsiyalari va ekrandagi sensorli nuqtani qanday tutish kerakligi bilan tanishtiraman. Keling, joylashishni aniqlash, yozish, shakllar, ranglar va teginish kabi barcha elementlarni o'z ichiga olgan misol yarataylik.
1 -qadam: Arduino Mega 2560
2 -qadam: TFT LCD qalqoni 2,4 dyuym
Loyihamizda foydalanadigan bu displey qiziqarli xususiyatga ega: u SD -kartaga ega. Biroq, bu bilan bog'liq yozish va o'qish yaqinda men tayyorlaydigan boshqa videoda ko'rsatiladi. Bugungi darsning maqsadi - bu displeyning grafik va sensorli ekran xususiyatlariga alohida e'tibor qaratish.
Xususiyatlari:
Ekran o'lchami: 2,4 dyuym
MicroSD karta uyasi
Rangli LCD displey: 65K
Haydovchi: ILI9325
Ruxsat: 240 x 320
Sensorli ekran: 4 simli rezistiv sensorli ekran
Interfeys: 8 bitli ma'lumotlar, shuningdek 4 ta nazorat chizig'i
Ishlash kuchlanishi: 3.3-5V
Olchamlari: 71 x 52 x 7 mm
3 -qadam: kutubxonalar
Kutubxonalarni qo'shing:
"Adafruit_GFX"
"SWTFT"
"Sensorli ekran"
Havolalarni bosing va kutubxonalarni yuklab oling.
Faylni oching va Arduino IDE kutubxonalari papkasiga joylashtiring.
C: / Dastur fayllari (x86) / Arduino / kutubxonalari
Eslatma
Dasturni boshlashdan oldin, biz muhim bir narsani hal qilishimiz kerak: TOUCH kalibrlash.
Sensorli nuqtalarni olish uchun oddiy dastur yordamida har bir uchida (x, y) nuqta qiymatini saqlang (quyidagi rasmda sariq rang bilan ajratilgan). Bu qiymatlar ekrandagi grafik nuqtalarga tegib turish uchun muhimdir.
#include // Portas de leitura das coordenadas do touchvoid #define YP A1 // Y+ Analog1da #XM A2 ni belgilang // X- Analog2da #define YM 7 // Y- Digital7da #define XP 6 // X+ bu Digital6 -da mavjud // TouchScreen ts = TouchScreen (XP, YP, XM, YM) bilan bir qatorda; void setup () {Serial.begin (9600); } void loop () {TSPoint touchPoint = ts.getPoint (); // pega o touch (x, y, z = pressao) Serial.print ("X:"); Serial.println (touchPoint.x); Serial.print ("Y:"); Serial.println (touchPoint.y); kechikish (1000); }
4 -qadam: funktsiyalar
Keling, kutubxonalar bizga taklif qila oladigan grafik funktsiyalarni ko'rib chiqaylik.
1. DrawPixel
DrawPixel funktsiyasi berilgan nuqtada ekranda bitta nuqtani bo'yash uchun javobgardir.
void drawPixel (int16_t x, int16_t va, uint16_t rangi);
2. drawLine
DrawLine funktsiyasi ikkita nuqtadan chiziq chizish uchun javobgardir.
void drawLine (int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t rangi);
3. drawFastVLine
DrawFastVLine funktsiyasi nuqta va balandlikdan vertikal chiziq chizish uchun javobgardir.
void drawFastVLine (int16_t x, int16_t y, int16_t h, uint16_t rangi);
4. drawFastHLine
DrawFastHLine funktsiyasi nuqta va kenglikdan gorizontal chiziq chizish uchun javobgardir.
void drawFastHLine (int16_t x, int16_t y, int16_t w, uint16_t rangi);
5. DrawRect
DrawRect funktsiyasi ekranda to'rtburchaklar chizish, kelib chiqish nuqtasini, uning balandligi va kengligini o'tkazish uchun javobgardir.
void drawRect (int16_t x, int16_t y, int16_t w, int16_t soat, uint16_t rang);
6. to'ldirish
FillRect funktsiyasi drawRect bilan bir xil, lekin to'rtburchak berilgan rang bilan to'ldiriladi.
void fillRect (int16_t x, int16_t y, int16_t w, int16_t soat, uint16_t rang);
7. drawRoundRect
DrawRoundRect funktsiyasi drawRect bilan bir xil, lekin to'rtburchak qirralari yumaloq bo'ladi.
void drawRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radiusi, uint16_t rangi);
8. to'ldirishRoundRect
FillRoundRect funktsiyasi drawRoundRect bilan bir xil, lekin to'rtburchak berilgan rang bilan to'ldiriladi.
void fillRoundRect (int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radiusi, uint16_t rangi);
9. DrawTriangle
DrawTriangle funktsiyasi 3 tepalik nuqtasini o'tib, ekranda uchburchak chizish uchun javobgardir.
void drawTriangle (int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t rang);
10. to'ldirish uchburchagi
FillTriangle funktsiyasi drawTriangle bilan bir xil, lekin uchburchak berilgan rang bilan to'ldiriladi.
void fillTriangle (int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t rang);
11. DrawCircle
DrawCircle funktsiyasi manba nuqtasi va radiusdan aylana chizish uchun javobgardir.
void drawCircle (int16_t x0, int16_t y0, int16_t r, uint16_t rangi);
12. fillCircle
FillCircle funktsiyasi drawCircle bilan bir xil, lekin aylana berilgan rang bilan to'ldiriladi.
void fillCircle (int16_t x0, int16_t y0, int16_t r, uint16_t rangi);
13. to'ldirish ekrani
FillScreen funktsiyasi ekranni bitta rang bilan to'ldirish uchun javobgardir.
void fillScreen (uint16_t rangi);
14. setCursor
SetCursor funktsiyasi kursorni ma'lum bir nuqtaga yozish uchun joylashtirish uchun javobgardir.
void setCursor (int16_t x, int16_t y);
15. setTextColor
SetTextColor funktsiyasi yoziladigan matnga rang berish uchun javobgardir. Bizda uni ishlatishning ikkita usuli bor:
bo'sh setTextColor (uint16_t c); // faqat yozish rangini belgilaydivoid setTextColor (uint16_t c, uint16_t bg); // yozuv rangini va fon rangini o'rnating
16. setTextSize
SetTextSize funktsiyasi yoziladigan matnga o'lcham berish uchun javobgardir.
bo'sh setTextSize (uint8_t s);
17. setTextWrap
SetTextWrap funktsiyasi, agar u ekran chegarasiga yetsa, chiziqni buzish uchun javobgardir.
void setTextWrap (mantiqiy w);
18. setRotation
SetRotation funktsiyasi ekranni aylantirish uchun javob beradi (landshaft, portret).
void setRotation (uint8_t r); // 0 (standart), 1, 2, 3
5 -qadam: Misol
Biz dastur yaratamiz, unda displey bizga taqdim etadigan resurslarning ko'pini ishlatamiz.
Keling, har xil o'lchamdagi satrlarni yozamiz, uchta geometrik figurani yaratamiz va ularga teginish hodisasini olamiz, har safar biz raqamlardan biriga tegib turganimizda, biz ularning ostidagi raqamlar haqidagi fikrlarga ega bo'lamiz.
6 -qadam: kutubxonalar
Birinchidan, biz foydalanadigan kutubxonalarni aniqlaylik.
#include // javoblar pela parte gráfica
#include // javoblar uchun javob bering
#include // comunicação com o display
#include // comunicação com o display
#"matematika.h" ni qo'shing // hisob -kitob potentsiyasi
7 -qadam: belgilaydi
Biz pinlar uchun ba'zi makrolarni, shuningdek, biz foydalanadigan muhim qiymatlarni aniqlaymiz.
// Portas de leitura das coordenadas do touch #YP A1 ni belgilash // Y+ #XM A2 ni belgilash // X- #YM 7 ni belgilash // Y- #XP ni 6 ni belgilash // X+ // valores encontrados através da calibração do touch // faca um código simples para impimir os valores (x, y) a cada toque // então encontre os valores ax/min (x, y) #define TS_MINX 130 #define TS_MINY 80 #define TS_MAXX 900 #define TS_MAXY 900 // tamanho dos textos #dexine TEXT_SIZE_L 3 #dexine TEXT_SIZE_M 2 #dexine TEXT_SIZE_S 1 // posicionamento dos textos de feedback #define FEEDBACK_LABEL_X 10 #defineFEFFEFEFEFEFEFEFEFFEFFEFFEFFEF 10 #MAXPRESSURE 1000 ni aniqlang
Biz ba'zi makrolarning ta'rifini davom ettiramiz.
// Associa o nome das cores aos valores muxbirlari #QARAni aniqlang 0x0000 #RED 0xF800ni aniqlang Yashil 0x07E0 #define CYAN 0x07FF #define YELLOW 0xFFE0 #define WHITE 0xFFFF // dados de cia di cria const int Circle_x = 240; const int Circle_y = 125; // TouchScreen -ni o'chirib tashlamoqchi bo'lgan voqea -hodisalar - TouchScreen (XP, YP, XM, YM); // SWTFT tft;
8 -qadam: sozlash
O'rnatishda biz grafik boshqaruv ob'ektini ishga tushiramiz va birinchi konfiguratsiyalarni qilamiz.
void setup () {Serial.begin (9600); // qayta o'rnatish taf.reset (); // nazoratni amalga oshirishni nazorat qilish da lib grafica tft.begin (); kechikish (500); // rotaciona va landshaft tft.setRotation (1); // simsiz aloqa tft.fillScreen (Qora); // boshlang'ich sozlamalarni sozlash uchun funktsiyalarni bajarish kerak; }
9 -qadam: halqa
Davrada biz ekranga tegadigan joyni olamiz va teginish rasmlardan birida sodir bo'lganligini ko'ramiz.
void loop () {TSPoint touchPoint = ts.getPoint (); // pega o touch (x, y, z = pressao) pinMode (XM, OUTPUT); pinMode (YP, OUTPUT); // xaritada u (x, y) grafikasi uchun telekanallar mavjud // u TSPoint p xaritasi bo'lmagan X qabul qiluvchining manzili va tasviri. p.x = xarita (touchPoint.y, TS_MINY, TS_MAXY, 0, 320); p.y = xarita (touchPoint.x, TS_MINX, TS_MAXX, 240, 0); // verifica se a pressao no toque foi suficiente if (touchPoint.z> MINPRESSURE && touchPoint.z <MAXPRESSURE) {// verifica se tocou no retangulo if (pointInRect (p)) {writeShape ("Rect"); } // verifica se tocou boshqa hech qanday uchlik bo'lmasa, (pointInsideTriangle (TSPoint (110, 150, 0), TSPoint (150, 100, 0), TSPoint (190, 150, 0), p)) {writeShape ("Uchburchak"); } // verifica se tocou boshqa tsirkulo if if (pointInCircle (p)) {writeShape ("Circle"); }}}
10 -qadam: Biz aylanaga tegishimizni tekshiring
Ushbu bosqichda biz ekranni ishga tushirish bilan shug'ullanamiz va ko'rsatiladigan matnlarning ranglarini aniqlaymiz.
/ *Ma'lumotni o'chirish */ void initialSettings () {tft.setTextColor (WHITE); tft.setTextSize (TEXT_SIZE_S); tft.println ("ACESSE"); tft.setTextColor (SARI); tft.setTextSize (TEXT_SIZE_M); tft.println ("MEU BLOG"); tft.setTextColor (Yashil); tft.setTextSize (TEXT_SIZE_L); tft.println ("FERNANDOK. COM"); createRect (); yaratishTriangle (); yaratishCircle (); tft.setCursor (FEEDBACK_LABEL_X, FEEDBACK_LABEL_Y); tft.setTextColor (CYAN); tft.setTextSize (TEXT_SIZE_L); tft.println ("ShAKL:"); }
11 -qadam: Geometrik shakllarni yaratish funktsiyalari
Biz to'rtburchaklar, uchburchak va aylanani yaratamiz, biz kelib chiqishi aniqlaymiz.
// cria um retangulo com origem (x, y) = (10, 100) // kenglik = 80 e balandlik = 50 void createRect () {tft.fillRect (10, 100, 80, 50, RED); tft.drawRect (10, 100, 80, 50, oq); } // cria um triangulo com os vertices: // A = (110, 150); B = (150, 100); C = (190, 150) void createTriangle () {tft.fillTriangle (110, 150, 150, 100, 190, 150, SARI); tft.drawTriangle (110, 150, 150, 100, 190, 150, oq); } // cria um circulo com origem no ponto (x, y) = (240, 125) e raio = 30 void createCircle () {tft.fillCircle (240, 125, 30, GREEN); tft.drawCircle (240, 125, 30, oq); }
12 -qadam: To'rtburchakka tegishimizni tekshiring
Bu funktsiya nuqta to'rtburchak ichida ekanligini tekshiradi.
// Funngão que verifica se or ponto está dentro do retángulobool pointInRect (TSPoint p) {// max/min X do retangulo if (px> = 10 && px <= 90) {// max/min Y do retangulo if (py) = 100) {qaytarish rost; }} false qaytarish; }
13 -qadam: Biz aylanaga tegmasligimizni tekshiring
Bu aylana bilan bir xil.
// distancia entre pontos D = raiz ((xb-xa)^2 + (yb-ya)^2) // vefifica se o ponto está dentro do circulo // se a distancia do ponto pra origem do circulo for menor ou igual aO raio, ele está dentro bool pointInCircle (TSPoint p) {float masofa = sqrt (pow (px - aylana_x, 2) + kuch (py - aylana_y, 2)); if (masofa <= aylana_radius) {qaytish rost; } false qaytarish; }
14 -qadam: Uchburchakka tegishimizni tekshiring
Xuddi shu nuqta tekshiruvi uchburchak ichida ham sodir bo'ladi.
// ABC triangulo trunangulo funktsiyalarini bajaring // HAQIQAT HAQIQATI YANGI bool pointInsideTriangle (TSPoint a, TSPoint b, TSPoint c, TSPoint p) {float ABC = uchburchaklar maydoni (a, b, c)); float ACP = triangleArea (a, c, p); float ABP = triangleArea (a, b, p); float CPB = triangleArea (c, p, b); if (ABC == ACP+ABP+CPB) {true ga qaytish; } false qaytarish; } // Funchão que calcula a area de um triangulo com pontos x, y float triangleArea (TSPoint a, TSPoint b, TSPoint c) {fabs (((bx - ax)*(cy - ay) - (cx - bolta) * (by - ay))/2); }
15 -qadam: tegilgan ob'ekt nomini chop etish funktsiyasi
Bu erda biz ishlatilgan geometrik figuraning nomini ekranga yozamiz.
// yozishShape (String shakli) {tft.fillRect (FEEDBACK_TOUCH_X, FEEDBACK_TOUCH_Y, 170, 30, QORA); tft.setCursor (FEEDBACK_TOUCH_X, FEEDBACK_TOUCH_Y); tft.setTextSize (TEXT_SIZE_G); tft.setTextColor (oq); tft.println (shakli); }
16 -qadam: fayllar
Fayllarni yuklab oling:
INO
Tavsiya:
Sensorli ekranli Macintosh - IPad Mini ekranli klassik Mac: 5 qadam (rasmlar bilan)
Sensorli ekranli Macintosh | Klassik Mac ekran uchun iPad mini bilan: Bu mening yangilangan va qayta ishlangan dizaynim bo'lib, vintli Macintosh ekranini iPad mini bilan qanday almashtirish mumkin. Bu yillar davomida men qilgan oltinchisi va men uning evolyutsiyasi va dizaynidan juda mamnunman! 2013 yilda men yaratganimda
Arduino sensorli ekranli kalkulyator: 7 qadam
Arduino sensorli ekranli kalkulyator: Salom! Bu Arduino Uno va TFT LCD qalqoni yordamida sensorli ekranli kalkulyator yaratish loyihasi. Men o'z uyimdagi dasturlash sinfining kontseptsiyasini ishlab chiqdim va bu loyihani yaratish tajribasi juda qiziq bo'ldi. Bu kalkulyator
Arduino TFT LCD sensorli ekranli kalkulyator: 3 qadam
Arduino TFT LCD sensorli ekranli kalkulyator: Salom bolalar, bu ko'rsatmalarda biz Arduino Uno yordamida 3.5 & quot bilan kalkulyator yasashni o'rganamiz. TFT LCD sensorli displeyi, shuning uchun biz kod yozamiz va uni arduino -ga yuklaymiz, u kalkulyator interfeysini displeyda aks ettiradi va
Sensorli uchta sensorli davr + Sensorli taymer davri: 4 qadam
Sensorli uchta sensorli davr + Sensorli taymer davri: Sensorli sensor - bu pimlarga teginish aniqlanganda yoqiladigan elektron. Bu vaqtinchalik ishlaydi, ya'ni yuk faqat pimlarga tegib turganda yoqiladi, bu erda men sizga teginishning uch xil usulini ko'rsataman
Arduino TFT sensorli ekranli eshik qulfi: 5 qadam
Arduino TFT sensorli ekranli eshik qulfi: bu mening birinchi ko'rsatma. Bu loyiha Arduino va 2.8 dan foydalanadi " TFT sensorli ekrani parolli eskiz bilan, eshik qulfining eshiklarini o'chirib qo'yadigan röleyni ishga tushirish uchun. Orqa fonda, ish joyidagi eshikdagi RFID qulfi, simni qayta ulashdan ko'ra, sindirilgan