Mục lục:

Chương trình vẽ Arduino TFT: 4 bước
Chương trình vẽ Arduino TFT: 4 bước

Video: Chương trình vẽ Arduino TFT: 4 bước

Video: Chương trình vẽ Arduino TFT: 4 bước
Video: LCD Shield arduino _ TFT Touch Screen 2.4 inch vs LCD TFT Shield Mega_Màn hình cảm ứng 2024, Tháng bảy
Anonim
Chương trình vẽ Arduino TFT
Chương trình vẽ Arduino TFT
Chương trình vẽ Arduino TFT
Chương trình vẽ Arduino TFT
Chương trình vẽ Arduino TFT
Chương trình vẽ Arduino TFT

Phần hướng dẫn này trình bày chi tiết mã dùng để tạo chương trình vẽ cho màn hình Arduino TFT. Tuy nhiên, chương trình này là duy nhất vì nó cho phép lưu bản vẽ vào thẻ SD và tải nó sau để thực hiện nhiều chỉnh sửa hơn!

Quân nhu

  1. Arduino Uno - bản gốc hoặc bản sao tương thích
  2. Màn hình cảm ứng TFT - Tôi đã sử dụng màn hình Elegoo, nghĩa là tôi cần trình điều khiển Elegoo.
  3. Bo mạch đọc Micro SD - dùng để lưu dữ liệu bản vẽ vào thẻ SD. Màn hình của tôi có một đầu đọc tích hợp bên dưới màn hình.
  4. Bút cảm ứng - màn hình của tôi có một cái. Móng tay cũng hoạt động tốt.
  5. Thẻ Micro SD - không quá 32GB, do các hạn chế về định dạng exFAT (Arduino có thể đọc các thẻ có định dạng FAT32 nhưng KHÔNG phải exFAT. Hầu hết các thẻ lớn hơn đều được định dạng bằng exFAT.). Đây là loại mà bạn sẽ đưa vào một chiếc điện thoại có bộ nhớ mở rộng.
  6. Máy tính có Arduino IDE
  7. Cáp lập trình - USB A sang USB B. Arduino của tôi đi kèm với một cái.
  8. Bộ chuyển đổi thẻ SD - được sử dụng để chuyển đổi thẻ Micro SD thành thẻ SD thông thường để đưa vào khe cắm SD HOẶC một bộ chuyển đổi kết nối thẻ SD với khe cắm USB.

Bước 1: Định dạng thẻ SD

Định dạng thẻ SD
Định dạng thẻ SD
Định dạng thẻ SD
Định dạng thẻ SD
  1. Lấy thẻ Micro SD và gắn nó vào máy tính của bạn bằng đầu đọc thẻ SD
  2. Mở File Explorer và tìm thẻ SD.
  3. Nhấp chuột phải vào nó và chọn Định dạng.
  4. Đặt các tùy chọn dựa trên ảnh chụp màn hình.
  5. Nhấp vào Bắt đầu.
  6. Đẩy thẻ ra khi quá trình hoàn tất.

Nếu bạn không chạy Windows, hãy thử sử dụng SD Formatter từ liên kết SD.

Bước 2: Chuẩn bị Arduino

Chuẩn bị Arduino
Chuẩn bị Arduino
Chuẩn bị Arduino
Chuẩn bị Arduino
  1. Nhấn tấm chắn màn hình của bạn xuống Arduino, cẩn thận để thẳng hàng các chốt.
  2. Cắm thẻ SD vào đầu đọc bên dưới màn hình.

Bước 3: Phác thảo Arduino

Mặc dù danh sách các bộ phận khá đơn giản, nhưng có rất nhiều mã. Tôi sẽ xem xét từng bước ở đây.

#bao gồm

#include #include #include #include

Elegoo_GFX, _TFTLCD và TouchScreen đều dành riêng cho phần cứng. Nếu bạn sử dụng một màn hình khác, hãy sử dụng các thư viện do nhà sản xuất cung cấp.

SPI và SD được sử dụng để giao tiếp với thẻ SD. SPI là giao thức được sử dụng bởi bộ điều khiển thẻ SD.

#if được xác định (_ SAM3X8E _) # undef _FlashStringHelper:: F (string_literal) #define F (string_literal) string_literal #endif

Điều này cũng dành riêng cho phần cứng.

#define YP A3 // phải là chân tương tự # xác định XM A2 // phải là chân tương tự #define YM 9 #define XP 8

// Chạm cho ILI9341 TP mới

#define TS_MINX 120 #define TS_MAXX 900 #define TS_MINY 70 #define TS_MAXY 920

#define CSPIN 10

#define LCD_CS A3

# xác định LCD_CD A2 # xác định LCD_WR A1 # xác định LCD_RD A0 # xác định LCD_RESET A4

Mỗi câu lệnh #define này làm cho IDE thay thế tên bằng giá trị. Ở đây, họ đặt các chân I / O LCD và SD.

// Gán tên cho một số giá trị màu 16 bit: #define BLACK 0x0000 #define WHITE 0xFFFF #define RED 0xF800 #define BLUE 0x001F #define GREEN 0x07E0

Đây là một số màu được sử dụng trong mã. # xác định-ing chúng giúp đọc mã dễ dàng hơn.

#define PENRADIUS 3

Điều này xác định kích thước của bút vẽ.

#define MINPRESSURE 10 # xác định MAXPRESSURE 1000

// Để có độ chính xác áp suất tốt hơn, chúng ta cần biết điện trở

// giữa X + và X- Sử dụng bất kỳ đồng hồ vạn năng nào để đọc nó // Đối với đồng hồ tôi đang sử dụng, 300 ohms của nó trên tấm X TouchScreen ts = TouchScreen (XP, YP, XM, YM, 300);

Elegoo_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);

Các câu lệnh này xác định áp lực cần thiết để đăng ký một lần chạm, khởi tạo chức năng cảm ứng và khởi động màn hình.

Lưu trữ tệp; int storageSize; int stX = 1; int stY = 1;

Đây là các biến cho phần lưu trữ của chương trình.

void setup (void) {Serial.begin (9600); Serial.println ("Chương trình sơn");

tft.reset ();

uint16_t định danh = tft.readID ();

if (định danh == 0x0101) {định danh = 0x9341; Serial.println (F ("Tìm thấy trình điều khiển LCD 0x9341")); }

// Bắt đầu màn hình

tft.begin (định danh); tft.setRotation (2);

pinMode (13, OUTPUT);

// Khởi động thẻ SD

if (! SD.begin (CSPIN)) {Serial.println ("Khởi tạo SD không thành công"); trở lại; } Serial.println ("Đã khởi tạo SD");

// Vẽ nền

drawBackground (); }

Chức năng cài đặt bắt đầu Nối tiếp nếu có, đặt lại màn hình, phát hiện trình điều khiển TFT, khởi động màn hình, khởi động thẻ và gọi một hàm để vẽ nền.

Tôi sẽ bỏ qua phần chính của hàm vòng lặp. Mọi thứ khác chỉ được sử dụng để điều khiển màn hình cảm ứng.

// Nhấn màn hình phát hiện và lưu trữ nó vào các biến if (p.z> MINPRESSURE && p.z <MAXPRESSURE) {// Scale p.x = map (p.x, TS_MINX, TS_MAXX, tft.width (), 0); p.y = (tft.height () - bản đồ (p.y, TS_MINY, TS_MAXY, tft.height (), 0));

//Vẽ

if (p.y> 21) {// Lưu dữ liệu vào bộ nhớ thẻ SD = SD.open ("storage.txt", FILE_WRITE); Storage.print (p.x); Storage.print (","); Storage.println (p.y); lưu trữ.close ();

// Chấm tại vị trí chạm

tft.fillCircle (p.x, p.y, PENRADIUS, WHITE); }

// Nút xóa

if ((p.y 198) && (p.x <219)) {deleteStorage (); }

// Tải hành động của nút

if ((p.y 219)) {loadStorage (); }}

Nếu phát hiện thấy máy dập, hãy đặt các biến cho vị trí máy dập.

Sau đó, nếu điểm nhấn nằm trong vùng vẽ, hãy lưu điểm vào thẻ SD trong storage.txt và vẽ một vòng tròn tại điểm được nhấn, với kích thước và màu sắc xác định.

Sau đó, nếu nút bấm ở vị trí của nút xóa, hãy chạy một chức năng xóa bản vẽ đã lưu trữ. Nếu bạn đang sử dụng màn hình có kích thước khác, hãy thử chơi với các giá trị vị trí của nút.

Sau đó, nếu máy bấm ở vị trí của nút tải, hãy chạy một chức năng tải bản vẽ được lưu trữ. Nếu bạn đang sử dụng màn hình có kích thước khác, hãy thử chơi với các giá trị vị trí của nút.

Bây giờ, tôi sẽ giải thích các chức năng.

Chức năng đầu tiên được gọi trong thiết lập để vẽ nền và các nút.

void drawBackground () {// Đặt background tft.fillScreen (BLACK);

// Sơn văn bản

tft.setTextColor (TRẮNG); tft.setTextSize (3); tft.setCursor (0, 0); tft.println ("Sơn");

// Tải nút

tft.fillRect (219, 0, 21, 21, XANH LÁ);

// Nút xóa

tft.fillRect (198, 0, 21, 21, RED); }

Nó lấp đầy màn hình màu đen, viết từ Paint và vẽ các ô vuông màu cho các nút. Nếu bạn đang sử dụng màn hình có kích thước khác, hãy thử chơi với các giá trị vị trí của nút.

void deleteStorage () {// Xóa tập tin SD.remove ("storage.txt");

// Đặt nền

tft.fillScreen (ĐEN);

// Xóa văn bản Thành công

tft.setTextColor (TRẮNG); tft.setTextSize (2); tft.setCursor (0, 0); tft.println ("Đã xóa kho lưu trữ.txt");

// Cho phép người dùng đọc nó

chậm trễ (2000);

// Tiếp tục vẽ

drawBackground (); }

Chức năng deleteStorage loại bỏ tệp lưu trữ storage.txt, lấp đầy màn hình đen và đưa ra thông báo xóa thành công. Sau đó, nó gọi hàm drawBackground để cho phép bạn bắt đầu vẽ thứ gì đó khác.

void loadStorage () {// Tránh lặp lại từ slow ngón tay chậm trễ (250);

// Kiểm tra tệp lưu trữ

if (! SD.exists ("storage.txt")) {Serial.println ("Không có tệp storage.txt"); trở lại; }

// Mở tệp ở chế độ chỉ đọc

lưu trữ = SD.open ("storage.txt", FILE_READ);

// Trong khi có dữ liệu, while (stY> 0) {// Cập nhật các biến vị trí stX = storage.parseInt (); stY = lưu trữ.parseInt ();

// Vẽ từ bộ nhớ

tft.fillCircle (stX, stY, PENRADIUS, WHITE); } // Đóng tệp storage.close (); }

Cuối cùng, hàm loadStorage kiểm tra tệp lưu trữ, mở tệp đó ở chế độ chỉ đọc, sau đó lặp lại vòng lặp này:

Miễn là có nhiều dữ liệu hơn,

  1. Cập nhật các biến vị trí với dữ liệu được phân tích cú pháp từ Storage.txt
  2. Vẽ một vòng tròn tại điểm đã tải

Khi vòng lặp hoàn tất và không còn dữ liệu, nó sẽ đóng tệp lưu trữ.

Mã cho bản phác thảo này có thể được tìm thấy bên dưới. Chỉ cần tải xuống, mở nó trong Arduino và tải nó lên bảng của bạn!

Bước 4: Sử dụng chương trình này

Sử dụng chương trình này
Sử dụng chương trình này

Chỉ cần cắm Arduino của bạn vào nguồn điện - máy tính, pin, mụn cóc trên tường, v.v. và bắt đầu vẽ. Để xóa bản vẽ của bạn và dữ liệu được lưu trữ của nó, hãy nhấn nút màu đỏ. Để tải một bản vẽ từ bộ nhớ và tiếp tục làm việc với nó, hãy nhấp vào nút màu xanh lục. Bằng cách này, bạn có thể lặp lại nhiều lần trên một bản vẽ!

Như một tiện ích mở rộng, hãy thử vẽ sơ đồ bản vẽ trên máy tính của bạn:

  1. Cắm thẻ SD có dữ liệu vào máy tính của bạn.
  2. Mở storage.txt trong trình soạn thảo văn bản / mã yêu thích của bạn.
  3. Sao chép tất cả các giá trị trong storage.txt.
  4. Theo liên kết này đến một chương trình vẽ đồ thị điểm.
  5. Xóa hai điểm ví dụ ở bên trái.
  6. Dán dữ liệu của bạn vào vị trí các điểm mẫu.

Đây là một cách gọn gàng để thể hiện bản vẽ của bạn - thậm chí có thể thử thay đổi màu điểm trên Arduino hoặc trong máy vẽ điểm!

Các sửa đổi được hoan nghênh và tôi muốn xem một số đề xuất trong các nhận xét. Cảm ơn bạn đã xem qua phần này và tôi hy vọng rằng bạn sẽ tìm thấy những cách sử dụng hữu ích cho nó trong các dự án của riêng mình!

Đề xuất: