Mục lục:
- Bước 1: Yêu cầu phần cứng và phần mềm
- Bước 2: Tinh chỉnh UTFT Lib
- Bước 3: Khởi tạo TFT Shield
- Bước 4: Hello World cơ bản
- Bước 5: Phông chữ UTFT
- Bước 6: Hình dạng, đường kẻ và mẫu UTFT
- Bước 7: Bản đồ bit UTFT
- Bước 8: Giao diện nút
- Bước 9: Flappy Bird
- Bước 10: Làm việc của dự án
Video: Khái niệm cơ bản về giao diện TFT của Arduino: 10 bước (có hình ảnh)
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:33
Màn hình cảm ứng TFT là giao diện đồ họa tuyệt vời có thể được sử dụng với các bộ vi điều khiển như Atmel, PIC, STM, vì nó có dải màu rộng, khả năng đồ họa tốt và ánh xạ điểm ảnh tốt.
Hôm nay, chúng ta sẽ đến với Giao diện TFT LCD Shield 2,4 inch với Arduino.
Lá chắn này dành cho Arduino UNO, nhưng tôi sẽ dạy cách sử dụng nó với Arduino Mega vì một lý do rất hợp lý, đó là "Bộ nhớ chương trình".
Bằng cách sử dụng tấm chắn TFT LCD màu này, chúng tôi có thể hiển thị các ký tự, chuỗi, giao diện nút, hình ảnh bitmap, v.v. trên TFT LCD màu.
Bước 1: Yêu cầu phần cứng và phần mềm
Để tạo giao diện lá chắn với mega Arduino, chúng ta cần những thứ sau.
PHẦN CỨNG:
• Arduino mega
• Màn hình LCD TFT 2,4 / 2,8 / 3,2 inch
• Cáp USB
PHẦN MỀM
• Arduino IDE
• Thư viện UTFT / Thư viện spfd5408
Shield ban đầu được tạo ra cho các bo mạch Arduino UNO, có thể được sử dụng với Arduino mega.
Có hai vấn đề chính khi sử dụng nó với Arduino UNO: "Bộ nhớ lưu trữ" và việc sử dụng chân.
Rất khó để sử dụng các chân không sử dụng có sẵn trên UNO, ngược lại với Arduino MEGA sẽ tốt hơn vì chúng ta còn lại nhiều chân I / O hơn.
Trong bước tiếp theo, tôi sẽ chỉ cách chỉnh sửa thư viện UTFT để sử dụng lá chắn TFT
Bước 2: Tinh chỉnh UTFT Lib
Thư viện này là sự tiếp nối của các thư viện ITDB02_Graph, ITDB02_Graph16 và RGB_GLCD của tôi cho Arduino và chipKit. Khi số lượng mô-đun hiển thị và bộ điều khiển được hỗ trợ bắt đầu tăng lên, tôi cảm thấy đã đến lúc tạo một thư viện phổ quát duy nhất vì nó sẽ dễ bảo trì hơn nhiều trong tương lai.
Arduino MEGA có 256kb bộ nhớ chương trình. Ngoài ra, có 54 chân.
Hầu hết chúng đều được sử dụng miễn phí và chỉ 5 chiếc được lấy từ 16 chiếc.
Thư viện này hỗ trợ một số màn hình đồ họa 8bit, 16bit và nối tiếp, và sẽ hoạt động với cả bảng Arduino, chipKit và chọn TI LaunchPads.
LƯU Ý: Do kích thước của thư viện, tôi không khuyên bạn nên sử dụng nó trên ATmega328 (Arduino Uno) và ATmega32U4 (Arduino Leonardo) vì chúng chỉ có 32KB bộ nhớ flash. Nó sẽ hoạt động, nhưng bạn sẽ bị hạn chế nghiêm trọng về bộ nhớ flash có sẵn cho ứng dụng của mình
Các bước
- Tải xuống Thư viện UTFT
- Giải nén Thư viện
- Mở UTFT / phần cứng / avr trong trường hợp Arduino hoặc tùy thuộc vào bộ vi điều khiển được sử dụng
- Mở HW_AVR_defines bằng Notepad
- Bỏ ghi chú Dòng 7 để bật lá chắn UNO cho MEGA
- Lưu tệp và thêm Thư viện này vào Arduino IDE
Bây giờ chúng ta đã hoàn thành bước này! Trong bước tiếp theo, tôi sẽ trình bày cách sử dụng thư viện và xác định các chân cho Arduino Mega.
Bước 3: Khởi tạo TFT Shield
Sau khi chỉnh sửa thư viện, Thêm nó vào thư mục Arduino.
Tiếp theo, tôi sẽ chỉ cho bạn cách xác định đúng mô-đun TFT mà bạn có
chúng ta sẽ tìm thấy tên mô-đun của nó trong thư viện.
- mở tệp thư viện
- đi đến tài liệu
Bạn có thể xem các tệp này trong Tài liệu
• UTFT:
Tệp này hiển thị tất cả các chức năng và lệnh có trong thư viện này.
• UTFT_Requirement
Tệp này có thông tin về các mô-đun và cách nó liên quan đến thư viện, chẳng hạn như cấu hình chân
• Bộ điều khiển UTFT_Supported_display_modules _ & _
Đây là mục tiêu của chúng tôi, tệp này có tên của các mô-đun và lá chắn được thư viện này hỗ trợ, bạn có thể thấy trong đó danh sách các tên mô-đun và tên mô-đun cho UTFT mà bạn nên sử dụng để xác định mô-đun của mình.
Các bước để xác định TFT:
Mở tệp UTFT_Supported_display_modules _ & _ controller từ thư viện
- Mở tệp UTFT_Supported_display_modules _ & _ controller từ thư viện
- Tìm Mô hình cho UTFT cho Mô-đun (lá chắn) mà bạn có.
- Bây giờ để xác định một hàm UTFT trên Arduino IDE, chúng ta sử dụng lệnh:
Tên UTFT (mô-đun, Rs, Wr, Cs, Rst);
Mở tệp UTFT_Requirement từ thư viện
Từ tài liệu, chúng ta biết rằng các chân nằm trên các chân A5, A4, A3 và A2.
chúng tôi sử dụng lệnh:
UTFT myGLCD (ITDB28, 19, 18, 17, 16); # lưu ý rằng các chân 19, 18, 17, 16 trong Arduino Mega
UTFT myGLCD (ITDB28, A5, A4, A3, A2); # lưu ý rằng các chân A5, A4, A3, A2 trong Arduino UNO
Và thực hiện! Bây giờ bạn có thể sử dụng các ví dụ thư viện trên Arduino IDE với các thay đổi sau.
Bước 4: Hello World cơ bản
#include // Khai báo phông chữ chúng tôi sẽ sử dụng
extern uint8_t BigFont ; extern uint8_t SevenSegNumFont ; // Hãy nhớ thay đổi tham số mô hình cho phù hợp với mô-đun hiển thị của bạn! UTFT myGLCD (ITDB28, A5, A4, A3, A2); void setup () {myGLCD. InitLCD (); myGLCD.clrScr (); myGLCD.setFont (BigFont); } void loop () {myGLCD.setColor (0, 255, 0); // xanh myGLCD.print ("HELLO WORLD", 45, 100); while (true) {}; }
Bước 5: Phông chữ UTFT
#include // Khai báo phông chữ chúng tôi sẽ sử dụng
extern uint8_t SmallFont ; extern uint8_t BigFont ; extern uint8_t SevenSegNumFont ; // Đặt các chân thành đúng cái cho lá chắn phát triển của bạn // ----------------------------------- ------------------------- // Arduino Uno / 2009: // ---------------- --- // Lá chắn Arduino Uno / 2009 tiêu chuẩn:, A5, A4, A3, A2 // Tấm chắn Arduino Uno TFT của DisplayModule:, A5, A4, A3, A2 // // Arduino Mega: // ---------- -------------- // Lá chắn Arduino Mega / Do tiêu chuẩn:, 38, 39, 40, 41 // Tấm chắn CTE TFT LCD / SD Shield cho Arduino Mega:, 38, 39, 40, 41 // // Hãy nhớ thay đổi tham số mô hình cho phù hợp với mô-đun hiển thị của bạn! UTFT myGLCD (ITDB32S, 38, 39, 40, 41); void setup () {myGLCD. InitLCD () myGLCD.clrScr (); } void loop () {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); trong khi (1) {}; }
Bước 6: Hình dạng, đường kẻ và mẫu UTFT
#include "UTFT.h" // Khai báo phông chữ nào chúng tôi sẽ sử dụngextern uint8_t SmallFont ; // Đặt các chân thành đúng cho lá chắn phát triển của bạn // -------------- ---------------------------------------------- // Arduino Uno / 2009: // ------------------- // Lá chắn Arduino Uno / 2009 tiêu chuẩn:, A5, A4, A3, A2 // Tấm chắn Arduino Uno TFT của DisplayModule:, A5, A4, A3, A2 // // Arduino Mega: // ------------------- // Lá chắn Arduino Mega / Do tiêu chuẩn:, 38, 39, 40, 41 // CTE TFT LCD / SD Shield cho Arduino Mega:, 38, 39, 40, 41 // // Hãy nhớ thay đổi thông số mô hình cho phù hợp với mô-đun hiển thị của bạn! UTFT myGLCD (ITDB32S, 38, 39, 40, 41); void setup () {randomSeed (analogRead (0)); // Thiết lập LCD myGLCD. InitLCD (); myGLCD.setFont (SmallFont); }
void loop ()
{int buf [318]; int x, x2; int y, y2; int r; // Xoá màn hình và vẽ khung 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 ("* Thư viện hiển thị TFT màu đa năng *", 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); // Vẽ chữ thập myGLCD.setColor (0, 0, 255); myGLCD.setBackColor (0, 0, 0); myGLCD.drawLine (159, 15, 159, 224); myGLCD.drawLine (1, 119, 318, 119); for (int i = 9; i <310; i + = 10) myGLCD.drawLine (i, 117, i, 121); for (int i = 19; i <220; i + = 10) myGLCD.drawLine (157, i, 161, i); // Vẽ các đường sin-, cos- và tan-myGLCD.setColor (0, 255, 255); myGLCD.print ("Sin", 5, 15); for (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 ("Cos", 5, 27); for (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 ("Tan", 5, 39); for (int i = 1; i <318; i ++) {myGLCD.drawPixel (i, 119+ (tan (((i * 1.13) * 3.14) / 180))); } trì hoãn (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); // Vẽ một đường sinewave chuyển động x = 1; for (int i = 1; i319) {if ((x == 159) || (buf [x-1] == 119)) myGLCD.setColor (0, 0, 255); else myGLCD.setColor (0, 0, 0); myGLCD.drawPixel (x, buf [x-1]); } myGLCD.setColor (0, 255, 255); y = 119 + (sin (((i * 1.1) * 3.14) / 180) * (90- (i / 100))); myGLCD.drawPixel (x, y); buf [x-1] = y; } trì hoãn (2000); myGLCD.setColor (0, 0, 0); myGLCD.fillRect (1, 15, 318, 224); // Vẽ một số hình chữ nhật được tô màu cho (int i = 1; i <6; i ++) {switch (i) {case 1: myGLCD.setColor (255, 0, 255); nghỉ; trường hợp 2: myGLCD.setColor (255, 0, 0); nghỉ; trường hợp 3: myGLCD.setColor (0, 255, 0); nghỉ; trường hợp 4: myGLCD.setColor (0, 0, 255); nghỉ; trường hợp 5: myGLCD.setColor (255, 255, 0); nghỉ; } myGLCD.fillRect (70+ (i * 20), 30+ (i * 20), 130+ (i * 20), 90+ (i * 20)); } trì hoãn (2000); myGLCD.setColor (0, 0, 0); myGLCD.fillRect (1, 15, 318, 224); // Vẽ một số hình chữ nhật tròn, đầy cho (int i = 1; i <6; i ++) {switch (i) {case 1: myGLCD.setColor (255, 0, 255); nghỉ; trường hợp 2: myGLCD.setColor (255, 0, 0); nghỉ; trường hợp 3: myGLCD.setColor (0, 255, 0); nghỉ; trường hợp 4: myGLCD.setColor (0, 0, 255); nghỉ; trường hợp 5: myGLCD.setColor (255, 255, 0); nghỉ; } myGLCD.fillRoundRect (190- (i * 20), 30+ (i * 20), 250- (i * 20), 90+ (i * 20)); } trì hoãn (2000); myGLCD.setColor (0, 0, 0); myGLCD.fillRect (1, 15, 318, 224); // Vẽ một số vòng tròn tô cho (int i = 1; i <6; i ++) {switch (i) {case 1: myGLCD.setColor (255, 0, 255); nghỉ; trường hợp 2: myGLCD.setColor (255, 0, 0); nghỉ; trường hợp 3: myGLCD.setColor (0, 255, 0); nghỉ; trường hợp 4: myGLCD.setColor (0, 0, 255); nghỉ; trường hợp 5: myGLCD.setColor (255, 255, 0); nghỉ; } myGLCD.fillCircle (100+ (i * 20), 60+ (i * 20), 30); } trì hoãn (2000); myGLCD.setColor (0, 0, 0); myGLCD.fillRect (1, 15, 318, 224); // Vẽ một số đường theo mẫu myGLCD.setColor (255, 0, 0); for (int i = 15; i <224; i + = 5) {myGLCD.drawLine (1, i, (i * 1.44) -10, 224); } myGLCD.setColor (255, 0, 0); for (int i = 224; i> 15; i- = 5) {myGLCD.drawLine (318, i, (i * 1.44) -11, 15); } myGLCD.setColor (0, 255, 255); for (int i = 224; i> 15; i- = 5) {myGLCD.drawLine (1, i, 331- (i * 1.44), 15); } myGLCD.setColor (0, 255, 255); for (int i = 15; i <224; i + = 5) {myGLCD.drawLine (318, i, 330- (i * 1.44), 224); } trì hoãn (2000); myGLCD.setColor (0, 0, 0); myGLCD.fillRect (1, 15, 318, 224); // Vẽ một số vòng tròn ngẫu nhiên cho (int i = 0; i <100; i ++) {myGLCD.setColor (random (255), random (255), random (255)); x = 32 + ngẫu nhiên (256); y = 45 + ngẫu nhiên (146); r = ngẫu nhiên (30); myGLCD.drawCircle (x, y, r); } trì hoãn (2000); myGLCD.setColor (0, 0, 0); myGLCD.fillRect (1, 15, 318, 224); // Vẽ một số hình chữ nhật ngẫu nhiên cho (int i = 0; i <100; i ++) {myGLCD.setColor (random (255), random (255), random (255)); x = 2 + ngẫu nhiên (316); y = 16 + ngẫu nhiên (207); x2 = 2 + ngẫu nhiên (316); y2 = 16 + ngẫu nhiên (207); myGLCD.drawRect (x, y, x2, y2); } trì hoãn (2000); myGLCD.setColor (0, 0, 0); myGLCD.fillRect (1, 15, 318, 224); // Vẽ một số hình chữ nhật tròn ngẫu nhiên cho (int i = 0; i <100; i ++) {myGLCD.setColor (random (255), random (255), random (255)); x = 2 + ngẫu nhiên (316); y = 16 + ngẫu nhiên (207); x2 = 2 + ngẫu nhiên (316); y2 = 16 + ngẫu nhiên (207); myGLCD.drawRoundRect (x, y, x2, y2); } trì hoãn (2000); myGLCD.setColor (0, 0, 0); myGLCD.fillRect (1, 15, 318, 224); for (int i = 0; i <100; i ++) {myGLCD.setColor (random (255), random (255), random (255)); x = 2 + ngẫu nhiên (316); y = 16 + ngẫu nhiên (209); x2 = 2 + ngẫu nhiên (316); y2 = 16 + ngẫu nhiên (209); myGLCD.drawLine (x, y, x2, y2); } trì hoãn (2000); myGLCD.setColor (0, 0, 0); myGLCD.fillRect (1, 15, 318, 224); for (int i = 0; i <10000; i ++) {myGLCD.setColor (random (255), random (255), random (255)); myGLCD.drawPixel (2 + ngẫu nhiên (316), 16 + ngẫu nhiên (209)); } trì hoãn (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 ("Đó là nó!", CENTER, 93); myGLCD.print ("Khởi động lại trong một", CENTER, 119); myGLCD.print ("vài giây…", CENTER, 132); myGLCD.setColor (0, 255, 0); myGLCD.setBackColor (0, 0, 255); myGLCD.print ("Thời gian chạy: (msecs)", CENTER, 210); myGLCD.printNumI (millis (), CENTER, 225); trì hoãn (10000); }
Bước 7: Bản đồ bit UTFT
#bao gồm
#include // Khai báo phông chữ chúng tôi sẽ sử dụng extern uint8_t SmallFont ; // Đặt các chân thành đúng cái cho lá chắn phát triển của bạn // ------------------ ------------------------------------------ // Arduino Uno / 2009: / / ------------------- // Lá chắn Arduino Uno / 2009 tiêu chuẩn:, A5, A4, A3, A2 // Tấm chắn Arduino Uno TFT của DisplayModule:, A5, A4, A3, A2 // // Arduino Mega: // ------------------- // Lá chắn Arduino Mega / Do chuẩn:, 38, 39, 40, 41 // CTE TFT LCD / SD Shield cho Arduino Mega:, 38, 39, 40, 41 // // Hãy nhớ thay đổi thông số mô hình cho phù hợp với mô-đun hiển thị của bạn! UTFT myGLCD (ITDB32S, A5, A4, A3, A2); extern unsigned int info [0x400]; biểu tượng int extern không dấu [0x400]; extern unsigned int tux [0x400]; void setup () {myGLCD. InitLCD (); myGLCD.setFont (SmallFont); } void loop () {myGLCD.fillScr (255, 255, 255); myGLCD.setColor (255, 255, 255); myGLCD.print ("*** Lưới 10 x 7 của biểu tượng 32x32 ***", CENTER, 228); for (int x = 0; x <10; x ++) for (int y = 0; y <7; y ++) myGLCD.drawBitmap (x * 32, y * 32, 32, 32, thông tin); chậm trễ (5000); myGLCD.fillScr (255, 255, 255); myGLCD.setColor (255, 255, 255); myGLCD.print ("Hai biểu tượng khác nhau theo tỷ lệ từ 1 đến 4", CENTER, 228); int x = 0; for (int s = 0; s0; s--) {myGLCD.drawBitmap (x, 224- (s * 32), 32, 32, icon, s); x + = (s * 32); } delay (5000); }
Bước 8: Giao diện nút
#include #include // Khởi tạo hiển thị // ------------------ // Đặt các chân vào đúng vị trí cho bảng phát triển của bạn // ------- -------------------------------------------------- - // Lá chắn Arduino Uno / 2009 tiêu chuẩn:, 19, 18, 17, 16 // Lá chắn Arduino Mega / Do tiêu chuẩn:, 38, 39, 40, 41 // Tấm chắn CTE TFT LCD / SD Shield cho Arduino Do:, 25, 26, 27, 28 // Bảng kiểm tra TFT Teensy 3.x:, 23, 22, 3, 4 // ElecHouse TFT LCD / SD Shield cho Arduino Do:, 22, 23, 31, 33 // // Hãy nhớ thay đổi thông số mô hình cho phù hợp với mô-đun hiển thị của bạn! UTFT myGLCD (ITDB32S, 38, 39, 40, 41); // Khởi tạo màn hình cảm ứng // ---------------------- // Đặt các chân cho đúng những cái cho ban phát triển của bạn // ------------------------------------------- ---------------- // Lá chắn Arduino Uno / 2009 tiêu chuẩn: 15, 10, 14, 9, 8 // Lá chắn Arduino Mega / Do tiêu chuẩn: 6, 5, 4, 3, 2 // CTE TFT LCD / SD Shield cho Arduino Do: 6, 5, 4, 3, 2 // Bảng kiểm tra TFT Teensy 3.x: 26, 31, 27, 28, 29 // ElecHouse TFT LCD / SD Shield cho Arduino Do: 25, 26, 27, 29, 30 // URTouch myTouch (6, 5, 4, 3, 2); // Khai báo phông chữ nào chúng ta sẽ sử dụng extern uint8_t BigFont ; int x, y; char stCurrent [20] = ""; int stCurrentLen = 0; char stLast [20] = ""; / ************************* ** Các chức năng tùy chỉnh ** ********* **************** / void drawButtons () {// Vẽ hàng nút phía trên cho (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); } // Vẽ hàng nút chính giữa for (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); if (x <4) myGLCD.printNumI (x + 6, 27+ (x * 60), 87); } myGLCD.print ("0", 267, 87); // Vẽ hàng nút dưới myGLCD.setColor (0, 0, 255); myGLCD.fillRoundRect (10, 130, 150, 180); myGLCD.setColor (255, 255, 255); myGLCD.drawRoundRect (10, 130, 150, 180); myGLCD.print ("Xoá", 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); } void 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) {cho (x = 0; x
Bước 9: Flappy Bird
#include #include #include // ==== Tạo Đối tượng UTFT myGLCD (SSD1289, 38, 39, 40, 41); // Các thông số phải được điều chỉnh theo mô hình Display / Schield UTouch myTouch (6, 5, 4, 3, 2); // ==== Định nghĩa Phông chữ extern uint8_t SmallFont ; extern uint8_t BigFont ; extern uint8_t SevenSegNumFont ; extern unsigned int bird01 [0x41A]; // Chim Bitmapint x, y; // Các biến cho tọa độ nơi hiển thị đã được nhấn // Floppy Bird int xP = 319; int yP = 100; int yB = 50; int moveRate = 3; int fallRateInt = 0; float fallRate = 0; int điểm = 0; int lastSpeedUpScore = 0; int highScore; boolean screenPressed = false; boolean gameStarted = false; void setup () {// Khởi tạo hiển thị myGLCD. InitLCD (); myGLCD.clrScr (); myTouch. InitTouch (); myTouch.setPre precision (PREC_MEDIUM); điểm cao nhất = EEPROM.read (0); // Đọc điểm cao nhất từ EEPROM startateGame (); // Khởi tạo trò chơi} void loop () {xP = xP-movingRate; // tọa độ xP - x của pilars; phạm vi: 319 - (-51) drawPilars (xP, yP); // Vẽ các trụ // tọa độ yB - y của con chim phụ thuộc vào giá trị của biến fallRate yB + = fallRateInt; FallRate = fallRate + 0,4; // Mỗi lần điều chỉnh tốc độ rơi tăng lên để chúng ta có thể ảnh hưởng của gia tốc / trọng lực fallRateInt = int (fallRate); // Kiểm tra va chạm if (yB> = 180 || yB <= 0) {// top và bottom gameOver (); } if ((xP = 5) && (yB <= yP-2)) {// trụ trên gameOver (); } if ((xP = 5) && (yB> = yP + 60)) {// trụ dưới gameOver (); } // Vẽ con chim drawBird (yB); // Sau khi cột đi qua màn hình if (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); } else if (x MaximumScore) {ScoreScore = điểm cao nhất; EEPROM.write (0, Điểm cao nhất); } // Đặt lại các biến thành giá trị vị trí bắt đầu xP = 319; yB = 50; FallRate = 0; điểm = 0; lastSpeedUpScore = 0; movingRate = 3; gameStarted = false; // Khởi động lại trò chơi InitiateGame (); }
Bước 10: Làm việc của dự án
Bạn có thể tìm thấy mã nguồn trong kho Github của tôi.
Liên kết:
Hãy ủng hộ nếu nó thực sự có ích cho bạn và hãy theo dõi kênh của tôi để biết những dự án thú vị:)
Chia sẻ video này nếu bạn thích.
Rất vui khi bạn đã đăng ký:
Cảm ơn vì đã đọc!
Đề xuất:
Trình điều khiển cầu chữ H tí hon - Khái niệm cơ bản: 6 bước (có hình ảnh)
Trình điều khiển cầu chữ H tí hon | Thông tin cơ bản: Xin chào và chào mừng bạn trở lại với một chương trình Có thể hướng dẫn khác! Trong phần trước, tôi đã hướng dẫn bạn cách tạo cuộn trong KiCad bằng cách sử dụng tập lệnh python. Sau đó, tôi tạo và thử nghiệm một vài biến thể của cuộn dây để xem loại nào hoạt động tốt nhất. Mục đích của tôi là thay thế
Bắt đầu với giao diện cảm biến I2C ?? - Giao diện MMA8451 của bạn bằng ESP32s: 8 bước
Bắt đầu với giao diện cảm biến I2C ?? - Giao diện MMA8451 của bạn bằng cách sử dụng ESP32s: Trong hướng dẫn này, bạn sẽ tìm hiểu tất cả về Cách khởi động, kết nối và nhận thiết bị I2C (Gia tốc kế) hoạt động với bộ điều khiển (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Cách sử dụng Piezo để tạo ra giai điệu: Khái niệm cơ bản: 4 bước (có hình ảnh)
Cách sử dụng Piezo để tạo ra giai điệu: Khái niệm cơ bản: Xin chào tất cả mọi người, Trong phần hướng dẫn này, chúng tôi sẽ sử dụng bộ rung Piezo để tạo ra âm sắc. Piezo là một thiết bị điện tử có thể được sử dụng cả để tạo ra cũng như phát hiện âm thanh. Ứng dụng: Bạn có thể sử dụng cùng một mạch để phát
Khái niệm cơ bản về động cơ - Khái niệm Siêu dễ hiểu với một thử nghiệm: 7 bước (có hình ảnh)
Khái niệm cơ bản về động cơ | Khái niệm Siêu dễ hiểu với một thí nghiệm: Trong bài hướng dẫn này, tôi sẽ dạy bạn về nguyên lý cơ bản cơ bản của động cơ. Tất cả các động cơ xung quanh chúng ta đều hoạt động dựa trên nguyên tắc này. Ngay cả các máy phát điện cũng hoạt động dựa trên tuyên bố có đi có lại của quy tắc này. Tôi đang nói về chữ Ru tay trái của Fleming
Bản trình diễn khai thác bàn phím Arduino (HID) và ngăn ngừa: 4 bước (có hình ảnh)
Bản trình diễn khai thác bàn phím Arduino (HID) và Phòng ngừa: Trong dự án này, chúng tôi sẽ sử dụng leonardo arduino để mô phỏng một cuộc tấn công USB có thể xảy ra bằng cách sử dụng HID (thiết bị giao diện humain). Tôi đã tạo hướng dẫn này không phải để giúp tin tặc mà để chỉ cho bạn một số mối nguy hiểm thực sự và cách bảo vệ bản thân bạn khỏi những