สารบัญ:
- ขั้นตอนที่ 1: สิ่งที่คุณต้องการ
- ขั้นตอนที่ 2: แผงสัมผัสแบบ Resistive 5 สายคืออะไร?
- ขั้นตอนที่ 3: การเดินสายไฟ
- ขั้นตอนที่ 4: การพัฒนาซอฟต์แวร์
- ขั้นตอนที่ 5: สถานะเครื่องกะพริบ
- ขั้นตอนที่ 6: ปุ่ม Blink
- ขั้นตอนที่ 7: การสื่อสารแบบอนุกรม
- ขั้นตอนที่ 8: การอ่านพิกัด
- ขั้นตอนที่ 9: ทำความสะอาด
- ขั้นตอนที่ 10: ความคิดสุดท้าย
วีดีโอ: 5-Wire Resistive Touch Sensor: 10 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:06
สวัสดีสวัสดี!
ฉันได้ทำงานในไซต์นี้มาระยะหนึ่งแล้ว และดูเหมือนว่าจะมีการเปลี่ยนแปลงหลายอย่าง! ในที่สุดฉันก็พร้อมที่จะกลับมาอยู่หลังพวงมาลัยสำหรับโครงการอื่นแล้ว และฉันคิดว่าถึงเวลาแล้วที่จะเปลี่ยนแปลงสิ่งต่างๆ ด้วยตัวเอง!
ฉันเคยนึกถึงโปรเจ็กต์ที่อิงจาก Plate and Ball ของ 271828 มาบ้างแล้ว แต่ฉันยังต้องเรียนรู้เกี่ยวกับเซ็นเซอร์และทฤษฎีการควบคุมอีกมากก่อนที่จะเสร็จ ฉันคิดว่าตราบใดที่ฉันเรียนรู้สิ่งหนึ่งหรือสองสิ่ง ฉันอาจจะพาพวกคุณไปด้วย!
ด้วยเหตุนี้ เป้าหมายของฉันสำหรับบทช่วยสอนเหล่านี้จะเป็นการผสมผสานระหว่างบทช่วยสอนที่ขัดเกลากว่าของฉัน กับบันทึกสำหรับโปรเจ็กต์เอง บทช่วยสอนแต่ละรายการจะเป็นขั้นตอนเดียวในการเดินทางนั้น และจะรวมรายละเอียดที่ฉันได้มองข้ามไปในอดีต เช่น การพัฒนาโค้ด (แทนที่จะเป็นเพียงโค้ดที่เสร็จสมบูรณ์) และขั้นตอนที่ผิดพลาดที่ฉันดำเนินการไป
ฉันตื่นเต้นมากสำหรับโปรเจ็กต์ใหม่นี้ และฉันก็ตื่นเต้นมากที่จะได้เห็นว่ามันทำงานได้ดีแค่ไหน!
วันนี้เราจะมาทำความรู้จักกับแผงสัมผัสแบบ 5-Wire ที่ใช้งานกับ DP-32 กัน
มาเริ่มกันเลย!
ขั้นตอนที่ 1: สิ่งที่คุณต้องการ
เนื่องจากบทช่วยสอนนี้เกี่ยวกับการทำให้เซ็นเซอร์ตัวเดียวทำงาน คุณจึงไม่ต้องการอะไรมากไปกว่าไมโครคอนโทรลเลอร์และแผงสัมผัส
-
ไมโครคอนโทรลเลอร์
ฉันใช้ DP32 กับ bread-board ในตัว เพราะมันทำให้การสร้างต้นแบบเป็นเรื่องง่ายอย่างเหลือเชื่อ
-
สายไฟและสายเคเบิลต่างๆ
ฉันสามารถใช้สายแพในตัวของแผงสัมผัสได้ แต่ถ้าฉีกขาดแสดงว่าทั้งแผงไม่มีประโยชน์ ฉันใช้สายเคเบิล 6 สายเพื่อลดความเครียดของสายเคเบิลในตัว
-
แผงสัมผัสตัวต้านทานแบบ 5 สายที่มีขนาดเท่ากัน!
ฉันมีแผงสัมผัสตัวต้านทานแบบ 4 สาย แต่สายแพสำหรับมันพัง
และนั่นแหล่ะ!
ขั้นตอนที่ 2: แผงสัมผัสแบบ Resistive 5 สายคืออะไร?
หากคุณได้อ่านบทแนะนำเกี่ยวกับแผงสัมผัสแบบ 4 สายของฉัน คุณจะคุ้นเคยกับแนวคิดทั่วไปของเซ็นเซอร์สัมผัสแบบต้านทาน แต่แผงแบบ 5 สายและแผงแบบ 4 สายทำงานแตกต่างกันเล็กน้อย
ฉันชอบแผงนี้เพราะคุณสามารถเห็นเส้นลวดทั้งหมด ทำให้มองเห็นได้ง่ายว่าทำอะไร ในภาพแรก ฉันได้ระบายสีแต่ละรอยแตกต่างกัน คุณอาจเห็นว่าสายไฟสี่เส้น (ชมพู เหลือง ส้ม และม่วง) แต่ละเส้นไปอยู่ที่มุมใดมุมหนึ่งจากสี่มุม สายกลาง (สีแดง) ไปที่แผงเซ็นเซอร์แบบยืดหยุ่น
ในรูปที่สอง เราได้ตั้งค่าสายไฟสองในสี่สาย (บนขวาและล่างขวา) เป็นไฟฟ้าแรงสูง (แสดงเป็นสีแดง) ในขณะที่อีกสองสาย (บนซ้ายและล่างซ้าย) ตั้งค่าไว้ที่ระดับต่ำ แรงดันไฟฟ้า (แสดงเป็นสีน้ำเงิน) สิ่งนี้จะสร้างการไล่ระดับแรงดันไฟฟ้าทั่วทั้งแผง ในกรณีนี้ การไล่ระดับสีไปตามแกน X ดังนั้นแรงดันไฟฟ้าที่สูงกว่าแสดงถึงตำแหน่งที่สูงขึ้นตามแกน X
เมื่อเราแตะนิ้วของเรากับแผงควบคุม นั่นจะเป็นการกดเซ็นเซอร์ที่ยืดหยุ่น และเชื่อมต่อกับที่ใดที่หนึ่งตามการไล่ระดับแกน X เซ็นเซอร์วัดแรงดันไฟฟ้าบนไมโครคอนโทรลเลอร์ของเราสามารถตรวจจับแรงดันไฟฟ้านี้ และบอกคุณได้ว่านิ้วของคุณสัมผัสที่แกน X ที่ใด!
ในภาพที่สาม คุณจะเห็นว่าการกำหนดค่าเปลี่ยนแปลงอย่างไรเพื่อให้เราสัมผัสได้ตามแนวแกน Y ด้วยวิธีนี้ เราสามารถบอกได้ว่านิ้วของเราแตะตรงไหนในอวกาศ 2 มิติ!
ขั้นตอนที่ 3: การเดินสายไฟ
ดังที่คุณเห็นในภาพด้านบน ฉันได้เชื่อมต่อมุมทั้งสี่ของฉันเข้ากับพินเอาต์พุตดิจิทัลของตัวเองแล้ว ที่จะให้ฉันตั้งค่าแต่ละรายการให้สูงหรือต่ำ พินเซ็นเซอร์ของฉันเชื่อมต่อกับพินอินพุตแบบอะนาล็อก สิ่งที่ดีเกี่ยวกับหน้าจอสัมผัสแบบ 5 สาย ซึ่งต่างจากแบบ 4 สายคือ คุณต้องการพินอนาล็อกเพียงอันเดียว ในขณะที่ 4 สายจะต้องใช้ 2 สาย
แน่นอนว่าการเดินสายของคุณอาจแตกต่างกัน แต่การเดินสายของฉันมีดังนี้:
อะนาล็อก 0 (พิน 6) เชื่อมต่อกับเซ็นเซอร์ (พินกลาง)
Digital 3 เชื่อมต่อกับ Top-Right (ขาบนสุด)
ดิจิตอล 2 เชื่อมต่อกับซ้ายบน (ขาที่สองบนสุด)
ดิจิตอล 1 เชื่อมต่อกับล่างซ้าย (ขาที่สองล่างสุด)
Digital 0 เชื่อมต่อกับ Bottom-Right (ขาล่างสุด)
เป็นที่น่าสังเกตว่าฉันใช้สายเคเบิล 6 สายเพื่อเชื่อมต่อระหว่างไมโครคอนโทรลเลอร์กับแผงควบคุม ฉันปล่อยพินบนสุดของสายเคเบิลนี้โดยไม่ได้เชื่อมต่อ
ขั้นตอนที่ 4: การพัฒนาซอฟต์แวร์
ในอดีต ฉันมักจะวางไฟล์ซอฟต์แวร์ที่สมบูรณ์ไว้ให้คุณใช้ บางทีอาจสรุปคร่าวๆ เกี่ยวกับทุกสิ่งที่ทำ ฉันไม่ชอบสิ่งนั้น ฉันต้องการให้ชุดนี้เกี่ยวกับโครงการที่กำลังพัฒนา และในตอนท้ายฉันจะรวมการพัฒนาจริงของซอฟต์แวร์นี้ตั้งแต่ต้นจนจบ
ตามปกติฉันจะใช้ Arduino IDE กับ Digilent core แต่ละส่วนจะประกอบด้วยไฟล์โค้ด ภาพหน้าจอ ตลอดจนคำอธิบายของส่วนเพิ่มเติมและสิ่งที่เราพยายามทำให้สำเร็จ
สำหรับตอนนี้ ฉันกำลังเริ่มต้นด้วยโปรแกรมการกะพริบแบบดีเลย์แบบง่าย ๆ เหมือนกับที่คุณพบในโฟลเดอร์ตัวอย่าง หากคุณอ่านส่วนหัวยาวๆ ที่ฉันเขียน คุณจะเห็นว่าแต่ละขั้นตอนในกระบวนการนี้จะปรับเปลี่ยนโปรแกรมเพื่อให้เข้าใกล้เป้าหมายสุดท้ายของเรามากขึ้น
ขั้นตอนที่ 5: สถานะเครื่องกะพริบ
การย้ายครั้งแรกของฉันคือเปลี่ยนฟังก์ชันการกะพริบจากฟังก์ชัน "delay()" เป็นเครื่องสถานะ
สำหรับผู้ที่ไม่เคยสลับคำสั่ง จะทำงานคล้ายกับคำสั่ง if อันนี้ (ในกล่องสีส้ม) ทดสอบตัวแปร "state" ของเรา (ซึ่งเริ่มต้นที่ 0) จากนั้นข้ามไปที่กรณีสำหรับสถานะปัจจุบันของเรา คุณจะเห็นว่ากรณีที่ 0 และ 2 มีหน้าที่ในการเปิดและปิด LED (ตามลำดับ) ในขณะที่กรณีที่ 1 และ 3 รับผิดชอบในการรอระหว่างสวิตช์
ขั้นตอนที่ 6: ปุ่ม Blink
ต่อไป ฉันต้องการใช้ปุ่มนี้เพื่อกะพริบไฟ แทนที่จะทำให้สิ่งนี้ซับซ้อนเกินไป ฉันเพียงแค่ย้ายสถานะทั้งหมดลงหนึ่งสถานะ (สถานะ 0 กลายเป็นสถานะ 1 เป็นต้น) เมื่อทำเช่นนี้ ให้ระมัดระวังในการเพิ่มสถานะการออกและสถานะเอง (ดูรูปที่ 3)
ฉันยังลบสถานะ "รอ" ที่สองด้วย นั่นหมายความว่าปุ่มจะเปิดไฟเป็นเวลาหนึ่งวินาที และคุณสามารถกดปุ่มอีกครั้งทันทีหลังจากที่ปิด
เป็นที่น่าสังเกตว่าระบบนี้จะดีบักปุ่มให้เราโดยอัตโนมัติ เนื่องจากเราต้องรอจนกว่าไฟ LED จะดับก่อนที่จะกลับสู่สถานะ 0 ซึ่งปุ่มสามารถกระตุ้นวงจรได้อีกครั้ง
ขั้นตอนที่ 7: การสื่อสารแบบอนุกรม
การอัปเดตนี้มีขนาดเล็กมาก ทั้งหมดที่ฉันต้องการทำคือสร้างการเชื่อมต่อแบบอนุกรมและส่งข้อความ ในภาพแรก คุณจะเห็นว่าฉันเริ่ม Serial ในฟังก์ชัน setup() ภายในเครื่องของรัฐ ฉันได้เพิ่มบรรทัดในสถานะ 1 และ 3 ที่จะส่งข้อความอย่างง่ายไปยังคอมพิวเตอร์ผ่านซีเรียล
ขั้นตอนที่ 8: การอ่านพิกัด
เป็นเรื่องดีที่ขั้นตอนสุดท้ายนั้นง่าย เพราะขั้นตอนนี้ดูแย่มาก
ในการเริ่มต้น ฉันได้เพิ่มตัวแปรสำหรับแผงสัมผัสของเรา รวมถึงตัวแปรเวลาเฉพาะบางตัวสำหรับทั้งแผงสัมผัสและปุ่มของเรา คุณจะเห็นว่าทำไมในอีกสักครู่
ฉันได้เขียน state-machine ใหม่ทั้งหมดแล้ว การดูโค้ดค่อนข้างสับสน ดังนั้นฉันจึงรวมบล็อกไดอะแกรมที่ควรแสดงสิ่งที่ทำเสร็จแล้ว
สิ่งที่ควรทราบ: ขณะนี้มี "รอ" อยู่สามขั้นตอน หนึ่งรายการสำหรับการกำหนดค่าแผงสัมผัสแต่ละรายการ เพื่อให้แรงดันไฟฟ้าคงที่ก่อนทำการวัด และอีกรายการหนึ่งเพื่อให้ปุ่มมีเวลาดีดกลับอย่างเหมาะสม ขั้นตอนการรอเหล่านี้เป็นเหตุผลที่ฉันต้องการให้ทั้งปุ่มและแผงสัมผัสมีตัวแปรเวลาเป็นของตัวเอง
หมายเหตุ: ค่าคงที่ DEBOUNCE_TIME อาจต่ำเล็กน้อย รู้สึกอิสระที่จะเพิ่มมัน
ขั้นตอนที่ 9: ทำความสะอาด
เรามาถึงโค้ดเวอร์ชันสุดท้ายของโปรเจ็กต์นี้แล้ว!
ในการเริ่มต้น ฉันได้เพิ่มฟังก์ชันที่เรียกว่า loop_diff() เพื่อคำนวณเวลาที่ผ่านไป นาฬิกาภายในสำหรับ DP32 เป็นแบบ unsigned long และถึงแม้จะไม่น่าเป็นไปได้อย่างยิ่ง แต่ก็มีความเป็นไปได้ที่นาฬิกาอาจวนซ้ำในบางครั้งระหว่างรันไทม์ของโค้ดนี้* ในกรณีนั้น เพียงแค่ลบเวลาปัจจุบันออกจากเวลาที่บันทึกไว้ใน btn_time หรือ panel_time จะทำให้เราได้รับสิ่งแปลก ๆ ดังนั้นฉันจึงเขียน loop_diff() เพื่อตรวจจับเมื่อเกิดลูปและทำงานตามนั้น
ฉันยังทำความสะอาดเล็กน้อย ฉันได้ลบตัวแปร "state_time" ที่ไม่ได้ใช้แล้ว ฉันได้เปลี่ยนจากแท็ก LED_BUILTIN (ซึ่งเป็นมาตรฐาน Arduino) เป็นแท็ก PIN_LED1 (ซึ่งเป็นมาตรฐานสำหรับ chipKit และ DP32) ฉันได้ลบข้อความทั้งหมดผ่าน Serial เกี่ยวกับการเริ่มและสิ้นสุดกระบวนการ ซึ่งทำให้ข้อมูลของเราผ่าน Serial สะอาดขึ้นมาก
*ฉันคำนวณทางคณิตศาสตร์เมื่อหลายปีก่อน และฉันคิดว่าสำหรับฟังก์ชัน millis() จะใช้เวลาราวหนึ่งสัปดาห์ของรันไทม์คงที่ ก่อนที่ตัวแปรจะวนซ้ำ
ขั้นตอนที่ 10: ความคิดสุดท้าย
และนั่นแหล่ะ!
หากคุณได้ปฏิบัติตาม ตอนนี้คุณควรมีแผงสัมผัสที่ใช้งานได้เชื่อมต่อกับไมโครคอนโทรลเลอร์ของคุณ! นี่เป็นโครงการขนาดเล็ก แต่เป็นส่วนหนึ่งของโครงการที่ใหญ่กว่า ฉันกำลังพยายามทำบางอย่างเช่น Plate and Ball ของ 271828 และฉันยังมีเวลาอีกมากก่อนที่จะเกิดเหตุการณ์นั้นขึ้น ฉันจะพยายามนำคุณไปสู่กระบวนการทั้งหมด และแต่ละส่วนควรเป็นโปรเจ็กต์เล็กๆ ของตัวเอง
นี่เป็นกระบวนการเรียนรู้สำหรับฉัน ดังนั้นอย่าลังเลที่จะแสดงความคิดเห็นและข้อเสนอแนะของคุณในความคิดเห็นด้านล่าง
ขอบคุณครับ แล้วเจอกันใหม่ครับ!
แนะนำ:
Touch Less Touch Switch: 11 ขั้นตอน
Touch Less Touch Switch: ในสถานการณ์ COVID-19 ที่กำลังเป็นอยู่ แนะนำอินเทอร์เฟซผู้ใช้แบบไม่ต้องสัมผัสสำหรับเครื่องสาธารณะเพื่อหลีกเลี่ยงการแพร่กระจายของโรคระบาดในชุมชน
ระบบอัตโนมัติภายในบ้านด้วย NodeMCU Touch Sensor LDR รีเลย์ควบคุมอุณหภูมิ: 16 ขั้นตอน
ระบบอัตโนมัติภายในบ้านด้วย NodeMCU Touch Sensor LDR Temperature Control Relay: ในโครงการ NodeMCU ที่ผ่านมาของฉัน ฉันได้ควบคุมเครื่องใช้ภายในบ้านสองเครื่องจาก Blynk App ฉันได้รับความคิดเห็นและข้อความมากมายให้อัปเกรดโปรเจ็กต์ด้วยการควบคุมด้วยตนเองและเพิ่มคุณสมบัติเพิ่มเติม ดังนั้นฉันจึงออกแบบกล่องขยายบ้านอัจฉริยะนี้ใน IoT
ต้นแบบ - อุปกรณ์เตือนภัยโดยใช้ Human Touch Sensor (KY-036): 4 ขั้นตอน
ต้นแบบ - อุปกรณ์เตือนภัยโดยใช้เซ็นเซอร์สัมผัสของมนุษย์ (KY-036): ในโครงการนี้ ฉันจะออกแบบอุปกรณ์เตือนภัยที่จะถูกกระตุ้นโดยการสัมผัส สำหรับโครงการนี้ คุณจะต้องใช้เซ็นเซอร์สัมผัสของมนุษย์ (KY-036) ให้ฉันให้เหลือบของโครงการนี้ อย่างที่คุณเห็นในภาพด้านบน เซ็นเซอร์สัมผัส
ปุ่มสัมผัสแบบ Resistive แบบเรืองแสงแบบไร้สาย: 5 ขั้นตอน
ปุ่มสัมผัสแบบ Resistive แบบเรืองแสงแบบไร้สาย: นี่เป็นโครงการง่ายๆ ที่มีแนวคิดในการสร้างปุ่มสัมผัสแบบ Resistive ที่รวม RGB Led เมื่อใดก็ตามที่แตะปุ่มนี้จะสว่างขึ้นและสามารถปรับแต่งสีของหลอดไฟได้ สามารถใช้เป็นปุ่มสัมผัสแบบเรืองแสงแบบพกพาผ่าน
Touch Sensor & Sound Sensor ควบคุมไฟ AC/DC: 5 ขั้นตอน
Touch Sensor & Sound Sensor ควบคุมไฟ AC/DC: นี่เป็นโครงการแรกของฉันและทำงานโดยใช้เซ็นเซอร์พื้นฐานสองตัว ตัวหนึ่งคือเซ็นเซอร์สัมผัส และตัวที่สองคือ เซ็นเซอร์เสียง เมื่อคุณกดทัชแพดบนเซ็นเซอร์สัมผัส ไฟ AC จะสลับ เปิด ถ้าคุณปล่อยมัน ไฟจะปิด และเหมือนเดิม