สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-23 15:12
คำแนะนำนี้มีรายละเอียดรหัสที่ใช้ในการสร้างโปรแกรมวาดภาพสำหรับหน้าจอ Arduino TFT โปรแกรมนี้ไม่เหมือนใครเพราะช่วยให้สามารถบันทึกภาพวาดลงในการ์ด SD และโหลดในภายหลังเพื่อทำการแก้ไขเพิ่มเติมได้!
เสบียง
- Arduino Uno - ต้นฉบับหรือโคลนที่เข้ากันได้
- หน้าจอสัมผัส TFT - ฉันใช้หน้าจอ Elegoo ซึ่งหมายความว่าฉันต้องการไดรเวอร์ Elegoo
- บอร์ดอ่าน Micro SD - ใช้เพื่อเก็บข้อมูลการวาดภาพลงในการ์ด SD หน้าจอของฉันมีตัวอ่านในตัวอยู่ใต้จอแสดงผล
- สไตลัส - หน้าจอของฉันมาพร้อมกับอันหนึ่ง เล็บก็ใช้ได้ดีเช่นกัน
- การ์ด Micro SD - ไม่เกิน 32GB เนื่องจากข้อ จำกัด ในการฟอร์แมต exFAT (Arduino สามารถอ่านการ์ดที่ฟอร์แมต FAT32 ได้ แต่ไม่ใช่ exFAT การ์ดขนาดใหญ่ส่วนใหญ่จะฟอร์แมตด้วย exFAT) นี่คือประเภทที่คุณจะใส่ลงในโทรศัพท์ที่มีพื้นที่เก็บข้อมูลที่ขยายได้
- คอมพิวเตอร์ที่มี Arduino IDE
- สายการเขียนโปรแกรม - USB A ถึง USB B Arduino ของฉันมาพร้อมกับหนึ่งอัน
- อะแดปเตอร์การ์ด SD - ใช้เพื่อแปลงการ์ด Micro SD เป็น SD ปกติเพื่อใส่ลงในช่องเสียบ SD หรือการ์ดที่เชื่อมต่อการ์ด SD กับช่องเสียบ USB
ขั้นตอนที่ 1: ฟอร์แมตการ์ด SD
- นำการ์ด Micro SD มาต่อเข้ากับคอมพิวเตอร์โดยใช้เครื่องอ่านการ์ด SD
- เปิด File Explorer และค้นหาการ์ด SD
- คลิกขวาและเลือกรูปแบบ
- ตั้งค่าตัวเลือกตามภาพหน้าจอ
- คลิกเริ่ม
- นำการ์ดออกเมื่อกระบวนการเสร็จสิ้น
หากคุณไม่ได้ใช้ Windows ให้ลองใช้ SD Formatter จาก SD Association
ขั้นตอนที่ 2: เตรียม Arduino
- กดตัวป้องกันหน้าจอของคุณลงบน Arduino ระวังในการเรียงพิน
- ใส่การ์ด SD ลงในเครื่องอ่านด้านล่างหน้าจอ
ขั้นตอนที่ 3: Arduino Sketch
แม้ว่ารายการชิ้นส่วนจะค่อนข้างเรียบง่าย แต่ก็มีโค้ดมากมาย ฉันจะทำทีละขั้นตอนที่นี่
#รวม
#รวม #รวม #รวม #รวม
Elegoo_GFX, _TFTLCD และ TouchScreen เป็นฮาร์ดแวร์เฉพาะทั้งหมด หากคุณใช้หน้าจออื่น ให้ใช้ไลบรารีที่ผู้ผลิตจัดหาให้
SPI และ SD ใช้เพื่อสื่อสารกับการ์ด SD SPI เป็นโปรโตคอลที่ใช้โดยตัวควบคุมการ์ด SD
#if กำหนด (_SAM3X8E_)#undef _FlashStringHelper::F(string_literal) #define F(string_literal) string_literal #endif
นี่เป็นเฉพาะฮาร์ดแวร์ด้วย
#define YP A3 // ต้องเป็นขาอนาล็อก#define XM A2 // ต้องเป็นขาอนาล็อก #define YM 9 #define XP 8
//แตะสำหรับ ILI9341 TP. ใหม่
#กำหนด TS_MINX 120 # กำหนด TS_MAXX 900 # กำหนด TS_MINY 70 # กำหนด TS_MAXY 920
#define CSPIN 10
#define LCD_CS A3
#define LCD_CD A2 #define LCD_WR A1 #define LCD_RD A0 #define LCD_RESET A4
แต่ละคำสั่ง #define เหล่านี้ทำให้ IDE แทนที่ชื่อด้วยค่า ที่นี่ พวกเขาตั้งค่าพิน LCD และ SD I/O
// กำหนดชื่อให้กับค่าสี 16 บิต:#define BLACK 0x0000 #define WHITE 0xFFFF #define RED 0xF800 #define BLUE 0x001F #define GREEN 0x07E0
นี่คือสีบางส่วนที่ใช้ในโค้ด #define-ing พวกเขาทำให้การอ่านโค้ดง่ายขึ้น
#define PENRADIUS 3
สิ่งนี้กำหนดขนาดของปากกาวาดภาพ
#กำหนดแรงดันต่ำ 10#กำหนดแรงดันสูงสุด 1000
// เพื่อความแม่นยำของแรงกดที่ดีกว่า เราจำเป็นต้องรู้ความต้านทาน
// ระหว่าง X+ และ X- ใช้มัลติมิเตอร์เพื่ออ่านค่า // สำหรับอันที่ฉันใช้อยู่ 300 โอห์มบนจาน X TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);
Elegoo_TFTLCD tft (LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
ข้อความเหล่านี้กำหนดความดันที่จำเป็นในการลงทะเบียนการสัมผัส เริ่มต้นฟังก์ชันการสัมผัส และเริ่มหน้าจอ
ที่จัดเก็บไฟล์ int storageSize; int stoX = 1; int stoY = 1;
เหล่านี้เป็นตัวแปรสำหรับส่วนการจัดเก็บของโปรแกรม
การตั้งค่าเป็นโมฆะ (เป็นโมฆะ) { Serial.begin (9600); Serial.println("โปรแกรมระบายสี");
tft.reset();
ตัวระบุ uint16_t = tft.readID();
ถ้า (ตัวระบุ == 0x0101) { ตัวระบุ = 0x9341; Serial.println(F("พบไดรเวอร์ LCD 0x9341")); }
//เริ่มหน้าจอ
tft.begin(ตัวระบุ); tft.setการหมุน(2);
โหมดพิน (13, เอาต์พุต);
// เริ่มการ์ด SD
ถ้า (!SD.begin (CSPIN)) { Serial.println ("การเริ่มต้น SD ล้มเหลว"); กลับ; } Serial.println ("SD เริ่มต้น");
//วาดพื้นหลัง
drawBack(); }
ฟังก์ชันการตั้งค่าจะเริ่มต้น Serial หากมี รีเซ็ตหน้าจอ ตรวจหาไดรเวอร์ TFT เริ่มหน้าจอ เริ่มการ์ด และเรียกใช้ฟังก์ชันเพื่อวาดพื้นหลัง
ฉันจะข้ามไปยังส่วนหลักของฟังก์ชันลูป อย่างอื่นใช้เพื่อขับเคลื่อนหน้าจอสัมผัสเท่านั้น
// ตรวจจับการกดหน้าจอและเก็บไว้ในตัวแปรหาก (p.z > MINPRESSURE && p.z < MAXPRESSURE) { //Scale p.x = map (p.x, TS_MINX, TS_MAXX, tft.width (), 0); p.y = (tft.height() - แผนที่ (p.y, TS_MINY, TS_MAXY, tft.height(), 0));
//วาด
if (py> 21) {// บันทึกข้อมูลลงใน SD card storage = SD.open ("storage.txt", FILE_WRITE); storage.print(หน้าx); storage.print(", "); storage.println(py); storage.close();
//จุดที่ตำแหน่งสัมผัส
tft.fillCircle(p.x, p.y, PENRADIUS, WHITE); }
//ปุ่มลบ
if ((หน้า 198) && (หน้าx < 219)) { deleteStorage(); }
//โหลดการทำงานของปุ่ม
ถ้า ((หน้า 219)) { loadStorage (); } }
หากตรวจพบการกด ให้ตั้งค่าตัวแปรสำหรับตำแหน่งของการกด
จากนั้น หากสื่ออยู่ในพื้นที่วาดภาพ ให้บันทึกจุดลงในการ์ด SD ใน storage.txt แล้ววาดวงกลมที่จุดที่กดด้วยขนาดและสีที่กำหนด
จากนั้น หากการกดอยู่ที่ตำแหน่งของปุ่มลบ ให้เรียกใช้ฟังก์ชันที่จะลบภาพวาดที่เก็บไว้ หากคุณกำลังใช้หน้าจอขนาดอื่น ให้ลองเล่นกับค่าตำแหน่งของปุ่ม
จากนั้น หากการกดอยู่ที่ตำแหน่งของปุ่มโหลด ให้เรียกใช้ฟังก์ชันที่โหลดภาพวาดที่เก็บไว้ หากคุณกำลังใช้หน้าจอขนาดอื่น ให้ลองเล่นกับค่าตำแหน่งของปุ่ม
ตอนนี้ฉันจะอธิบายฟังก์ชัน
เรียกใช้ฟังก์ชันแรกในการตั้งค่าเพื่อวาดพื้นหลังและปุ่ม
เป็นโมฆะ drawBackground () {// ตั้งค่าพื้นหลัง tft.fillScreen (BLACK);
//ระบายสีข้อความ
tft.setTextColor (สีขาว); tft.setTextSize(3); tft.setCursor(0, 0); tft.println("ระบายสี");
//ปุ่มโหลด
tft.fillRect (219, 0, 21, 21, สีเขียว);
//ล้างปุ่ม
tft.fillRect(198, 0, 21, 21, สีแดง); }
มันทำให้หน้าจอเป็นสีดำ เขียนคำว่า Paint และวาดสี่เหลี่ยมสีสำหรับปุ่มต่างๆ หากคุณกำลังใช้หน้าจอขนาดอื่น ให้ลองเล่นกับค่าตำแหน่งของปุ่ม
เป็นโมฆะ deleteStorage () {// ลบไฟล์ SD.remove ("storage.txt");
//ตั้งค่าพื้นหลัง
tft.fillScreen (สีดำ);
//ลบข้อความสำเร็จ
tft.setTextColor (สีขาว); tft.setTextSize(2); tft.setCursor(0, 0); tft.println("storage.txt ถูกลบ");
//ให้ผู้ใช้ได้อ่าน
ล่าช้า (2000);
//วาดรูปต่อ
drawBack(); }
ฟังก์ชัน deleteStorage ลบ storage.txt เติมหน้าจอสีดำ และแสดงข้อความแสดงความสำเร็จในการลบ จากนั้นเรียกใช้ฟังก์ชัน drawBackground เพื่อให้คุณสามารถเริ่มวาดภาพอย่างอื่นได้
เป็นโมฆะ loadStorage () {// หลีกเลี่ยงการทำซ้ำจากความล่าช้าของนิ้วช้า (250);
//ตรวจสอบไฟล์ที่จัดเก็บ
ถ้า (!SD.exists ("storage.txt")) { Serial.println ("ไม่มีไฟล์ storage.txt"); กลับ; }
//เปิดไฟล์ในโหมดอ่านอย่างเดียว
ที่เก็บข้อมูล = SD.open("storage.txt", FILE_READ);
//ในขณะที่มีข้อมูล
ในขณะที่ (stoY> 0) {// อัปเดตตัวแปรตำแหน่ง stoX = storage.parseInt (); stoY = storage.parseInt();
//วาดจากที่เก็บข้อมูล
tft.fillCircle (stoX, stoY, PENRADIUS, WHITE); } //ปิดไฟล์ storage.close(); }
สุดท้าย ฟังก์ชัน loadStorage จะตรวจสอบไฟล์ที่เก็บข้อมูล เปิดในโหมดอ่านอย่างเดียว จากนั้นวนซ้ำนี้:
ตราบใดที่มีข้อมูลมากขึ้น
- อัปเดตตัวแปรตำแหน่งด้วยข้อมูลที่แยกวิเคราะห์จาก storage.txt
- วาดวงกลมที่จุดโหลด
เมื่อการวนซ้ำเสร็จสิ้นและไม่มีข้อมูลใดๆ อีก จะเป็นการปิดไฟล์จัดเก็บ
รหัสสำหรับร่างนี้สามารถพบได้ด้านล่าง เพียงดาวน์โหลด เปิดใน Arduino แล้วอัปโหลดไปยังบอร์ดของคุณ!
ขั้นตอนที่ 4: การใช้โปรแกรมนี้
เพียงเสียบ Arduino ของคุณเข้ากับแหล่งพลังงาน - คอมพิวเตอร์ แบตเตอรี่ หูดที่ผนัง ฯลฯ แล้วเริ่มวาดภาพ หากต้องการลบภาพวาดและข้อมูลที่เก็บไว้ ให้กดปุ่มสีแดง หากต้องการโหลดภาพวาดจากที่เก็บข้อมูลและทำงานต่อ ให้คลิกปุ่มสีเขียว ด้วยวิธีนี้ คุณสามารถทำซ้ำได้หลายครั้งบนภาพวาด!
เป็นส่วนขยาย ให้ลองวาดภาพวาดบนคอมพิวเตอร์ของคุณ:
- เสียบการ์ด SD ที่มีข้อมูลเข้ากับคอมพิวเตอร์ของคุณ
- เปิด storage.txt ในโปรแกรมแก้ไขข้อความ/โค้ดที่คุณชื่นชอบ
- คัดลอกค่าทั้งหมดใน storage.txt
- ตามลิงค์นี้ไปยังโปรแกรมพล็อตจุด
- ลบจุดตัวอย่างสองจุดทางด้านซ้าย
- วางข้อมูลของคุณในตำแหน่งที่มีจุดตัวอย่าง
นี่เป็นวิธีที่เรียบร้อยในการแสดงภาพวาดของคุณ - อาจลองเปลี่ยนสีจุดบน Arduino หรือในพล็อตเตอร์!
ยินดีต้อนรับการปรับเปลี่ยนและฉันชอบที่จะเห็นคำแนะนำในความคิดเห็น ขอบคุณสำหรับการดูสิ่งนี้ และฉันหวังว่าคุณจะพบว่ามีประโยชน์ในการใช้งานในโครงการของคุณเอง!
แนะนำ:
การตรวจสอบคุณภาพอากาศอย่างง่ายด้วยจอแสดงผล TFT LCD-- Ameba Arduino: 3 ขั้นตอน
การตรวจสอบคุณภาพอากาศอย่างง่ายด้วยจอแสดงผล TFT LCD - Ameba Arduino: บทนำ ขณะนี้คนส่วนใหญ่อยู่บ้านเพื่อหลีกเลี่ยงการสัมผัสใกล้ชิดกับผู้ให้บริการไวรัส COVID-19 ที่อาจเกิดขึ้น คุณภาพอากาศกลายเป็นปัจจัยสำคัญต่อความเป็นอยู่ที่ดีของผู้คน โดยเฉพาะอย่างยิ่งในประเทศเขตร้อนที่ การใช้เครื่องปรับอากาศเป็นสิ่งจำเป็นในช่วงเด
Arduino TFT Graphics Shield: 4 ขั้นตอน (พร้อมรูปภาพ)
Arduino TFT Graphics Shield: a.articles {ขนาดตัวอักษร: 110.0%; font-weight: ตัวหนา; ตัวอักษรสไตล์: ตัวเอียง; ตกแต่งข้อความ: ไม่มี; background-color: red;} a.articles:hover {background-color: black;} คำแนะนำนี้จะอธิบายวิธีสร้างกราฟิกสีขนาด 240 x 320 พิกเซล (QVGA)
Arduino Flappy Bird - Arduino 2.4" TFT Touchscreen SPFD5408 โครงการเกมนก: 3 ขั้นตอน
Arduino Flappy Bird | Arduino 2.4" TFT Touchscreen SPFD5408 Bird Game Project: Flappy Bird เป็นเกมที่ได้รับความนิยมมากเกินไปในช่วงไม่กี่ปีที่ผ่านมา และหลายคนสร้างมันขึ้นมาในแบบของพวกเขาเอง ฉันเองก็สร้าง Flappy Bird เวอร์ชันของฉันด้วย Arduino และ 2.4" TFT ราคาถูก หน้าจอสัมผัส SPFD5408 เริ่มกันเลย
วิธีสร้างนาฬิกาเรียลไทม์โดยใช้ Arduino และจอแสดงผล TFT - Arduino Mega RTC พร้อมจอแสดงผล TFT ขนาด 3.5 นิ้ว: 4 ขั้นตอน
วิธีทำนาฬิกาเรียลไทม์โดยใช้ Arduino และจอแสดงผล TFT | Arduino Mega RTC พร้อมจอแสดงผล TFT ขนาด 3.5 นิ้ว: ไปที่ช่อง Youtube ของฉัน บทนำ: - ในโพสต์นี้ฉันจะสร้าง "นาฬิกาแบบเรียลไทม์" โดยใช้จอสัมผัส TFT ขนาด 3.5 นิ้ว, Arduino Mega โมดูล RTC 2560 และ DS3231….ก่อนเริ่ม…ตรวจสอบวิดีโอจากช่อง YouTube ของฉัน..หมายเหตุ:- หากคุณใช้ Arduin
โปรแกรมวาดภาพ VGA: 5 ขั้นตอน
โปรแกรมวาดภาพ VGA: โปรเจ็กต์โดย: Adam Klein, Ian Strachan, Brandon Slater โปรเจ็กต์ที่เราตั้งใจจะทำให้เสร็จคือการจัดเก็บ แยกวิเคราะห์ และแสดงข้อมูลจากเมาส์ USB ในรูปแบบของโปรแกรมระบายสี แนวคิดเบื้องหลังโครงการคือการสามารถเสียบเมาส์