Mục lục:

Khái niệm cơ bản về giao diện TFT của Arduino: 10 bước (có hình ảnh)
Khái niệm cơ bản về giao diện TFT của Arduino: 10 bước (có hình ảnh)

Video: Khái niệm cơ bản về giao diện TFT của Arduino: 10 bước (có hình ảnh)

Video: Khái niệm cơ bản về giao diện TFT của Arduino: 10 bước (có hình ảnh)
Video: [Arduino 2] Giới thiệu phần cứng Arduino Uno R3 | Các chân chức năng cơ bản 2024, Tháng mười một
Anonim
Kiến thức cơ bản về giao diện TFT của Arduino
Kiến thức cơ bản về giao diện TFT của Arduino

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

Yêu cầu phần cứng và phần mềm
Yêu cầu phần cứng và phần mềm
Yêu cầu phần cứng và phần mềm
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

Tinh chỉnh UTFT Lib
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

Khởi tạo TFT Shield
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

Hello World cơ bản
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

Phông chữ UTFT
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

Hình dạng, đường kẻ và hoa văn UTFT
Hình dạng, đường kẻ và hoa văn 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

Bản đồ bit UTFT
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

Giao diện nút
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

Flappy Bird
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: