สารบัญ:

State Machine บน Arduino - สัญญาณไฟจราจรคนเดินเท้า: 6 ขั้นตอน (พร้อมรูปภาพ)
State Machine บน Arduino - สัญญาณไฟจราจรคนเดินเท้า: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: State Machine บน Arduino - สัญญาณไฟจราจรคนเดินเท้า: 6 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: State Machine บน Arduino - สัญญาณไฟจราจรคนเดินเท้า: 6 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: traffic light จำลองการทำงาน Arduino output 2024, กรกฎาคม
Anonim
State Machine บน Arduino - สัญญาณไฟจราจรคนเดินเท้า
State Machine บน Arduino - สัญญาณไฟจราจรคนเดินเท้า

สวัสดี! ฉันจะแสดงวิธีตั้งโปรแกรมสัญญาณไฟจราจรสำหรับคนเดินเท้าสำหรับ 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 วัน หลังจากนั้น คุณต้องได้รับใบอนุญาต ซึ่งใช้ได้ฟรีสำหรับการใช้ที่ไม่ใช่เชิงพาณิชย์!

แนะนำ: