สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-23 15:12
สวัสดี! ฉันจะแสดงวิธีตั้งโปรแกรมสัญญาณไฟจราจรสำหรับคนเดินเท้าสำหรับ Arduino ใน C ++ ด้วยเครื่องสถานะ จำกัด โดยใช้ YAKINDU Statechart Tools สิ่งนี้จะแสดงให้เห็นถึงพลังของเครื่องจักรของรัฐและสามารถใช้เป็นพิมพ์เขียวสำหรับโครงการต่อไปได้
เสบียง
คุณต้องการเพียง Arduino, ปุ่มกด, ไฟ LED, จัมเปอร์และตัวต้านทาน
ฮาร์ดแวร์
- 2x ปุ่มกด
- 2x สัญญาณไฟจราจรหรือคุณสามารถใช้ LED ที่มีตัวต้านทาน 220 โอห์ม
- ตัวต้านทาน 2x 10k Ohm
- เขียงหั่นขนม
- จัมเปอร์
- Arduino Uno/Mega (หรืออย่างอื่นที่มี GPIO อย่างน้อย 8 ตัว)
ซอฟต์แวร์
- YAKINDU Statechart Tools
- Eclipse C++ IDE สำหรับ Arduino
ขั้นตอนที่ 1: กำหนดวิธีการทำงาน: สัญญาณไฟจราจรคนเดินเท้า
อันดับแรก เราต้องระบุว่าสัญญาณไฟจราจรคนเดินเท้าควรทำงานอย่างไร ฉันพยายามสรุปประเด็นสำคัญ:
- ใช้สัญญาณไฟจราจรสองดวง - อันหนึ่งสำหรับรถยนต์และอีกอันสำหรับคนเดินเท้า
- สามารถเปิดสัญญาณไฟจราจรได้โดยใช้ปุ่ม
- คนเดินเท้าขอข้ามถนนได้โดยกดปุ่ม
- สัญญาณไฟจราจรที่ปิดไว้จะแสดงด้วยการกะพริบไฟ LED สีเหลืองทั้งสองดวง
- หลังจากเปิดเครื่องแล้ว สัญญาณไฟจราจรจะรอเป็นเวลา 10 วินาทีในเซฟโหมด
- หลังจากเซฟโหมด รถยนต์จะมีเฟสสีเขียวเสมอ จนกว่าคนเดินถนนจะเริ่มร้องขอ
- คำขอคนเดินเท้าสำหรับการข้ามจะแสดงโดยสลับ LED สีเหลือง
นอกจากนี้ยังมีเหตุการณ์บางครั้งขึ้นอยู่กับวิธีการทำงานของสัญญาณไฟจราจร
ขั้นตอนที่ 2: สร้างวงจร
มาเริ่มสร้างวงจรกันเลย ในตัวอย่างของฉัน ดังที่คุณเห็นในภาพตัวอย่าง ฉันเคยใช้ Arduino Mega 2560 แต่ Arduino อื่นๆ ทั้งหมดที่มี GPIO อย่างน้อยแปดตัวน่าจะใช้ได้ นอกจากนี้ ฉันยังซื้อสัญญาณไฟจราจร 5V ที่ Amazon เพียงค้นหา Arduino สัญญาณไฟจราจร มิฉะนั้น คุณสามารถใช้ไฟ LED ที่แตกต่างกันหกดวง นอกจากนี้ คุณต้องมีปุ่มกดสองปุ่มและตัวต้านทาน 10k Ohm สองตัว
ไฟ LED ด้านซ้ายสามดวงใช้สำหรับการจราจรของรถยนต์และไฟ LED ด้านขวาสามดวงสำหรับคนเดินเท้า โดยไฟ LED สีเหลืองสามารถระบุคำขอได้
ขั้นตอนที่ 3: การสร้างเครื่องสถานะ
อย่างที่คุณเห็นมีสองสถานะหลักที่มีสมาชิกแบบผสม - เปิดสถานะและปิดสถานะ คุณสามารถสลับระหว่างทั้งสองสถานะได้โดยใช้เหตุการณ์ onOff ซึ่งเชื่อมต่อกับปุ่มเปิด/ปิด ในสถานะเริ่มต้น สถานะปิด ไฟ LED สีเหลืองทั้งสองดวงจะเริ่มกะพริบทุกวินาที เมื่อเปิดสัญญาณไฟจราจรแล้ว ไฟจะเริ่มใน Safestate หลังจาก 10 วินาที พฤติกรรมทั่วไปของสัญญาณไฟจราจรจะได้รับการจัดการ ไฟ LED สีแดงและสีเหลืองจะเปิดขึ้นในสถานะ StreetPrepare และไฟจราจรจะเปลี่ยนเป็นสีเขียวหลังจากผ่านไปอีก 2 วินาที ต่อจากนี้ไปเครื่องรัฐจะรอรับเหตุการณ์ขอคนเดินถนนซึ่งต่อสายไปที่ปุ่มที่สอง หลังจากส่งกิจกรรมแล้ว คำขอจะถูกระบุโดยการสลับไฟ LED สีเหลืองทุกวินาทีในสถานะ PedWating 7 วินาทีต่อมา สัญญาณไฟจราจรจะเปลี่ยนเป็นสีเหลืองก่อนแล้วจึงเปลี่ยนเป็นสีแดง จนกว่าคนเดินถนนจะได้รับสัญญาณให้เข้าสู่สถานะคนเดินเท้าสีเขียว หลังจากนี้ PedestrianRed จะเปิดใช้งานและวนซ้ำ สิ่งนี้สามารถขัดจังหวะได้โดยการปิดไฟจราจรอีกครั้งเท่านั้น
ขั้นตอนที่ 4: เรียกใช้ตัวอย่าง
ขั้นตอนที่ 5: สร้างรหัส C ++
รหัส C ++ ที่สร้างขึ้นเป็นกรณีสลับแบบคลาสสิกเพื่อจัดการกับตรรกะของเครื่องสถานะ นี่เป็นเพียงข้อมูลโค้ดของลักษณะที่ปรากฏ:
เป็นโมฆะ TrafficLightCtrl:: runCycle () { clearOutEvents (); สำหรับ (stateConfVectorPosition = 0; stateConfVectorPosition < maxOrthogonalStates; stateConfVectorPosition ++) { สวิตช์ (stateConfVector [stateConfVectorPosition]) { กรณี main_region_on_r1_StreetGreen: { main_region_on_r1_StreetGreen);_react (หยุดพัก; } กรณี main_region_on_r1_PedWaiting_r1_waitOn: { main_region_on_r1_PedWaiting_r1_waitOn_react (จริง); หยุดพัก; } ค่าเริ่มต้น: แตก; } clearInEvents(); }
ขั้นตอนที่ 6: รับตัวอย่าง
ตัวอย่างทั้งหมดพร้อมที่จะคอมไพล์และรัน มันมาพร้อมกับ YAKINDU Statechart Tools ซึ่งฟรีสำหรับการใช้งานที่ไม่ใช่เชิงพาณิชย์ หลังจากดาวน์โหลด คุณสามารถนำเข้าตัวอย่างโดยตรงในเครื่องมือ:
ไฟล์ -> ใหม่ -> ตัวอย่าง -> ตัวอย่าง YAKINDU Statechart -> ถัดไป -> สัญญาณไฟจราจร (C ++) สำหรับ Arduino
> ที่นี่คุณสามารถดาวน์โหลด YAKINDU Statechart Tools <<
คุณสามารถเริ่มต้นด้วยการทดลองใช้ 30 วัน หลังจากนั้น คุณต้องได้รับใบอนุญาต ซึ่งใช้ได้ฟรีสำหรับการใช้ที่ไม่ใช่เชิงพาณิชย์!
แนะนำ:
Finite State Machine บน MSP430: 6 ขั้นตอน
Finite State Machine บน MSP430: ฉันจะแสดงวิธีตั้งโปรแกรม MSP430G2 Launchpad ด้วย Finite State Machines (FSM) โดยใช้ YAKINDU Statechart Tools โดยตรงใน Texas Instruments Code Composer Studio บทช่วยสอนนี้มีหกขั้นตอน: การติดตั้ง YAKINDU Statechart Tools เป็น
Arduino Otto Robot พร้อม State Machine: 4 ขั้นตอน
Arduino Otto Robot พร้อม State Machine: ภาพรวมโครงการในโครงการนี้ ฉันต้องการแสดงวิธีการเขียนโปรแกรม Otto Robot ซึ่งเป็นหุ่นยนต์ DIY จาก Arduino การใช้ YAKINDU Statechart Tools (ฟรีสำหรับที่ไม่ใช่เชิงพาณิชย์) เราสามารถใช้เครื่องของรัฐเพื่อสร้างแบบจำลองพฤติกรรมแบบกราฟิก
State Machine และ Multitasking บน Arduino ด้วย SPI Expanders: 3 ขั้นตอน
State Machine และ Multitasking บน Arduino ด้วย SPI Expanders: เมื่อสัปดาห์ที่แล้ว ฉันกำลังขอให้สร้างระบบเพื่อขับดอกไม้ไฟด้วย Arduino มันต้องการประมาณ 64 เอาต์พุตเพื่อควบคุมไฟ วิธีหนึ่งที่ทำได้คือการใช้ตัวขยาย IC มี 2 โซลูชันให้เลือก:- ตัวขยาย I2C แต่ต้องใช้อินเวอร์เตอร์เมื่อคุณ
Arduino PLC 32 I/O+State Machine+SCADA หรือ HMI: 8 ขั้นตอน
Arduino PLC 32 I/O+State Machine+SCADA หรือ HMI: หลายวิธีในการเขียนโปรแกรม ควบคุม และดูแลระบบอุตสาหกรรมด้วย Arduino
การควบคุมพีซีที่ง่ายมากด้วย 110 Vac โดยใช้ Crydom Solid-State Relay: 3 ขั้นตอน (พร้อมรูปภาพ)
การควบคุมพีซีที่ง่ายมากเพียง 110 Vac โดยใช้ Crydom Solid-State Relay: ฉันพร้อมที่จะลองใช้มือของฉันในการบัดกรีด้วยจานร้อน ดังนั้นฉันจึงต้องการวิธีควบคุม 110Vac จากพีซีของฉัน คำแนะนำนี้แสดงวิธีควบคุม 110Vac อย่างง่ายดายจากพอร์ตเอาต์พุตอนุกรมบนพีซี พอร์ตซีเรียลที่ฉันใช้คือพอร์ต USB