สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: ภาพรวมของอุปกรณ์อิเล็กทรอนิกส์
- ขั้นตอนที่ 2: อุปกรณ์อิเล็กทรอนิกส์
- ขั้นตอนที่ 3: INA3221 อินพุตแรงดัน/กระแส
- ขั้นตอนที่ 4: หน้าจอแสดงผล
- ขั้นตอนที่ 5: เชื่อมต่อเข้าด้วยกัน
- ขั้นตอนที่ 6: ลูกค้าเป้าหมายรวม
- ขั้นตอนที่ 7: รหัส Arduino
- ขั้นตอนที่ 8: การแก้ไข Arduino Libraries
- ขั้นตอนที่ 9: ภาพหน้าจอ
- ขั้นตอนที่ 10: กำลังโหลดรหัส Arduino
- ขั้นตอนที่ 11: สัมผัสสุดท้าย
วีดีโอ: Arduino Portable Workbench ตอนที่ 3: 11 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
หากคุณเคยดูส่วนที่ 1, 2 และ 2B มาแล้ว จนถึงตอนนี้ยังไม่มี Arduino มากนักในโครงการนี้ แต่มีเพียงไม่กี่สายของบอร์ด ฯลฯ ที่ไม่ได้เป็นเรื่องเกี่ยวกับและส่วนโครงสร้างพื้นฐานจะต้องถูกสร้างขึ้นก่อน ส่วนที่เหลือทำงาน
นี่คือรหัสอิเล็กทรอนิกส์และ Arduino คำแนะนำ 2B ก่อนหน้าแสดงรายการรายละเอียดของแหล่งจ่ายไฟ
ส่วนนี้ประกอบด้วยโต๊ะทำงานแบบพกพาที่มีคุณสมบัติดังต่อไปนี้
หน้าจอสัมผัส TFT ให้การแสดงผลที่ขับเคลื่อนโดย Arduino Mega เพื่อให้สิ่งต่อไปนี้
- 8 จอแสดงผลดิจิตอล, ปิด/เปิด/สั่น
- จอแสดงผล 4 แรงดันไฟฟ้า
- แสดงกระแส/แรงดัน 3 ตัว
- เครื่องวัดความต้านทาน E24 (เพราะอ่านแถบสีไม่ได้แล้ว)
มีอย่างอื่นที่ฉันจะเพิ่ม แต่นี่เป็นเป้าหมายเริ่มต้นของฉัน รหัส Arduino ยังแสดงรายการจอแสดงผลแบบอนุกรม, จอแสดงผล I2C, เครื่องวัดความจุ, สวิตช์ดิจิตอลและออสซิลโลสโคปซึ่งฉันจะเพิ่มเมื่อเวลาผ่านไป นอกจากนี้ ฉันยังไม่ได้ตัดสินใจว่ามันคุ้มค่าที่จะเพิ่มแหล่งจ่ายไฟ 3V3, แหล่งจ่ายไฟแบบแปรผัน หรือการตรวจสอบแรงดันไฟ/กระแสของแหล่งจ่ายไฟหรือไม่ จนถึงตอนนี้ถูกสร้างขึ้นโดยใช้ Mega แต่ฉันยังต้องการย้ายฟังก์ชั่นบางอย่างเพื่อแยกวงจรที่เข้าถึง I2C ไม่ว่าจะเป็นชิปเฉพาะหรือ Atmel 328 ที่ตั้งโปรแกรมไว้ซึ่งจะรองรับคอนโทรลเลอร์อื่นได้ง่ายขึ้น
เสบียง
ซ็อกเก็ตส่วนหัว 5 x 16 ทาง
ซ็อกเก็ตดูปองต์ 5 x 8 ทาง จริง ๆ แล้วทำจากซ็อกเก็ตบรรทัดเดียวยาว 40 ทางตัดตามความยาวที่ต้องการ
1 x 3.5 ILI9486 หน้าจอสัมผัส TFT
1 x Arduino Mega 2650
ส่วนประกอบส่วนบุคคล
ตามข้อความ ค่าของบางค่าเหล่านี้ไม่คงที่แน่นอน และถ้าคุณพลาดฟังก์ชันก็ไม่จำเป็นเลย:)
อินพุตดิจิตอล
ตัวต้านทาน 16 x 10K
อินพุตแบบอะนาล็อก
1 x TL074 a quad jfet opamp นี่คือสิ่งที่ฉันมีเป็นอะไหล่ สิ่งที่คล้ายกันจะทำ:)
ตัวต้านทาน 4 x 68K และ 4 x 430k ใช้เป็นตัวแบ่งแรงดันไฟฟ้า
4 x 1N4001 หรือเทียบเท่า
เครื่องวัดความต้านทาน
1 x TL072 a dual jfet opamp นี่คือสิ่งที่ฉันมีเป็นอะไหล่ สิ่งที่คล้ายกันจะทำ:)
1M0, 300k, 100k, 30k, 10k, 3k, 1k, 300R (หากค่าเหล่านี้เปลี่ยนแปลง จะต้องอัปเดตโค้ด Arduino)
ขั้นตอนที่ 1: ภาพรวมของอุปกรณ์อิเล็กทรอนิกส์
คอนโซลสีเทาสร้างขึ้นโดยฉันเมื่อ 30 ปีที่แล้วและยังคงใช้งานอยู่ แต่เวลาผ่านไปแล้ว มีแหล่งจ่ายไฟคู่ทางด้านซ้าย เครื่องขยายเสียงกลางที่อยู่ตรงกลาง พร้อมลำโพงภายใน และออสซิลเลเตอร์ทางด้านซ้าย ทุกวันนี้วงจรส่วนใหญ่ของฉันต้องการเพียงแหล่งจ่ายไฟและรางบวกเท่านั้น จำเป็นต้องมีบางสิ่งที่แตกต่างออกไป รวมถึงการติดฉลากที่ฉันขาดไม่ได้ ฉันก็ทำได้
ข้อกำหนดหลักสำหรับอุปกรณ์อิเล็กทรอนิกส์ของโครงการคือการจ่ายไฟให้กับวงจรใหม่โดยใช้ Arduino หรือ Raspberry PI ดังนั้น 5V จึงเป็นสิ่งจำเป็นเช่นเดียวกับซ็อกเก็ต USB สวิตช์ที่ส่องสว่างจะบอกฉันว่าเปิดเครื่องอยู่หรือไม่ และเมื่อทำการทดสอบ ฉันต้องสร้างวงจรเสริมขนาดเล็กเป็นประจำเพื่อแสดงสถานะชั่วคราว ฉันมีกล่องเมตรขนาดใหญ่ซึ่งใช้พื้นที่บนโต๊ะเป็นจำนวนมาก และที่สำคัญที่สุด ฉันต้องการจอแสดงผลที่สามารถอ่านได้ง่ายเมื่อสายตาของฉันเสื่อมลง บางอย่างที่มีตัวอักษรขนาดใหญ่ที่สว่างจ้า ดังนั้นฉันจึงต้องการจอแสดงผลดิจิตอล เครื่องวัดแรงดันไฟฟ้า เครื่องวัดกระแสไฟฟ้า และในกรณีนี้ มีความหรูหราเล็กน้อยในรูปแบบของเครื่องวัดความต้านทานเพื่อระบุตัวต้านทานซีรีส์ E24 อย่างรวดเร็ว โดยทั้งหมดอยู่ภายใน 15 ซม. จากเขียงหั่นขนมของโครงการและในเคสแบบพกพาขนาดกะทัดรัด
PSU หลักที่อธิบายในบทความก่อนหน้านี้ จ่ายไฟให้กับฝาโดยใช้สายแพ 40 ทาง ทำให้สามารถเชื่อมต่อทั้งสองได้ในขณะที่ปิดฝา มีอุปกรณ์จ่ายไฟ 5v และ 12V แบบสวิตช์สำหรับอุปกรณ์อิเล็กทรอนิกส์ของแผงควบคุมและเพื่อจัดหาเขียงหั่นขนม
อินพุตไฟและสัญญาณทั้งหมดมีให้โดยซ็อกเก็ตส่วนหัว PCB 2x8way ขนานกับซ็อกเก็ตดูปองต์ 8 ทาง นี่อาจจะเกินความสามารถ เขียงหั่นขนมส่วนใหญ่มีรางไฟ แต่มันง่ายที่จะทำ
บนปลั๊กไฟ ราง 0V หลักของแหล่งจ่ายไฟนั้นใช้ร่วมกันได้กับอุปกรณ์สิ้นเปลืองทั้งหมดและมีจำหน่าย ด้านบนนี้เป็นแหล่งจ่ายไฟ 5V ซึ่งเปิดอยู่บนยูนิตพื้นฐาน และด้านบนนี้เป็นอุปกรณ์จ่าย +12V และ -12V ที่ให้มาสองชุด ซึ่งขณะนี้ได้รับการแก้ไขแล้ว แม้ว่าฉันจะมีความคิดที่จะแฮ็คแหล่งจ่ายไฟเพื่อให้เป็นตัวแปรและให้แรงดันไฟ 3.3-20V อุปทานตัวแปร
ขั้นตอนที่ 2: อุปกรณ์อิเล็กทรอนิกส์
ฉันได้โพสต์ภาพพิมพ์หน้าจอของเลย์เอาต์เขียงหั่นขนม ลักษณะของวงจรเมื่อสร้างบนบอร์ดเมทริกซ์ แผนผังเป็น PDF และไฟล์ Fritzing ดั้งเดิม อุปกรณ์นี้ไม่ใช่อุปกรณ์อิเล็กทรอนิกส์ที่ซับซ้อนเป็นพิเศษ และมีไว้เพื่อติดตั้งตัวต้านทานจำกัด บัฟเฟอร์แอมพลิฟายเออร์ และการเชื่อมต่อพัดลมสำหรับบอร์ด Arduino แต่มีภาพหลายภาพให้เห็นความเชื่อมโยงต่างๆ มากมายให้ชัดเจนขึ้นอีกหน่อย การเดินสายส่วนใหญ่ประกอบขึ้นจากความยาวมาตรฐานของสายแพแบบดูปองท์แบบ pre-crimped ที่ประกอบขึ้นใหม่เป็นตัวเรือนแบบหลายทางเพื่อให้เสียบซ้ำได้ง่ายและเชื่อถือได้มากขึ้น
Arduino Mega 2650 ติดตั้งอยู่ที่ฝาพร้อมช่องเสียบ USB สำหรับตั้งโปรแกรม ขับเคลื่อนหน้าจอสัมผัส TFT ที่ใช้ในการแสดงผลและอินพุตทั้งหมด
มีอินพุตดิจิตอล 8 ช่องผ่านส่วนหัว PCB 2 x 8 ทาง และสถานะจะแสดงบนหน้าจอหากเลือกฟังก์ชันนั้น นี่คือหน้าจอเปิด/ปิดอย่างง่าย ปิดสีแดง เปิดสีเขียว ฉันอาจเพิ่มการสั่นเป็นการเปลี่ยนแปลงในอนาคต
อินพุตแรงดันไฟฟ้า 4 อินพุตยังมีให้เลือกใช้ผ่านส่วนหัวของ PCB และตัวแบ่งแรงดันไฟฟ้า แรงดันไฟฟ้าที่แสดงบนหน้าจอ แรงดันไฟฟ้าอินพุตแต่ละอันที่แผงด้านหน้า โดยอ้างอิงถึงพื้นทั่วไป จะถูกส่งผ่านไปยังตัวแบ่งแรงดันไฟฟ้าที่หารด้วย 7 จากนั้นบัฟเฟอร์โดยหนึ่งในสี่ของออปแอมป์ใน TL074 ที่กำหนดค่าเป็นแอมพลิฟายเออร์สำหรับแก้ไข เพื่อหลีกเลี่ยงอุบัติเหตุที่มีแรงดันไฟฟ้าติดลบ. เป็นการดีที่จะเพิ่มตัวบ่งชี้ขั้วในบางช่วง แต่ไม่ใช่รอบนี้ เอาต์พุตจาก op-amp แต่ละตัวคืออินพุต ADC ตัวใดตัวหนึ่งของ Arduino
ส่วนหัว PCB เพิ่มเติมแสดงการเชื่อมต่อทั้งแบบอนุกรมและ I2C สิ่งนี้ทำขึ้นเพื่อให้สามารถใช้งานคอนโซลแสดงผลแบบอนุกรมและฟังก์ชันการระบุ I2C พื้นฐานได้
อินพุตแรงดันไฟฟ้า/ดิจิตอลอาจพิสูจน์ได้ว่าไม่จำเป็นทั้งหมด ดังนั้นจึงอาจได้รับการกำหนดค่าใหม่เพื่อให้เอาต์พุตสวิตชิ่งดิจิตอล
Arduino จ่ายพลังงานให้กับอาร์เรย์ความต้านทานบนตัวแบ่งแรงดันไฟฟ้าเพื่อให้มีฟังก์ชันมิเตอร์วัดความต้านทาน เอาต์พุตของสิ่งนี้ถูกบัฟเฟอร์โดย op-amp (ครึ่ง TL072) ก่อนที่ Arduino จะอ่านและคำนวณความต้านทาน จุดประสงค์ของการดำเนินการนี้ไม่ใช่การวัดความต้านทานที่แม่นยำ แต่เพื่อระบุค่าซีรีส์ E24 อย่างรวดเร็ว แม้ว่าการสอบเทียบบางส่วนจะสามารถใช้เป็นเครื่องวัดพื้นฐานได้ การทำงานคือการตรวจจับเมื่อมีความต้านทานน้อยกว่า 9M9 บนสปริงสองตัวที่ติดตั้งบนแผงด้านหน้า แล้วเลือกสลับ 5V ไปที่ตัวต้านทานแต่ละตัวในอาเรย์ตัวแบ่งจนกว่าจะวัดค่าที่ใกล้เคียงที่สุดที่ 2.5V หรือตัวต้านทานสุดท้ายที่เลือก จากนั้นทำการคำนวณและเปรียบเทียบเพื่อกำหนดค่า E24 ที่ใกล้เคียงที่สุด 5V นั้นมาจากเอาต์พุตดิจิตอล 3-10 บน Arduino ซึ่งได้รับการกำหนดค่าใหม่เป็นอินพุตอิมพีแดนซ์สูงระหว่างการวัดแต่ละครั้งเพื่อลดข้อผิดพลาด หมุด Arduino D3-10 ถูกใช้โดยเจตนาเพื่อเพิ่มในอนาคตอาจเป็นเครื่องวัดความจุโดยใช้ความสามารถ PWM ของเอาต์พุตเหล่านี้ซึ่งอาจเป็นเพียงการเปลี่ยนแปลงซอฟต์แวร์เท่านั้น
บอร์ด INA3221 ที่ได้รับการดัดแปลงให้การวัดแรงดันและกระแสเพิ่มเติมผ่านอินเทอร์เฟซ I2C พร้อมอินพุตจากแผงด้านหน้า ทุกอย่างมีสายโดยใช้สายจัมเปอร์เพื่อให้การกำหนดฟังก์ชันใหม่ทำได้ง่ายในอนาคต
ขั้นตอนที่ 3: INA3221 อินพุตแรงดัน/กระแส
สิ่งนี้มีจุดประสงค์เพื่อแก้ไขอย่างรวดเร็วเพื่อให้การวัดแรงดัน/กระแสในกล่อง แต่กลับกลายเป็นว่าเมื่อใช้งานบนบอร์ด ฉันซื้อมานั้นมีจุดประสงค์เพื่อตรวจสอบการชาร์จแบตเตอรี่ ดังนั้นจึงต้องแก้ไขเพื่อให้มีการวัดอิสระสามแบบ หากเมื่อสร้างโครงการนี้ คุณสามารถจัดหาบอร์ด INA3221 ซึ่งใช้ชิปนี้ตามเอกสารข้อมูล ก็ไม่จำเป็น
เมื่อดูภาพจะต้องทำการตัดสามครั้งในร่องรอย PCB เพื่อแยกตัวต้านทานการวัด ต้องตัดแผ่นอิเล็กโทรดสำหรับตัวต้านทานทั้งสามนี้เพื่อแยกพวกมันออกจาก PCB ที่เหลือ จากนั้นตัวต้านทานจะเชื่อมต่อกับแผ่นอิเล็กโทรดโดยการบัดกรีสายไฟเพิ่มเติมเป็นสะพาน ฉันกำลังจัดทำเอกสารนี้เนื่องจากเป็นบอร์ดทั่วไปและอาจเป็นเพียงบอร์ดเดียวเท่านั้น
จากนั้นทำการเชื่อมต่อกับบอร์ดจากแผงด้านหน้าโดยใช้จัมเปอร์ข้ามตัวต้านทานการวัด
พลังงานสำหรับบอร์ดถูกนำมาจากพิน Arduino 5V เช่นเดียวกับกราวด์ โดยการเชื่อมต่อ I2C ไปที่ PCB อิเล็กทรอนิกส์
ขั้นตอนที่ 4: หน้าจอแสดงผล
นี่เป็นการซื้อจาก eBay และหาได้จากหลายแหล่งและเป็นจอแสดงผลที่ขับเคลื่อนด้วย ILI9486 ฉันพบว่ามันทำงานได้ดีที่สุดกับไลบรารี MCUFRIEND ของ David Prentice แต่ต้องมีการปรับเทียบก่อนใช้งาน ซึ่งเพียงแค่ต้องการให้ตัวอย่างไลบรารีตัวใดตัวหนึ่งที่ David จัดเตรียมไว้ให้ทำงานโดยเชื่อมต่อกับหน้าจอ ทำตามคำแนะนำบนหน้าจอและจดบันทึก พารามิเตอร์ที่แสดง แทรกลงในไฟล์โค้ด Arduino_Workstation_v01 หากต่างกัน
สำหรับโครงการนี้ หน้าจอสัมผัสเป็นสิ่งจำเป็น โดยจะหมุนไปรอบๆ ไม่มีสวิตช์เฉพาะ และสิ่งอำนวยความสะดวกในการเพิ่มเมนูและฟังก์ชันในอนาคตโดยไม่ต้องเดินสายไฟใหม่จำนวนมาก
ขั้นตอนที่ 5: เชื่อมต่อเข้าด้วยกัน
Arduino Mega ตั้งอยู่ที่ LHS ของฝาปิด โดยมีพอร์ต USB และพอร์ตจ่ายไฟที่สามารถเข้าถึงได้จากภายนอกเคส บน RHS ถัดจาก Arduino คืออุปกรณ์อิเล็กทรอนิกส์ที่ติดตั้งบนบอร์ดเมทริกซ์ และด้านบนนี้ติดตั้งบอร์ด INA3221 ที่ด้านหลังของฝา
นอกจากนี้ ที่ด้านหลังของฝาปิดที่ LHS เหนือ Arduino ยังเป็นบอร์ดเชื่อมต่อกราวด์ทั่วไปที่ต่อกราวด์ทั้งหมด
ลีดให้มากที่สุดเท่าที่เป็นไปได้ถูกรวมเข้าด้วยกันเป็นตัวเชื่อมต่อแบบหลายทาง สิ่งนี้ทำให้การต่อวงจรเข้าด้วยกันง่ายขึ้นและเชื่อถือได้ และการรองรับตัวเชื่อมต่อในตัวเรือนแบบหลายทางช่วยให้มีความต้านทานที่ดีขึ้นต่อการหลุดหลวม รายการของการรวมบัญชีเหล่านี้มีดังนี้
ตัวเชื่อมต่อทั้งหมดถูกเพิ่มเข้ามาในลักษณะที่สมเหตุสมผล ทำให้เข้าถึงได้มากที่สุดสำหรับการเชื่อมต่อด้วยนิ้วที่เงอะงะของฉัน โดยปล่อยให้การเชื่อมต่อที่แผงด้านหน้าไปจนสุด โดยการเชื่อมต่อจอแสดงผลขั้นสุดท้ายจะถูกส่งผ่านรูยึดเพื่อให้เสร็จเป็นครั้งสุดท้าย หน้าจอได้รับการแก้ไขด้วยขอบพิมพ์ 3 มิติ
ขั้นตอนที่ 6: ลูกค้าเป้าหมายรวม
- อินพุตแรงดันไฟฟ้าและความต้านทานไปยังพอร์ต Arduino ADC สายไฟยาว 20 ซม. ห้าตัวพร้อมขั้วต่อตัวผู้แต่ละตัวที่ปลายด้านหนึ่งรวมกันเป็นตัวเรือนหกทางพร้อมช่องว่างเพื่อรองรับช่องว่างในส่วนหัวของ Arduino
- สายเคเบิล 4 ทาง 10 ซม. จากตัวเรือนสี่ทางไปยังตัวเรือน 2 ทาง 2 ทางเพื่อเชื่อมต่อพินแรงดันไฟฟ้าที่แผงด้านหน้าเข้ากับแผงวงจร
- สายเคเบิล 8 ทาง 10 ซม. จากเฮดเดอร์ตัวผู้ 2x4 ทางไปยังเฮดเดอร์ตัวเมีย 8 ทาง
- สายเคเบิล 4 ทาง 10 ซม. จากตัวเรือนตัวเมีย 4 ทางไปยังตัวเรือนตัวเมีย 4 ทางเพื่อเชื่อมต่อ Serial และ I2C กับแผงด้านหน้า
- สายเคเบิล 4 ทาง 10 ซม. จากตัวเรือน 4 ทางถึงตัวเชื่อมต่อเดี่ยวสี่ตัวเพื่อเชื่อมต่อ INA3221 กับแผงด้านหน้า
- สายเคเบิล 4 ทาง 20 ซม. เพื่อเชื่อมต่อตัวเรือนตัวเมียสี่ทางกับตัวเรือนตัวผู้สี่ทางเพื่อต่อ Serial และ I2C จาก Arduino ไปยังแผงวงจรพัดลม
- สายเคเบิล 8 ทาง 10 ซม. จากเคสตัวเมีย 8 ทางไปยังเคสตัวเมีย 8 ทางเพื่อนำอินพุตดิจิตอลจากแผงด้านหน้าไปยังแผงวงจร
- สายเคเบิล 8 ทาง 10 ซม. เพื่อนำตัวเรือนตัวเมีย 8 ทางไปยังตัวเรือนตัวผู้ 3 ทางหนึ่งตัวและตัวเรือนตัวผู้ 5 ทางหนึ่งตัวเพื่อเชื่อมต่อตัวแบ่งความต้านทานกับแผงวงจร ตัวเรือนทั้งสองนี้ใช้เพื่อรองรับช่องว่างที่ไม่ได้มาตรฐานในส่วนหัวของบอร์ด Arduino
- สายเคเบิล 2 ทาง 20 ซม. เพื่อต่อตัวเรือนตัวเมีย 2 ทางกับขั้วต่อตัวผู้สองตัวสำหรับแหล่งจ่ายไฟ INA3221
- สายเคเบิล 2 ทาง 10 ซม. เพื่อนำตัวเรือนตัวเมีย 2 ทางไปยังตัวเรือนตัวเมียสองตัวเพื่อเชื่อมต่อการเชื่อมต่อจอภาพ INA3221 ตัวที่สามกับแผงด้านหน้า
- สายเคเบิล 2 ทาง 10 ซม. เพื่อนำตัวเรือนตัวเมีย 2 ทางไปยังตัวเรือนตัวเมีย 2 ทางเพื่อเชื่อมต่อ INA3221 กับการเชื่อมต่อ fanout I2C
ขั้นตอนที่ 7: รหัส Arduino
โปรเจ็กต์นี้มีพื้นฐานมาจาก Arduino Mega 2650 ด้วยเหตุผลง่ายๆ ว่าทำไมฉันจึงต้องการพอร์ต I/O จำนวนมากที่ทุ่มเทให้กับงานในรูปแบบที่เรียบง่าย ไลบรารีสำหรับหน้าจอสัมผัส TFT มีค่าเริ่มต้นเพื่อรองรับ Arduino Uno และต้องได้รับการแก้ไขเพื่อรองรับ Mega การแก้ไขไลบรารีได้รับการสนับสนุนโดยผู้สร้างโค้ด TFT ดั้งเดิม ซึ่งทำได้ง่ายและอธิบายไว้ในขั้นตอนต่อไป
การใช้หน้าจอสัมผัสเป็นพื้นฐานของส่วนนี้ของโปรเจ็กต์ แต่เนื่องจากจอแสดงผลที่ผู้ใช้ใช้อาจแตกต่างไปจากที่ฉันใช้ โค้ดจะวางฟังก์ชันเฉพาะของฮาร์ดแวร์ในรูทีนที่แยกจากกัน เพื่อให้สามารถระบุการปรับเปลี่ยนทั้งหมดที่จำเป็นได้
โค้ดเวอร์ชันที่ใช้งานได้จะรวมอยู่ที่นี่และจะได้รับการอัปเดต แต่การอัปเดตล่าสุดจะอยู่ใน github
ฟังก์ชันหลักของโค้ดจะหมุนรอบการแสดงผล แต่ละองค์ประกอบบนจอแสดงผลจะมีรายการในอาร์เรย์เดียวซึ่งมีประเภทองค์ประกอบ ซึ่งจะแสดงบนหน้าจอ สี และพารามิเตอร์เพิ่มเติม เช่น แหล่งอินพุต ภาพหน้าจอของอาร์เรย์นี้พร้อมความคิดเห็นแสดงไว้ด้านบน นอกจากนี้ยังมีช่องสำหรับควบคุมว่าจะให้แสดงบนหน้าจอหรือไม่ โดยการแก้ไขอาร์เรย์นี้ คุณสามารถเพิ่มคุณลักษณะใหม่หรือลบคุณลักษณะได้ รูทีน 'วนรอบ' ของโค้ดทำงานผ่านอาร์เรย์นี้อย่างต่อเนื่อง โดยประมวลผลองค์ประกอบที่มีสิทธิ์แต่ละรายการตามลำดับแล้วทำซ้ำ ปัจจุบันมี 6 องค์ประกอบที่แตกต่างกัน
องค์ประกอบเมนู - สิ่งเหล่านี้ไม่แสดงข้อมูล แต่เมื่อแตะต้องเรียกใช้งานรูทีนย่อยที่เกี่ยวข้องซึ่งระบุไว้ในพารามิเตอร์องค์ประกอบ
องค์ประกอบดิจิทัล - แสดงเป็นกล่องบนหน้าจอเป็นสีแดงหรือสีเขียว ขึ้นอยู่กับสถานะของพินอินพุตดิจิทัลที่เกี่ยวข้อง ตัวอย่างคอนโซลมีสายสำหรับ 8 พินดิจิตอล แต่สามารถเพิ่มหรือลดได้ตามต้องการ
องค์ประกอบอะนาล็อก - แสดงแรงดันไฟฟ้าโดยประมาณตามที่วัดได้จากพินอะนาล็อกที่เกี่ยวข้อง สี่ถูกกำหนดไว้แต่แรก
องค์ประกอบที่มีความแม่นยำ - แสดงอินพุตจากโมดูลมาตรวัดโวลต์/กระแสที่มีความแม่นยำภายนอก มีเพียงสามโมดูลเท่านั้น แต่สามารถเพิ่มโมดูลที่สองหรือสามได้
องค์ประกอบความต้านทาน - เป็นองค์ประกอบเดียวที่แสดงอินพุตจากเครื่องวัดความต้านทาน
การสัมผัส - นี่เป็นกิจวัตรเดียวที่จะดำเนินการเพื่อตรวจจับว่ามีการแตะหน้าจอหรือไม่ จากนั้นจึงตัดสินใจตามสิ่งที่สัมผัส เช่น หากเป็นรายการเมนู สิ่งที่นำมาแสดงต่อไปคืออะไร
หน้าจอมีโหมดสถานะสามโหมด ปกติ ขนาดใหญ่ และเต็มหน้าจอ และองค์ประกอบทั้งหมดจะเปลี่ยนการทำงานตามสถานะ สามโหมดสามารถเลือกได้จากเมนูโดยแตะที่องค์ประกอบและตัวเลือกเมนูที่เกี่ยวข้อง
โหมดปกติ - แสดงอินพุตดิจิตอล 8 ช่อง, อินพุตแรงดันไฟฟ้าอะนาล็อก 4 ช่อง, องค์ประกอบความแม่นยำ 3 รายการ, องค์ประกอบความต้านทาน และองค์ประกอบเมนู 4 รายการ การเลือก Normal จากเมนูจะทำให้การแสดงผลเข้าสู่โหมดนี้
โหมดขนาดใหญ่ - เลือกได้โดยแตะที่องค์ประกอบใดๆ บนหน้าจอ ตามด้วยขนาดใหญ่ เมื่อเลือกแล้ว ประเภทองค์ประกอบนั้นเป็นประเภทเดียวที่เลือกและองค์ประกอบประเภทนั้นจะได้รับการจัดเรียงใหม่เพื่อให้เต็มทั้งหน้าจอ
โหมดเต็มหน้าจอ - เลือกได้โดยแตะองค์ประกอบใดๆ บนหน้าจอ ตามด้วยโหมดเต็มหน้าจอ เมื่อเลือก องค์ประกอบดังกล่าวจะเป็นองค์ประกอบเดียวที่แสดงและได้รับการจัดเรียงใหม่เพื่อให้เต็มทั้งหน้าจอ ทำให้มองเห็นรายการนั้นได้สูงสุด
หากต้องการเพิ่มฟังก์ชันเพิ่มเติม จำเป็นต้องเพิ่มกิจวัตรต่อไปนี้
รูทีน 'วาด' ซึ่งเรียกเพื่อรับข้อมูลสำหรับองค์ประกอบนั้น เรียกรูทีนการอัพเดตหน้าจอที่เหมาะสม และลงทะเบียนข้อมูลการสัมผัสที่ส่งคืน
รูทีน 'ลอจิก' ซึ่งรับข้อมูลจากรูทีนการวาดและใช้รูทีนไดรเวอร์หน้าจอที่เหมาะสมเพื่อใส่ข้อมูลบนหน้าจอและส่งคืนข้อมูลการสัมผัสที่ถูกต้องสำหรับพื้นที่ที่วาดหน้าจอ
รูทีน 'การตั้งค่า' ซึ่งเรียกว่าเป็นส่วนหนึ่งของการตั้งค่า Arduino
สามารถรวมรูทีนอื่น ๆ ได้ แต่ไม่ควรมีการพึ่งพาอาศัยกันระหว่างโค้ดองค์ประกอบ หากองค์ประกอบไม่ได้เปิดใช้งาน โค้ดของมันก็ไม่ควรถูกดำเนินการ และโครงสร้างมัลติฟังก์ชั่นที่เรียบง่ายจะคงไว้ซึ่งความสมบูรณ์
ขั้นตอนที่ 8: การแก้ไข Arduino Libraries
จอแสดงผลที่ฉันใช้ทำงานได้ดีมากกับ Arduino Uno และไลบรารีพื้นฐานที่เขียนขึ้น แต่จะทำงานได้ช้าเมื่อโอนไปยัง Arduino Mega โดยตรง ในการขับเคลื่อนจอแสดงผลอย่างถูกต้อง ต้องใช้ดาต้าพินชุดอื่น และการเปลี่ยนแปลงการใช้งานนี้จะต้องตั้งค่าในไลบรารี นี่เป็นการเปลี่ยนแปลงง่ายๆ และตั้งใจโดยผู้เขียน รูปภาพเน้นการเปลี่ยนแปลงที่ทำ
ทั้งสองไฟล์ถูกเก็บไว้ในโฟลเดอร์ MCUFRIEND_kbv\utility ในชื่อ mcufriend_shield.h และ mcufriend_special.h การเปลี่ยนแปลงที่จำเป็นเป็นอันดับแรกในไฟล์ส่วนหัว 'shield' เพื่อให้แน่ใจว่าบรรทัดแรกอ่าน
#define USE_SPECIAL
เพื่อให้แน่ใจว่าโหลดไฟล์ส่วนหัว 'พิเศษ'
ไฟล์ส่วนหัว 'พิเศษ' ต้องได้รับการอัปเดตด้วยเพื่อให้แน่ใจว่าบรรทัด
#define USE_MEGA_8BIT_PROTOSHIELD
ไม่มีการแสดงความคิดเห็น
การเปลี่ยนแปลงทั้งสองนี้หมายความว่ารหัสแสดงผลสำหรับจอแสดงผลนี้ทำงานโดยใช้หมุด 20-29 บน Arduino Mega แทนที่จะเป็นค่าเริ่มต้น 3-10 บน Uno
ขั้นตอนที่ 9: ภาพหน้าจอ
ฉันได้ใส่ภาพหน้าจอที่นี่เพื่อให้ง่ายต่อการดูว่าคอนโซลควรทำอะไร ส่วนถัดไปหมายถึงการโหลดโค้ดลงใน Arduino
หน้าจอแรกแสดงหน้าจอ 'ปกติ' โดยมีเมนูอยู่ด้านบน การวัดแรงดันไฟฟ้าบน LHS การวัดแรงดันและกระแสบน RHS และสถานะพินดิจิทัลที่ด้านล่าง สีแดงสำหรับ 'เท็จ/ต่ำ' สีเขียวสำหรับ 'จริง/สูง '. สุดท้ายตรงกลางคือการวัดความต้านทาน
หน้าจอที่สองแสดงอินพุตดิจิตอลที่เปิดใช้งานในโหมดขนาดใหญ่ แต่ละอินพุตจะแสดงอย่างชัดเจน
หน้าจอที่สามแสดงอินพุตแรงดันไฟฟ้าในโหมดขนาดใหญ่
ขั้นตอนที่ 10: กำลังโหลดรหัส Arduino
มีการแนบรหัส แต่ดังที่ได้กล่าวไว้ก่อนหน้านี้จะถูกนำไปไว้ที่ github ในบางครั้งและเพิ่มตำแหน่งที่นี่ ไฟล์ซอร์สโค้ดหลักคือ Arduino_Workbench_v01.ino และรูทีนอื่นๆ คือการจัดเตรียมคุณสมบัติต่างๆ
หากไลบรารีได้รับการแก้ไขแล้วและ Arduino Mega2650 ได้รับการตั้งค่าเป็นแพลตฟอร์มเป้าหมายใน Arduino IDE แล้วโค้ดควรคอมไพล์ในครั้งแรก
ไลบรารีที่ต้องโหลดคือไลบรารี Adafruit GFX และ Touchscreen ซึ่งควรมีให้ใช้งานจากตัวจัดการไลบรารี Arduino สำเนาของ MCUFRIEND_kbv ที่สามารถดาวน์โหลดได้จาก github และสำหรับ INA3221 ไลบรารี SwitchDocLabs SDL_Arduino_INA3221 ก็สามารถดาวน์โหลดได้จาก github ด้วยเช่นกัน การค้นหาของ Google
ขั้นตอนที่ 11: สัมผัสสุดท้าย
แนวคิดคือการใช้มันสำหรับงานโครงการเพื่อทำแผงที่ถอดออกได้ซึ่งประกอบด้วยสลักเกลียวสำหรับบอร์ด Arduino และเขียงหั่นขนม ทั้งหมดติดกับฝาด้วยเวลโครเพื่อให้ถอดออกได้ และเพื่อให้บอร์ดต่างๆ สามารถบรรจุโปรเจ็กต์และ ที่กล่องสามารถนำมาใช้ซ้ำสำหรับโครงการต่าง ๆ ที่ทำงานพร้อมกัน
ฉันคาดหวังว่าสิ่งนี้จะเป็นแหล่งของแนวคิดบางอย่างเพื่อสร้างสิ่งที่แตกต่าง ดีขึ้น หรือทั้งสองอย่าง ฉันจะเพิ่มคุณสมบัติเพิ่มเติมที่ฉันได้กล่าวถึงและเพิ่มเข้าไป แต่ถ้าสิ่งนี้มีประโยชน์ โปรดทำสิ่งที่คุณต้องการและสนุกไปกับมัน หากมีปัญหาใด ๆ โปรดแจ้งให้เราทราบ
ตอนนี้ฉันกำลังจะเริ่มใช้งาน ฉันมีบางโครงการที่ต้องทำ!
แนะนำ:
BLE พลังงานต่ำมากง่าย ๆ ใน Arduino ตอนที่ 2 - เครื่องวัดอุณหภูมิ / ความชื้น - Rev 3: 7 ขั้นตอน
BLE พลังงานต่ำมากง่าย ๆ ใน Arduino ตอนที่ 2 - ตัวตรวจสอบอุณหภูมิ/ความชื้น - Rev 3: อัปเดต: 23 พฤศจิกายน 2020 - การเปลี่ยนแบตเตอรี่ AAA 2 ก้อนครั้งแรกตั้งแต่วันที่ 15 มกราคม 2019 เช่น 22 เดือนสำหรับ 2xAAA AlkalineUpdate: 7 เมษายน 2019 – Rev 3 ของ lp_BLE_TempHumidity เพิ่มการพล็อตวันที่/เวลา โดยใช้ pfodApp V3.0.362+ และการควบคุมปริมาณอัตโนมัติเมื่อ
Arduino-tomation ตอนที่ 5: LE TUNNEL DE CHAUFE: 4 ขั้นตอน
Arduino-tomation ตอนที่ 5: LE TUNNEL DE CHAUFE: 2 เดือนที่แล้ว ฉันตัดสินใจปรับปรุงระบบเล็กๆ ที่ลืมไปแล้วซึ่งเก็บไว้ใน Warhouse ของสถานที่ที่ฉันทำงาน ระบบนี้สร้างขึ้นเพื่อให้ความร้อนและอุ่นอุปกรณ์อิเล็กทรอนิกส์หรืออะไรก็ตามที่วางไว้บนอุณหภูมิสูงพิเศษ ต่อต้านสายพานลำเลียง ดังนั้นฉันจึงสร้าง
Arduino Workbench แบบพกพา ตอนที่ 1: 4 ขั้นตอน
Portable Arduino Workbench ส่วนที่ 1: การมีหลายโปรเจ็กต์ในเที่ยวบินหมายความว่าในไม่ช้าฉันจะไม่เป็นระเบียบและรูปภาพของโต๊ะทำงานของฉันแสดงให้เห็นว่าสามารถเกิดอะไรขึ้น ไม่ใช่แค่โต๊ะทำงานนี้ ฉันมีห้องโดยสารที่อยู่ในสภาพที่คล้ายกันและมีโรงงานไม้ แม้ว่าจะเป็นระเบียบเรียบร้อยกว่า แต่เครื่องมือไฟฟ้า
Arduino Workbench แบบพกพา ตอนที่ 2: 7 ขั้นตอน
Portable Arduino Workbench Part 2: ฉันได้สร้างกล่องเหล่านี้ไว้สองสามกล่องตามที่อธิบายไว้ในตอนที่ 1 แล้ว และถ้ากล่องสำหรับพกพาสิ่งของต่างๆ และเก็บโปรเจ็กต์ไว้ด้วยกันก็เพียงพอแล้ว กล่องเหล่านี้จะทำงานได้ดี ฉันต้องการที่จะสามารถเก็บโปรเจ็กต์ทั้งหมดไว้ในตัวมันเองและย้ายมันเป็น
Arduino Workbench แบบพกพา ตอนที่ 2B: 6 ขั้นตอน
Portable Arduino Workbench Part 2B: นี่เป็นทั้งความต่อเนื่องและการเปลี่ยนแปลงทิศทางจากสองคำสั่งก่อนหน้านี้ ฉันสร้างโครงหลักของกล่องและใช้งานได้ดี ฉันเพิ่ม psu แล้วมันก็ใช้ได้ แต่จากนั้นฉันก็ลองใส่วงจรที่ฉันสร้างไว้ในส่วนที่เหลือ