สารบัญ:

ข้อมูลพื้นฐานเกี่ยวกับการเชื่อมต่อ Arduino TFT: 10 ขั้นตอน (พร้อมรูปภาพ)
ข้อมูลพื้นฐานเกี่ยวกับการเชื่อมต่อ Arduino TFT: 10 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ข้อมูลพื้นฐานเกี่ยวกับการเชื่อมต่อ Arduino TFT: 10 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: ข้อมูลพื้นฐานเกี่ยวกับการเชื่อมต่อ Arduino TFT: 10 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: EP49 แสดงภาพ JPEG บนจอ ILI9341 TFT 2.4" | Arduino project Esp32 Display JPEG images on TFT 2.4" 2024, พฤศจิกายน
Anonim
ข้อมูลพื้นฐานเกี่ยวกับการเชื่อมต่อ Arduino TFT
ข้อมูลพื้นฐานเกี่ยวกับการเชื่อมต่อ Arduino TFT

หน้าจอสัมผัส 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

ปรับแต่ง UTFT Lib
ปรับแต่ง 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

กำลังเริ่มต้น TFT Shield
กำลังเริ่มต้น 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

แบบอักษร UTFT
แบบอักษร 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

รูปร่าง เส้น และรูปแบบ UTFT
รูปร่าง เส้น และรูปแบบ 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

UTFT บิตแมป
UTFT บิตแมป

#รวม

#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 ของฉัน

ลิงค์:

ยกนิ้วให้ถ้ามันช่วยคุณได้จริงๆ และติดตามช่องของฉันสำหรับโครงการที่น่าสนใจ:)

แชร์วิดีโอนี้หากคุณต้องการ

ยินดีที่ได้ติดตาม:

ขอบคุณที่อ่าน!

แนะนำ: