สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
ในส่วนแรกของโครงการนี้ เราได้สร้างฮาร์ดแวร์สำหรับต้นแบบบนเขียงหั่นขนม 2 อัน
และในส่วนนี้เราจะพูดถึงโค้ดว่ามันทำงานอย่างไรและทดสอบดู
อย่าลืมดูวิดีโอด้านบนสำหรับการตรวจสอบโค้ดทั้งหมดและการแสดงโค้ดการทำงาน
ขั้นตอนที่ 1: ทั้ง MASTER และ SLAVE ในรหัสเดียวกัน
รหัสอยู่ใน 2 ส่วน แต่อยู่ในไฟล์เดียวกัน ฉันใช้ #define และ #ifdef เพื่อกำหนดว่าโค้ดใดที่จะคอมไพล์หรือละเว้น เพื่อให้ฉันสามารถแยกโค้ดใดๆ ที่มีไว้สำหรับเขียงหั่นขนม MASTER และโค้ดที่ใช้สำหรับเขียงหั่นขนม SLAVE เท่านั้น
โดยทั่วไป หากพบdefine MASTER โค้ดใดๆ ที่อยู่ในบล็อคโค้ด MASTER จะถูกคอมไพล์ และโค้ดใดๆ นอกบล็อกนั้นจะถูกลบออกในเวลาคอมไพล์
#ifdef มาสเตอร์
//รหัสเฉพาะมาสเตอร์อยู่ในนี้
#อื่น
#define ทาส
// รหัสเฉพาะของ Slave อยู่ในนี้
#endif
ฉันยังใช้เทคนิคเดียวกันนี้ในการ #define SLAVE เมื่อรวบรวม MASTER ดังนั้นคุณจะต้องกังวลเกี่ยวกับการกำหนด MASTER หรือไม่เปิดใช้งาน SLAVE เพื่อกำหนด
ขั้นตอนที่ 2: โมดูล BLUETOOTH พูดคุยผ่านการอ่านและเขียนแบบอนุกรม
ในโครงการนี้ มีเพียงเขียงหั่นขนม SLAVE เท่านั้นที่คุยกับเขียงหั่นขนม MASTER MASTER ไม่เคยพูดตอบ แต่จะฟังและดำเนินการกับข้อมูลที่เข้ามาเท่านั้น
โมดูลพูดและฟังโดยใช้คลาส Serial ในตัวในระบบนิเวศการเข้ารหัส Arduino
โมดูล Bluetooth สื่อสารที่ 38400 บอด ดังนั้นเส้นทางรหัสทั้งสองจึงเริ่มต้นการสื่อสารแบบอนุกรมโดยใช้:
Serial.begin(38400);
และทาสใช้:
Serial.write (ข้อมูลที่นี่);
ในการพูดคุยกับ MASTER และ MASTER ใช้:
ข้อมูล = Serial.read();
เพื่อฟังซีเรียลสตรีมและอ่านเนื้อหาและเก็บไว้ในตัวแปร
ขั้นตอนที่ 3: ควบคุมการแข่งขัน
SLAVE จะบอก MASTER ว่าอยู่ในโหมด race more หรือ ready ผ่านปุ่มสีเขียวที่เชื่อมต่อกับไมโครคอนโทรลเลอร์ ในโหมดพร้อม เซ็นเซอร์ IR จะไม่ทำอะไรเลย และ MASTER จะแสดงเส้นประ 8 เส้นบนจอแสดงผลเพื่อระบุว่าอยู่ในโหมดพร้อม
เมื่อสเลฟบอกอาจารย์ว่าการแข่งขันกำลังจะเริ่มต้น สเลฟจะเริ่มสำรวจเซ็นเซอร์ IR ที่ด้านข้าง (จุดเริ่มต้นของสนามแข่ง) เพื่อให้รถผ่านด้านล่าง
เมื่อรถแต่ละคันผ่านใต้เซ็นเซอร์ IR แต่ละตัว มันจะส่ง A (รถ 1) หรือ B (รถ 2) ไปยัง MASTER
เมื่อ MASTER ได้รับ A หรือ B จะเปิดใช้งานตัวจับเวลาสำหรับรถยนต์คันนั้น ๆ จากนั้นรอให้รถผ่านใต้เซ็นเซอร์ IR ที่สอดคล้องกันที่เส้นชัย
จอแสดงผลจะอัปเดตทุก ๆ 50ms เพื่อแสดงเวลาปัจจุบันของรถแต่ละคันในหน่วยวินาทีโดยมีทศนิยม 2 ตำแหน่ง
เมื่อรถทั้งสองคันเข้าเส้นชัย MASTER จะตัดสินว่ารถคันใดเร็วที่สุดและกะพริบเวลานั้นบนหน้าจอเพื่อระบุผู้ชนะ
ขั้นตอนที่ 4: ส่วนที่เหลือของรหัส
รหัสที่เหลือเป็นเพียงรหัสยูทิลิตี้ที่ควบคุมการแสดงข้อมูลบนจอแสดงผล 8 หลักหรือจัดการตรรกะการกดปุ่มเป็นต้น
ในตอนท้ายของวิดีโอในส่วนแนะนำของโปรเจ็กต์นี้ ฉันจะแสดงตัวอย่างโค้ดที่ทำงานบนบอร์ดทดลอง 2 อัน ดังนั้นอย่าลืมลองดู!
คุณสามารถคว้ารหัสสำหรับโครงการนี้จาก repo github ของฉัน
ขั้นตอนที่ 5: อะไรต่อไป?
แค่นี้แหละ… ในตอนที่ 3 เราจะดูการย้ายส่วนประกอบออกจากเขียงหั่นขนมและไปยังสิ่งที่ถาวรกว่านี้… คอยติดตาม!
ฉันหวังว่าคุณจะสนุกกับโครงการนี้!
ติดตามฉันได้ที่:
www.youtube.com/c/unexpectedmaker
twitter.com/unexpectedmaker
www.facebook.com/unexpectedmaker
www.instagram.com/unexpectedmaker
www.tindie.com/stores/seonr/