Mục lục:
2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-23 15:14
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
- Arduino Uno - bản gốc hoặc bản sao tương thích
- 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.
- 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.
- 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.
- 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.
- Máy tính có Arduino IDE
- 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.
- 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
- 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
- Mở File Explorer và tìm thẻ SD.
- Nhấp chuột phải vào nó và chọn Định dạng.
- Đặt các tùy chọn dựa trên ảnh chụp màn hình.
- Nhấp vào Bắt đầu.
- Đẩ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
- 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.
- 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,
- 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
- 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
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:
- Cắm thẻ SD có dữ liệu vào máy tính của bạn.
- Mở storage.txt trong trình soạn thảo văn bản / mã yêu thích của bạn.
- Sao chép tất cả các giá trị trong storage.txt.
- Theo liên kết này đến một chương trình vẽ đồ thị điểm.
- Xóa hai điểm ví dụ ở bên trái.
- 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:
Lập trình bất kỳ bo mạch / mô-đun ESP8266 nào với Phần mềm chương trình cơ sở lệnh AT: 5 bước
Lập trình bất kỳ bo mạch / mô-đun ESP8266 nào Với Phần mềm điều khiển lệnh AT: Mọi mô-đun và bo mạch ESP8266 có thể được lập trình theo nhiều cách: Arduino, python, Lua, lệnh AT, nhiều hơn nữa có thể là … Ba đầu tiên trong số chúng tốt nhất cho hoạt động độc lập, phần mềm AT là để sử dụng ESP8266 làm mô-đun hoặc để kiểm tra nhanh với TTL RS232 c
(gần như) Lập trình viên MIDI SysEx CC đa năng (và Trình tự lập trình tự ): 7 bước (có Hình ảnh)
(gần như) Lập trình viên MIDI SysEx CC đa năng (và Trình lập trình …): Vào giữa những năm tám mươi, các bộ sản xuất tổng hợp bắt đầu " ít hơn là tốt hơn " quá trình dẫn đến synths barebone. Điều này cho phép giảm chi phí về mặt sản xuất, nhưng làm cho quá trình vá lỗi trở nên thành công nếu không muốn nói là không thể sử dụng cuối cùng
Chương trình bổ sung đơn giản bằng ngôn ngữ lập trình Shakespeare: 18 bước
Chương trình bổ sung đơn giản trong ngôn ngữ lập trình Shakespeare: Ngôn ngữ lập trình Shakespeare (SPL) là một ví dụ về ngôn ngữ lập trình bí truyền, một ngôn ngữ có thể thú vị để tìm hiểu và vui khi sử dụng, nhưng không đặc biệt hữu ích trong các ứng dụng đời thực. SPL là một ngôn ngữ mà mã nguồn r
Hướng dẫn lập trình thú vị cho nhà thiết kế - Kiểm soát quy trình chương trình- Tuyên bố vòng lặp: 8 bước
Hướng dẫn lập trình thú vị cho nhà thiết kế - Điều khiển quy trình chương trình- Tuyên bố vòng lặp: Điều khiển quy trình chương trình- Tuyên bố vòng lặp Từ chương này, bạn sẽ tiếp xúc với một điểm kiến thức quan trọng và mạnh mẽ - Câu lệnh vòng lặp. Trước khi đọc chương này, nếu bạn muốn vẽ 10.000 vòng tròn trong chương trình, bạn chỉ có thể thực hiện với một
Tạo chương trình trong Visual Basic: Trình duyệt web: 9 bước
Tạo một chương trình trong Visual Basic: Trình duyệt web: Hướng dẫn này giải thích quá trình tạo một ứng dụng trình duyệt web đơn giản trong VB.NET Nó được thiết kế như một phần tiếp theo cho VB.NET có thể hướng dẫn đầu tiên của tôi: Tạo chương trình đầu tiên của bạn trong Visual Basic. Bạn nên đọc qua trang đó