สารบัญ:
- ขั้นตอนที่ 1: ข้อกำหนดด้านฮาร์ดแวร์และซอฟต์แวร์
- ขั้นตอนที่ 2: ปรับแต่ง UTFT Lib
- ขั้นตอนที่ 3: การเริ่มต้น TFT Shield
- ขั้นตอนที่ 4: สวัสดีชาวโลกขั้นพื้นฐาน
- ขั้นตอนที่ 5: แบบอักษร UTFT
- ขั้นตอนที่ 6: รูปร่าง เส้นและรูปแบบ UTFT
- ขั้นตอนที่ 7: UTFT Bitmap
- ขั้นตอนที่ 8: ปุ่มเชื่อมต่อ
- ขั้นตอนที่ 9: เครื่องปัดนก
- ขั้นตอนที่ 10: การทำงานของโครงการ
วีดีโอ: ข้อมูลพื้นฐานเกี่ยวกับการเชื่อมต่อ Arduino TFT: 10 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:05
หน้าจอสัมผัส TFT เป็นอินเทอร์เฟซกราฟิกที่น่าทึ่งซึ่งสามารถใช้ได้กับไมโครคอนโทรลเลอร์ เช่น Atmel, PIC, STM เนื่องจากมีช่วงสีที่กว้าง และความสามารถด้านกราฟิกที่ดีและการจับคู่พิกเซลที่ดี
วันนี้เราจะมาต่อประสานอินเทอร์เฟซ 2.4 นิ้ว TFT LCD Shield กับ Arduino
ชิลด์นี้มีไว้สำหรับ Arduino UNO แต่ฉันจะสอนวิธีใช้งานกับ Arduino Mega ด้วยเหตุผลที่สมเหตุสมผล นั่นคือ "Program Memory"
ด้วยการใช้แผงป้องกัน TFT LCD สีนี้ เราสามารถแสดงอักขระ สตริง ปุ่มเชื่อมต่อ รูปภาพบิตแมป ฯลฯ บน TFT LCD สีได้
ขั้นตอนที่ 1: ข้อกำหนดด้านฮาร์ดแวร์และซอฟต์แวร์
ในการสร้างส่วนต่อประสานโล่กับ Arduino mega เราจำเป็นต้องมีสิ่งต่อไปนี้
ฮาร์ดแวร์:
• Arduino mega
• LCD TFT 2.4/2.8/3.2 นิ้ว
• สาย USB
ซอฟต์แวร์
• Arduino IDE
• ห้องสมุด UTFT / spfd5408 ห้องสมุด
เดิม Shield ถูกสร้างขึ้นสำหรับบอร์ด Arduino UNO ซึ่งสามารถใช้กับ Arduino mega ได้
มีปัญหาหลักสองประการขณะใช้งานกับ Arduino UNO: "หน่วยความจำที่เก็บข้อมูล" และการใช้งานพิน
เป็นเรื่องยากที่จะใช้พินที่ไม่ได้ใช้งานซึ่งมีอยู่ใน UNO ในขณะที่ Arduino MEGA จะดีกว่าเพราะเรามีพิน I/O เหลืออยู่มากกว่า
ในขั้นตอนต่อไป ฉันจะแสดงวิธีแก้ไขไลบรารี UTFT เพื่อใช้ TFT shield
ขั้นตอนที่ 2: ปรับแต่ง UTFT Lib
ไลบรารีนี้เป็นความต่อเนื่องของไลบรารี ITDB02_Graph, ITDB02_Graph16 และ RGB_GLCD ของฉันสำหรับ Arduino และ chipKit เมื่อจำนวนโมดูลการแสดงผลและตัวควบคุมที่รองรับเริ่มเพิ่มขึ้น ฉันรู้สึกว่าถึงเวลาแล้วที่จะสร้างไลบรารีสากลเดียวที่เป็นสากล เนื่องจากจะง่ายต่อการบำรุงรักษาในอนาคต
Arduino MEGA มีหน่วยความจำโปรแกรม 256kb นอกจากนี้ยังมี 54 พิน
ส่วนใหญ่ใช้งานได้ฟรีและอะนาล็อกเพียง 5 นำมาจาก 16
ไลบรารีนี้รองรับการแสดงผลกราฟิกแบบ 8 บิต 16 บิต และอนุกรม และจะทำงานร่วมกับทั้งบอร์ด Arduino, chipKit และ TI LaunchPad บางรุ่น
หมายเหตุ: เนื่องจากขนาดของไลบรารี ฉันไม่แนะนำให้ใช้กับ ATmega328 (Arduino Uno) และ ATmega32U4 (Arduino Leonardo) เนื่องจากมีหน่วยความจำแฟลชเพียง 32KB มันจะใช้งานได้ แต่คุณจะจำกัดหน่วยความจำแฟลชที่พร้อมใช้งานสำหรับแอปพลิเคชันของคุณอย่างรุนแรง
ขั้นตอน
- ดาวน์โหลด UTFT Library
- เปิดเครื่องรูดห้องสมุด
- เปิด UTFT\hardware\avr ในกรณีของ Arduino หรือขึ้นอยู่กับไมโครคอนโทรลเลอร์ที่ใช้
- เปิด HW_AVR_defines โดยใช้ Notepad
- Uncomment Line 7 เพื่อเปิดใช้งาน UNO shield สำหรับ MEGA
- บันทึกไฟล์และเพิ่มไลบรารีนี้ไปยัง Arduino IDE
ตอนนี้เราทำขั้นตอนนี้เสร็จแล้ว! ในขั้นตอนต่อไป ฉันจะแสดงการใช้ไลบรารีและกำหนดพินสำหรับ Arduino Mega
ขั้นตอนที่ 3: การเริ่มต้น TFT Shield
หลังจากแก้ไขไลบรารีแล้ว ให้เพิ่มลงในไดเร็กทอรี Arduino
ต่อไป ฉันจะแสดงวิธีกำหนดโมดูล TFT ที่ถูกต้องที่คุณมี
เราควรหาชื่อโมดูลในไลบรารี
- เปิดไฟล์ห้องสมุด
- ไปที่เอกสาร
คุณสามารถดูไฟล์เหล่านี้ได้ในเอกสารประกอบ
• UTFT:
ไฟล์นี้แสดงฟังก์ชันและคำสั่งทั้งหมดที่รวมอยู่ในไลบรารีนี้
• UTFT_Requirement
ไฟล์นี้มีข้อมูลเกี่ยวกับโมดูลและความเกี่ยวข้องกับไลบรารี เช่น การกำหนดค่าพิน
•UTFT_Supported_display_modules_&_controller
นี่คือเป้าหมายของเรา ไฟล์นี้มีชื่อของโมดูลและโล่ที่ไลบรารีนี้รองรับ คุณสามารถดูรายชื่อโมดูลและชื่อโมดูลสำหรับ UTFT ที่คุณควรใช้เพื่อกำหนดโมดูลของคุณ
ขั้นตอนในการกำหนด TFT:
เปิดไฟล์ UTFT_Supported_display_modules_&_controller จากไลบรารี
- เปิดไฟล์ UTFT_Supported_display_modules_&_controller จากไลบรารี
- ค้นหารุ่นสำหรับ UTFT สำหรับโมดูล (โล่) ที่คุณมี
- ตอนนี้เพื่อกำหนดฟังก์ชัน UTFT บน Arduino IDE เราใช้คำสั่ง:
ชื่อ UTFT (โมดูล, Rs, Wr, Cs, Rst);
เปิดไฟล์ UTFT_Requirement จากไลบรารี
จากเอกสาร เรารู้ว่าหมุดอยู่บนหมุด A5, A4, A3 และ A2
เราใช้คำสั่ง:
UTFT myGLCD (ITDB28, 19, 18, 17, 16); # โปรดทราบว่าหมุด 19, 18, 17, 16 ใน Arduino Mega
UTFT myGLCD (ITDB28, A5, A4, A3, A2); # โปรดทราบว่าหมุด A5, A4, A3, A2 ใน Arduino UNO
และเสร็จแล้ว! ตอนนี้คุณสามารถใช้ตัวอย่างไลบรารีบน Arduino IDE โดยมีการเปลี่ยนแปลงดังต่อไปนี้
ขั้นตอนที่ 4: สวัสดีชาวโลกขั้นพื้นฐาน
#include // ประกาศฟอนต์ที่เราจะใช้
ภายนอก uint8_t BigFont; extern uint8_t SevenSegNumFont; // อย่าลืมเปลี่ยนพารามิเตอร์ model เพื่อให้เหมาะกับโมดูลการแสดงผลของคุณ! UTFT myGLCD (ITDB28, A5, A4, A3, A2); การตั้งค่าเป็นโมฆะ () { myGLCD. InitLCD (); myGLCD.clrScr(); myGLCD.setFont(BigFont); } วงเป็นโมฆะ () { myGLCD.setColor (0, 255, 0); //green myGLCD.print("HELLO WORLD", 45, 100); ในขณะที่ (จริง) {}; }
ขั้นตอนที่ 5: แบบอักษร UTFT
#include // ประกาศฟอนต์ที่เราจะใช้
extern uint8_t SmallFont; ภายนอก uint8_t BigFont; extern uint8_t SevenSegNumFont; // ตั้งหมุดให้ถูกต้องสำหรับโล่การพัฒนาของคุณ // ----------------------------------- ------------------------- // Arduino Uno / 2009: // ---------------- --- // ชิลด์ Arduino Uno/2009 มาตรฐาน:, A5, A4, A3, A2 // DisplayModule Arduino Uno TFT shield:, A5, A4, A3, A2 // // Arduino Mega: // ----- -------------- // Standard Arduino Mega/Due shield:, 38, 39, 40, 41 // CTE TFT LCD/SD Shield สำหรับ Arduino Mega:, 38, 39, 40, 41 // // อย่าลืมเปลี่ยนพารามิเตอร์ model เพื่อให้เหมาะกับโมดูลการแสดงผลของคุณ! UTFT myGLCD (ITDB32S, 38, 39, 40, 41); การตั้งค่าเป็นโมฆะ () { myGLCD. InitLCD () myGLCD.clrScr (); } วงเป็นโมฆะ () { myGLCD.setColor (0, 255, 0); myGLCD.setBackColor(0, 0, 0); myGLCD.setFont(BigFont); myGLCD.print(" !\"#$%&'()*+, -./", CENTER, 0); myGLCD.print("0123456789:;?", CENTER, 16); myGLCD.print("@ ABCDEFGHIJKLMNO", CENTER, 32); myGLCD.print("PQRSTUVWXYZ^_", CENTER, 48); myGLCD.print("`abcdefghijklmno", CENTER, 64); myGLCD.print("pqrstuvwxyz{|} ~ ", CENTER, 80); myGLCD.setFont(SmallFont); myGLCD.print(" !\"#$%&'()*+, -./0123456789:;?", CENTER, 120); myGLCD.print("@ABCDEFGHIJKLMNOPQRSTUVWXYZ^_", CENTER, 132); myGLCD.print("`abcdefghijklmnopqrstuvwxyz{|}~ ", CENTER, 144); myGLCD.setFont (SevenSegNumFont); myGLCD.print("0123456789", CENTER, 190); ในขณะที่(1) {}; }
ขั้นตอนที่ 6: รูปร่าง เส้นและรูปแบบ UTFT
#include "UTFT.h"// ประกาศว่าเราจะใช้ฟอนต์ใด uint8_t SmallFont;// ตั้งค่าพินให้ถูกต้องสำหรับโล่การพัฒนาของคุณ // -------------- ---------------------------------------------- // Arduino Uno / 2009: // ------------------- // Standard Arduino Uno/2009 ชิลด์:, A5, A4, A3, A2 // DisplayModule Arduino Uno TFT shield:, A5, A4, A3, A2 // // Arduino Mega: // ------------------- // Standard Arduino Mega/Due shield:, 38, 39, 40, 41 // CTE TFT LCD/SD Shield สำหรับ Arduino Mega:, 38, 39, 40, 41 // // อย่าลืมเปลี่ยนพารามิเตอร์โมเดลให้เหมาะกับโมดูลการแสดงผลของคุณ! UTFT myGLCD (ITDB32S, 38, 39, 40, 41); ตั้งค่าเป็นโมฆะ () { randomSeed (analogRead (0)); // ตั้งค่า LCD myGLCD. InitLCD(); myGLCD.setFont(SmallFont); }
วงเป็นโมฆะ ()
{ int บัฟ[318]; int x, x2; ภายใน y, y2; int r;// ล้างหน้าจอและวาดเฟรม myGLCD.clrScr(); myGLCD.setColor(255, 0, 0); myGLCD.fillRect(0, 0, 319, 13); myGLCD.setColor (64, 64, 64); myGLCD.fillRect(0, 226, 319, 239); myGLCD.setColor(255, 255, 255); myGLCD.setBackColor(255, 0, 0); myGLCD.print("* Universal Color TFT Display Library *", CENTER, 1); myGLCD.setBackColor (64, 64, 64); myGLCD.setColor(255, 255, 0); myGLCD.print("", CENTER, 227); myGLCD.setColor(0, 0, 255); myGLCD.drawRect(0, 14, 319, 225); // วาดเส้นเล็ง myGLCD.setColor(0, 0, 255); myGLCD.setBackColor(0, 0, 0); myGLCD.drawLine(159, 15, 159, 224); myGLCD.drawLine(1, 119, 318, 119); สำหรับ (int i=9; i<310; i+=10) myGLCD.drawLine(i, 117, i, 121); สำหรับ (int i=19; i<220; i+=10) myGLCD.drawLine(157, i, 161, i);// Draw sin-, cos- และ tan-lines myGLCD.setColor(0, 255, 255); myGLCD.print("บาป", 5, 15); สำหรับ (int i=1; i<318; i++) { myGLCD.drawPixel(i, 119+(sin(((i*1.13)*3.14)/180)*95)); } myGLCD.setColor(255, 0, 0); myGLCD.print("คอส", 5, 27); สำหรับ (int i=1; i<318; i++) { myGLCD.drawPixel(i, 119+(cos(((i*1.13)*3.14)/180)*95)); } myGLCD.setColor(255, 255, 0); myGLCD.print("ตาล", 5, 39); สำหรับ (int i=1; i<318; i++) { myGLCD.drawPixel(i, 119+(tan(((i*1.13)*3.14)/180))); } ล่าช้า (2000); myGLCD.setColor(0, 0, 0); myGLCD.fillRect (1, 15, 318, 224); myGLCD.setColor(0, 0, 255); myGLCD.setBackColor(0, 0, 0); myGLCD.drawLine(159, 15, 159, 224); myGLCD.drawLine(1, 119, 318, 119); // วาดคลื่นไซน์ที่กำลังเคลื่อนที่ x=1; สำหรับ (int i=1; i319) { if ((x==159)||(buf[x-1]==119)) myGLCD.setColor(0, 0, 255); อื่น myGLCD.setColor(0, 0, 0); myGLCD.drawPixel(x, buf[x-1]); } myGLCD.setColor(0, 255, 255); y=119+(บาป(((i*1.1)*3.14)/180)*(90-(i / 100))); myGLCD.drawPixel(x, y); บัฟ[x-1]=y; } ล่าช้า (2000); myGLCD.setColor(0, 0, 0); myGLCD.fillRect (1, 15, 318, 224); // วาดสี่เหลี่ยมที่เต็มไปด้วย (int i = 1; i <6; i ++) { สวิตช์ (i) { กรณีที่ 1: myGLCD.setColor (255, 0, 255); หยุดพัก; กรณีที่ 2: myGLCD.setColor(255, 0, 0); หยุดพัก; กรณีที่ 3: myGLCD.setColor(0, 255, 0); หยุดพัก; กรณีที่ 4: myGLCD.setColor(0, 0, 255); หยุดพัก; กรณีที่ 5: myGLCD.setColor(255, 255, 0); หยุดพัก; } myGLCD.fillRect(70+(i*20), 30+(i*20), 130+(i*20), 90+(i*20)); } ล่าช้า (2000); myGLCD.setColor(0, 0, 0); myGLCD.fillRect (1, 15, 318, 224); // วาดรูปสี่เหลี่ยมมุมมนที่เต็มแล้วสำหรับ (int i=1; i<6; i++) { สวิตช์ (i) { กรณีที่ 1: myGLCD.setColor (255, 0, 255); หยุดพัก; กรณีที่ 2: myGLCD.setColor(255, 0, 0); หยุดพัก; กรณีที่ 3: myGLCD.setColor(0, 255, 0); หยุดพัก; กรณีที่ 4: myGLCD.setColor(0, 0, 255); หยุดพัก; กรณีที่ 5: myGLCD.setColor(255, 255, 0); หยุดพัก; } myGLCD.fillRoundRect(190-(i*20), 30+(i*20), 250-(i*20), 90+(i*20)); } ล่าช้า (2000); myGLCD.setColor(0, 0, 0); myGLCD.fillRect (1, 15, 318, 224); // วาดวงกลมที่เติมไว้สำหรับ (int i = 1; i <6; i ++) { สวิตช์ (i) { กรณีที่ 1: myGLCD.setColor (255, 0, 255); หยุดพัก; กรณีที่ 2: myGLCD.setColor(255, 0, 0); หยุดพัก; กรณีที่ 3: myGLCD.setColor(0, 255, 0); หยุดพัก; กรณีที่ 4: myGLCD.setColor(0, 0, 255); หยุดพัก; กรณีที่ 5: myGLCD.setColor(255, 255, 0); หยุดพัก; } myGLCD.fillCircle(100+(i*20), 60+(i*20), 30); } ล่าช้า (2000); myGLCD.setColor(0, 0, 0); myGLCD.fillRect(1, 15, 318, 224); // วาดเส้นบางเส้นในรูปแบบ myGLCD.setColor (255, 0, 0); สำหรับ (int i=15; i<224; i+=5) { myGLCD.drawLine(1, i, (i*1.44)-10, 224); } myGLCD.setColor (255, 0, 0); สำหรับ (int i=224; i>15; i-=5) { myGLCD.drawLine(318, i, (i*1.44)-11, 15); } myGLCD.setColor (0, 255, 255); สำหรับ (int i=224; i>15; i-=5) { myGLCD.drawLine(1, i, 331-(i*1.44), 15); } myGLCD.setColor (0, 255, 255); สำหรับ (int i=15; i<224; i+=5) { myGLCD.drawLine(318, i, 330-(i*1.44), 224); } ล่าช้า (2000); myGLCD.setColor(0, 0, 0); myGLCD.fillRect (1, 15, 318, 224); // วาดวงกลมสุ่มสำหรับ (int i=0; i<100; i++) { myGLCD.setColor(random(255), random(255), random(255))); x=32+สุ่ม(256); y=45+สุ่ม(146); r=สุ่ม(30); myGLCD.drawCircle(x, y, r); } ล่าช้า (2000); myGLCD.setColor(0, 0, 0); myGLCD.fillRect (1, 15, 318, 224); // วาดรูปสี่เหลี่ยมสุ่มสำหรับ (int i=0; i<100; i++) { myGLCD.setColor(random(255), random(255), random(255))); x=2+สุ่ม(316); y=16+สุ่ม(207); x2=2+สุ่ม(316); y2=16+สุ่ม(207); myGLCD.drawRect(x, y, x2, y2); } ล่าช้า (2000); myGLCD.setColor(0, 0, 0); myGLCD.fillRect (1, 15, 318, 224); // วาดรูปสี่เหลี่ยมมุมมนแบบสุ่มสำหรับ (int i=0; i<100; i++) { myGLCD.setColor(random(255), random(255), random(255)); x=2+สุ่ม(316); y=16+สุ่ม(207); x2=2+สุ่ม(316); y2=16+สุ่ม(207); myGLCD.drawRoundRect(x, y, x2, y2); } ล่าช้า (2000); myGLCD.setColor(0, 0, 0); myGLCD.fillRect (1, 15, 318, 224); สำหรับ (int i=0; i<100; i++) { myGLCD.setColor(random(255), random(255), random(255)); x=2+สุ่ม(316); y=16+สุ่ม(209); x2=2+สุ่ม(316); y2=16+สุ่ม(209); myGLCD.drawLine(x, y, x2, y2); } ล่าช้า (2000); myGLCD.setColor(0, 0, 0); myGLCD.fillRect (1, 15, 318, 224); สำหรับ (int i = 0; i <10000; i ++) { myGLCD.setColor (สุ่ม (255), สุ่ม (255), สุ่ม (255)); myGLCD.drawPixel(2+สุ่ม(316), 16+สุ่ม(209)); } ล่าช้า (2000); myGLCD.fillScr(0, 0, 255); myGLCD.setColor(255, 0, 0); myGLCD.fillRoundRect (80, 70, 239, 169); myGLCD.setColor(255, 255, 255); myGLCD.setBackColor(255, 0, 0); myGLCD.print("แค่นั้น!", CENTER, 93); myGLCD.print("กำลังเริ่มต้นใหม่", CENTER, 119); myGLCD.print("ไม่กี่วินาที…", CENTER, 132); myGLCD.setColor(0, 255, 0); myGLCD.setBackColor(0, 0, 255); myGLCD.print("รันไทม์: (msecs)", CENTER, 210); myGLCD.printNumI(มิลลิวินาที(), CENTER, 225); ล่าช้า (10000); }
ขั้นตอนที่ 7: UTFT Bitmap
#รวม
#include // ประกาศว่าฟอนต์ใดที่เราจะใช้ extern uint8_t SmallFont;// ตั้งค่าพินเป็นพินที่ถูกต้องสำหรับโล่การพัฒนาของคุณ // ------------------ ------------------------------------ // Arduino Uno / 2009: / / -------------------- // Standard Arduino Uno/2009 ชิลด์:, A5, A4, A3, A2 // DisplayModule Arduino Uno TFT shield:, A5, A4, A3, A2 // // Arduino Mega: // ------------------- // Standard Arduino Mega/Due shield:, 38, 39, 40, 41 // CTE TFT LCD/SD Shield สำหรับ Arduino Mega:, 38, 39, 40, 41 // // อย่าลืมเปลี่ยนพารามิเตอร์โมเดลให้เหมาะกับโมดูลการแสดงผลของคุณ! UTFT myGLCD(ITDB32S, A5, A4, A3, A2);ข้อมูล int ที่ไม่ได้ลงชื่อภายนอก[0x400]; ไอคอน int ที่ไม่ได้ลงชื่อภายนอก[0x400]; int tux ที่ไม่ได้ลงชื่อภายนอก[0x400];void setup() { myGLCD. InitLCD(); myGLCD.setFont(SmallFont); } วงเป็นโมฆะ () { myGLCD.fillScr (255, 255, 255); myGLCD.setColor(255, 255, 255); myGLCD.print(" *** 10 x 7 ตารางของไอคอน 32x32 *** ", CENTER, 228); สำหรับ (int x=0; x<10; x++) สำหรับ (int y=0; y<7; y++) myGLCD.drawBitmap (x*32, y*32, 32, 32, ข้อมูล); ล่าช้า (5000); myGLCD.fillScr (255, 255, 255); myGLCD.setColor(255, 255, 255); myGLCD.print(" สองไอคอนที่แตกต่างกันในระดับ 1 ถึง 4 ", CENTER, 228); int x=0; สำหรับ (int s=0; s0; s--) { myGLCD.drawBitmap (x, 224-(s*32), 32, 32, ไอคอน, s); x+=(s*32); } ล่าช้า (5000); }
ขั้นตอนที่ 8: ปุ่มเชื่อมต่อ
#include #include // Initialize display// ------------------ // ตั้งค่าพินให้ถูกต้องสำหรับบอร์ดพัฒนาของคุณ // ------- -------------------------------------------------- -- // Standard Arduino Uno/2009 Shield:, 19, 18, 17, 16 // Standard Arduino Mega/Due shield:, 38, 39, 40, 41 // CTE TFT LCD/SD Shield สำหรับ Arduino Due:, 25, 26, 27, 28 // Teensy 3.x TFT Test Board:, 23, 22, 3, 4 // ElecHouse TFT LCD/SD Shield for Arduino Due:, 22, 23, 31, 33 // // อย่าลืม เปลี่ยนพารามิเตอร์ model เพื่อให้เหมาะกับโมดูลการแสดงผลของคุณ! UTFT myGLCD(ITDB32S, 38, 39, 40, 41); // เริ่มต้นหน้าจอสัมผัส // ---------------------- // ตั้งค่าพินให้ถูกต้อง สำหรับบอร์ดพัฒนาของคุณ // -------------------------------------------------- ---------------- // Standard Arduino Uno/2009 Shield: 15, 10, 14, 9, 8 // Standard Arduino Mega/Due shield: 6, 5, 4, 3, 2 // CTE TFT LCD/SD Shield สำหรับ Arduino Due: 6, 5, 4, 3, 2 // Teensy 3.x TFT Test Board: 26, 31, 27, 28, 29 // ElecHouse TFT LCD/SD Shield สำหรับ Arduino Due: 25, 26, 27, 29, 30 // URTouch myTouch(6, 5, 4, 3, 2); // ประกาศว่าฟอนต์ใดที่เราจะใช้ extern uint8_t BigFont;int x, y; ถ่าน stCurrent[20]=""; int stCurrentLen=0; char stLast[20]="";/************************* ** ฟังก์ชั่นที่กำหนดเอง ** ********* ****************/void drawButtons() {// วาดแถวบนของปุ่มสำหรับ (x=0; x<5; x++) { myGLCD.setColor(0, 0, 255); myGLCD.fillRoundRect (10+(x*60), 10, 60+(x*60), 60); myGLCD.setColor(255, 255, 255); myGLCD.drawRoundRect (10+(x*60), 10, 60+(x*60), 60); myGLCD.printNumI(x+1, 27+(x*60), 27); } // วาดแถวกลางของปุ่มสำหรับ (x=0; x<5; x++) { myGLCD.setColor(0, 0, 255); myGLCD.fillRoundRect (10+(x*60), 70, 60+(x*60), 120); myGLCD.setColor(255, 255, 255); myGLCD.drawRoundRect (10+(x*60), 70, 60+(x*60), 120); ถ้า (x<4) myGLCD.printNumI(x+6, 27+(x*60), 87); } myGLCD.print("0", 267, 87); // วาดแถวล่างของปุ่ม myGLCD.setColor(0, 0, 255); myGLCD.fillRoundRect (10, 130, 150, 180); myGLCD.setColor(255, 255, 255); myGLCD.drawRoundRect (10, 130, 150, 180); myGLCD.print("เคลียร์", 40, 147); myGLCD.setColor(0, 0, 255); myGLCD.fillRoundRect (160, 130, 300, 180); myGLCD.setColor(255, 255, 255); myGLCD.drawRoundRect (160, 130, 300, 180); myGLCD.print("Enter", 190, 147); myGLCD.setBackColor (0, 0, 0); }เป็นโมฆะ updateStr(int val) { if (stCurrentLen=10) && (y=10) && (x=70) && (x=130) && (x=190) && (x=250) && (x=70) && (y=10) && (x=70) && (x=130) && (x=190) && (x=250) && (x=130) && (y=10) && (x=160) && (x0) { สำหรับ (x=0; x
ขั้นตอนที่ 9: เครื่องปัดนก
#include #include #include //==== การสร้างวัตถุ UTFT myGLCD (SSD1289, 38, 39, 40, 41); //ควรปรับพารามิเตอร์ให้เข้ากับรุ่น Display/Schield UTouch myTouch(6, 5, 4, 3, 2); //==== การกำหนดแบบอักษรภายนอก uint8_t SmallFont; ภายนอก uint8_t BigFont; extern uint8_t SevenSegNumFont;ภายนอก int bird01[0x41A]; // นกบิตแมปต์ x, y; // ตัวแปรสำหรับพิกัดที่กดจอแสดงผล// Floppy Bird int xP = 319; int yP = 100; int yB = 50; int movingRate = 3; int fallRateInt = 0; ลอย fallRate = 0; คะแนน int = 0; int lastSpeedUpScore = 0; int คะแนนสูงสุด; บูลีน screenPressed = false; บูลีน gameStarted = false; void setup () { // เริ่มต้นการแสดง myGLCD. InitLCD (); myGLCD.clrScr(); myTouch. InitTouch(); myTouch.setPrecision(PREC_MEDIUM); คะแนนสูงสุด = EEPROM.read(0); // อ่านคะแนนสูงสุดจาก EEPROM beginGame(); // เริ่มเกม }void loop() { xP=xP-movingRate; // xP - x พิกัดของเสา; ช่วง: 319 - (-51) drawPilars(xP, yP); // ดึงเสา // yB - y พิกัดของนกซึ่งขึ้นอยู่กับค่าของตัวแปร FallRate yB+=fallRateInt; fallRate=ตกอัตรา+0.4; // inetration แต่ละครั้งอัตราการล้มจะเพิ่มขึ้นเพื่อให้เราสามารถผลของการเร่งความเร็ว/ แรงโน้มถ่วง fallRateInt= int(fallRate); // ตรวจสอบการชนกัน if(yB>=180 || yB<=0){ // top and bottom gameOver(); } if((xP=5) && (yB<=yP-2))){ // เสาบน gameOver(); } if((xP=5) && (yB>=yP+60)){ // เสาล่าง gameOver(); } // วาดนก drawBird(yB); // หลังจากที่เสาผ่านหน้าจอไปแล้ว ถ้า (xPRESET=250) && (x=0) && (y=0) && (x=30) && (y=270){ myGLCD.setColor(0, 200, 20); myGLCD.fillRect(318, 0, x, y-1); myGLCD.setColor(0, 0, 0); myGLCD.drawRect(319, 0, x-1, y); myGLCD.setColor(0, 200, 20); myGLCD.fillRect(318, y+81, x, 203); myGLCD.setColor(0, 0, 0); myGLCD.drawRect(319, y+80, x-1, 204); } อื่น ๆ ถ้า (x คะแนนสูงสุด) { คะแนนสูงสุด = คะแนน; EEPROM.write(0,คะแนนสูงสุด); } // รีเซ็ตตัวแปรเพื่อเริ่มต้นค่าตำแหน่ง xP=319; yB=50; อัตราการตก = 0; คะแนน = 0; LastSpeedUpScore = 0; อัตราการเคลื่อนที่ = 3; gameStarted = เท็จ; // เริ่มเกมใหม่เริ่มต้นเกม (); }
ขั้นตอนที่ 10: การทำงานของโครงการ
คุณสามารถค้นหาซอร์สโค้ดได้ในที่เก็บ Github ของฉัน
ลิงค์:
ยกนิ้วให้ถ้ามันช่วยคุณได้จริงๆ และติดตามช่องของฉันสำหรับโครงการที่น่าสนใจ:)
แชร์วิดีโอนี้หากคุณต้องการ
ยินดีที่ได้ติดตาม:
ขอบคุณที่อ่าน!
แนะนำ:
Arduino TFT Graphics Shield: 4 ขั้นตอน (พร้อมรูปภาพ)
Arduino TFT Graphics Shield: a.articles {ขนาดตัวอักษร: 110.0%; font-weight: ตัวหนา; ตัวอักษรสไตล์: ตัวเอียง; ตกแต่งข้อความ: ไม่มี; background-color: red;} a.articles:hover {background-color: black;} คำแนะนำนี้จะอธิบายวิธีสร้างกราฟิกสีขนาด 240 x 320 พิกเซล (QVGA)
BluBerriSix - บทช่วยสอน TFT TouchScreen / Arduino: 12 ขั้นตอน (พร้อมรูปภาพ)
BluBerriSix - บทช่วยสอน TFT TouchScreen / Arduino: 2019 เป็นวันครบรอบ 20 ปีของ RIM Blackberry 850! สิ่งประดิษฐ์เล็กๆ น้อยๆ ของแคนาดานี้ได้เปลี่ยนวิธีการสื่อสารของโลก หายไปนาน แต่มรดกยังคงอยู่! ในคำแนะนำนี้ คุณจะได้เรียนรู้วิธีใช้ MCUfriend.com 2.4" TFT ดิส
วิธีสร้างนาฬิกาเรียลไทม์โดยใช้ Arduino และจอแสดงผล TFT - Arduino Mega RTC พร้อมจอแสดงผล TFT ขนาด 3.5 นิ้ว: 4 ขั้นตอน
วิธีทำนาฬิกาเรียลไทม์โดยใช้ Arduino และจอแสดงผล TFT | Arduino Mega RTC พร้อมจอแสดงผล TFT ขนาด 3.5 นิ้ว: ไปที่ช่อง Youtube ของฉัน บทนำ: - ในโพสต์นี้ฉันจะสร้าง "นาฬิกาแบบเรียลไทม์" โดยใช้จอสัมผัส TFT ขนาด 3.5 นิ้ว, Arduino Mega โมดูล RTC 2560 และ DS3231….ก่อนเริ่ม…ตรวจสอบวิดีโอจากช่อง YouTube ของฉัน..หมายเหตุ:- หากคุณใช้ Arduin
Arduino Uno: แอนิเมชั่นบิตแมปบน ILI9341 TFT Touchscreen Display Shield พร้อม Visuino: 12 ขั้นตอน (พร้อมรูปภาพ)
Arduino Uno: แอนิเมชั่นบิตแมปบน ILI9341 TFT Touchscreen Display Shield พร้อม Visuino: ILI9341 ที่ใช้ TFT Touchscreen Display Shields เป็น Display Shields ราคาประหยัดยอดนิยมสำหรับ Arduino Visuino ได้รับการสนับสนุนสำหรับพวกเขามาระยะหนึ่งแล้ว แต่ฉันไม่เคยมีโอกาสเขียนบทช่วยสอนเกี่ยวกับวิธีการใช้งาน ล่าสุดมีคนถามมาว่า
Orange PI HowTo: ตั้งค่าให้ใช้กับจอแสดงผล HDMI TFT LCD ขนาด 5 นิ้ว: 8 ขั้นตอน (พร้อมรูปภาพ)
Orange PI HowTo: ตั้งค่าให้ใช้กับจอแสดงผล HDMI TFT LCD ขนาด 5 นิ้ว: หากคุณรอบคอบพอที่จะสั่งจอแสดงผล HDMI TFT LCD ร่วมกับ Orange PI ของคุณ คุณอาจรู้สึกท้อแท้กับความยากลำบากในการพยายามบังคับให้มันทำงาน ในขณะที่คนอื่นไม่สามารถสังเกตเห็นอุปสรรคใด ๆ ได้ กุญแจสำคัญคือมีที่เล