สารบัญ:

L I G H T S: 5 ขั้นตอน
L I G H T S: 5 ขั้นตอน

วีดีโอ: L I G H T S: 5 ขั้นตอน

วีดีโอ: L I G H T S: 5 ขั้นตอน
วีดีโอ: วิชาชีววิทยา - ปฏิกิริยาแสง Light Reaction 2024, พฤศจิกายน
Anonim
L I G H T S
L I G H T S

จุดประสงค์ของโปรเจ็กต์สุดท้ายนี้คือการสร้างสิ่งที่จะเน้นไปที่ความยั่งยืนและนำแนวคิดการออกแบบดิจิทัลมาใช้ และเพื่อที่จะทำสิ่งนี้ ฉันได้ตัดสินใจออกแบบระบบประหยัดพลังงานที่ปรับขนาดได้โดยใช้ vhdl และสร้างขึ้นสำหรับบอร์ด Basy 3 (Artix-7 35T ซีรีส์). ปรับขนาดได้เนื่องจากสามารถใส่เซ็นเซอร์จำนวนเท่าใดก็ได้ในห้องหนึ่ง และสามารถติดตั้งระบบจำนวนเท่าใดก็ได้รอบๆ อาคารหรือบ้าน สิ่งที่ระบบนี้จะทำคือในทางทฤษฎีจะประหยัดเงินได้หลายพันดอลลาร์ในอาคารพาณิชย์และลดการใช้พลังงานในชุมชนที่อยู่อาศัยขนาดเล็กลงได้มากเป็นเปอร์เซ็นต์โดยการใช้ระบบที่เชื่อมต่อกันของไฟที่ควบคุมอย่างแข็งขันและแบบพาสซีฟ เครื่องตรวจจับการเคลื่อนไหว ตัวจับเวลาที่แสดงบนจอแสดงผลเจ็ดส่วน และ สวิตช์ควบคุม ตัวอย่างนี้เกี่ยวข้องกับระบบเดียวที่มีเครื่องตรวจจับการเคลื่อนไหวสามตัว สวิตช์หลัก สวิตช์แบบแมนนวล/ปกติ จอแสดงผลเจ็ดส่วนสี่ส่วน และไฟดวงเดียวที่ระบบควบคุม

ตัวอย่างเช่น ในห้องที่เลือก จะมีเครื่องตรวจจับการเคลื่อนไหวหลายตัว (ตัวอย่างการออกแบบนี้มีสามแบบ) และแต่ละตัวจะส่งสัญญาณ (1) หากตรวจพบการเคลื่อนไหว และ (0) หากไม่เป็นเช่นนั้น หากเครื่องตรวจจับความเคลื่อนไหวอย่างน้อยหนึ่งเครื่องตรวจพบการเคลื่อนไหว ไฟจะเปิดขึ้นหากยังไม่ได้เปิดไว้และจะติดค้างหากเปิดอยู่แล้ว เมื่อใดก็ตามที่เครื่องตรวจจับการเคลื่อนไหวทั้งหมดตรวจไม่พบสิ่งใด ตัวจับเวลาจะเริ่มนับถอยหลังตามระยะเวลาที่กำหนด (ปรับได้ในรหัส) และไฟจะสว่างขึ้นในขณะที่ตัวจับเวลานับถอยหลัง เมื่อตัวจับเวลานับถอยหลังเสร็จ ตัวจับเวลาจะหยุด และไฟจะดับลง หากตัวตรวจจับการเคลื่อนไหวอย่างน้อยหนึ่งตัวตรวจพบการเคลื่อนไหวในขณะที่ตัวจับเวลากำลังนับถอยหลัง ตัวจับเวลาจะหยุดและรีเซ็ต และหากอุปกรณ์ตรวจจับการเคลื่อนไหวอย่างน้อยหนึ่งตัวตรวจพบการเคลื่อนไหวในขณะที่ไฟดับ ไฟจะเปิดขึ้นทันที

ระบบนี้มีสองโหมด โหมดหนึ่งมีตัวจับเวลาตามที่ระบุไว้ข้างต้น และอีกโหมดหนึ่งมีสวิตช์ควบคุมไฟด้วยตนเอง (ไม่สนใจเซ็นเซอร์) มีสวิตช์หลักที่ช่วยให้ผู้ใช้เลือกโหมดที่ต้องการใช้โดยพิจารณาจากโหมดใดก็ได้ที่รู้สึกว่าจะช่วยประหยัดพลังงานโดยรวมได้มากขึ้น อดีต. ห้องเช่นโถงทางเดินอาจได้รับประโยชน์จากโหมดจับเวลาแบบพาสซีฟ - ผู้ใช้ไม่แน่ใจว่าผู้คนจะผ่านไปเมื่อใด แต่การเปิดและปิดไฟทุกครั้งที่เข้าและออกจะไม่สะดวกในขณะที่ห้องดังกล่าว เนื่องจากห้องนอนที่มีผู้ใช้คนเดียวน่าจะดำเนินการด้วยตนเองได้ดีกว่า และสวิตช์หลักจะมีประโยชน์ในกรณีเช่น หากบุคคลที่อาศัยอยู่ในห้องนอนต้องออกไปเป็นเวลานาน สวิตช์หลักก็สามารถปิดได้ และโหมดจับเวลาจะทำงานเพื่อประหยัดพลังงานอย่างมีประสิทธิภาพมากขึ้น

ดังนั้นในระบบนี้มีเครื่องสถานะสองเครื่อง เครื่องหนึ่งเป็นเครื่องสถานะหลัก และอีกเครื่องหนึ่งสำหรับเครื่องจับเวลาถอยหลัง เครื่องสถานะหลักมีห้าสถานะที่กำหนดไว้ดังนี้: 1. "ไฟติด ตรวจพบการเคลื่อนไหว" (id = 000), 2. "ไฟติด ตรวจไม่พบการเคลื่อนไหว" (id = 001), 3. "ปิดไฟ ไม่มีการเคลื่อนไหว ตรวจพบ" (id = 010), 4. "เปิดด้วยตนเอง" (id = 011) และ 5. "ปิดด้วยตนเอง" (id = 100) เครื่องสถานะหลักนี้มีอินพุตสี่ตัว: สวิตช์หลัก (ms), สวิตช์แบบแมนนวล/ปกติ (ns), สัญญาณที่สูงเมื่อสวิตช์อย่างน้อยหนึ่งตัวตรวจจับการเคลื่อนไหว และต่ำกว่านั้น (orx) และสัญญาณที่ สูงเมื่อจับเวลาเสร็จ และมีค่าต่ำเป็นอย่างอื่น (td) เครื่องสถานะหลักมีเอาต์พุตสองแบบ: ไฟ (ไฟ) และสัญญาณที่ระบุว่าเมื่อใดควรเปิดเครื่องนับเวลาถอยหลัง (ตัวจับเวลา) หรือ (t) (ใช้แทนกันได้)

เครื่องสถานะที่สอง ตัวจับเวลานับถอยหลัง มี 12 สถานะ: 10 ตัวมีรหัสที่เกี่ยวข้องกับหมายเลขที่เจ็ดส่วนกำลังแสดง- “seg 10” (id = 1010), “seg 9” (id = 1001), […], “seg 2” (id = 0010), “seg 1” (id = 0001) และอีกสองสถานะทั้งสองแสดงค่าศูนย์ แทนตัวจับเวลาที่ปิด- ดังนั้นจึงมีช่องว่างแรก "ว่าง 1" (id = 1111) และช่องว่างที่สอง "ว่าง 2" (id = 0000) ตัวจับเวลาถอยหลังมีอินพุตเดียว: ตัวจับเวลา (t) และเอาต์พุตสามตัว: ตัวเลขที่แสดงเป็นไบนารีที่มีสี่บิต (bin) และสัญญาณระบุว่าตัวจับเวลาเสร็จสิ้น (td)

ขั้นตอนที่ 1: ไดอะแกรมกล่องดำ

ไดอะแกรมกล่องดำ
ไดอะแกรมกล่องดำ

นี่คือภาพรวมของวิธีการทำงานของระบบทั้งหมด และอธิบายด้วยไดอะแกรมกล่องดำ

  • นาฬิกาใช้สำหรับนาฬิกาเครื่องสถานะหลักและตัวถอดรหัสเจ็ดส่วน นาฬิกาที่ช้าลงเป็นสิ่งจำเป็นสำหรับตัวนับลง ดังนั้นจึงมีโมดูลตัวแบ่งนาฬิกาที่รับอินพุตนาฬิกาและส่งออกนาฬิกาที่ช้าลงสำหรับตัวนับลง
  • ตัวแปรกลาง (orx) ในเสื้อคลุมจะผูกติดอยู่กับเซ็นเซอร์ตรวจจับความเคลื่อนไหว และจะสูงหากเซ็นเซอร์อย่างน้อยหนึ่งตัวตรวจพบบางสิ่ง และมีค่าต่ำ สมการบูลีนสำหรับสิ่งนั้นก็คือ orx = s(2) หรือ s(1) หรือ s(0)
  • fsm หลักจะควบคุมสถานะทั่วไปของระบบ ขึ้นอยู่กับอินพุต (orx, ms, ns, td) และเอาท์พุตสถานะปัจจุบันที่อยู่ใน (sm) ที่แสดงให้ง่ายขึ้นด้วยสัญญาณทั้งสองที่ใช้สำหรับ (ตัวจับเวลาและไฟ)

    • (ตัวจับเวลา) เป็นสัญญาณห่อหุ้มที่ส่งไปยังตัวนับลง fsm เป็นอินพุตและควบคุมโดยสถานะปัจจุบันของ fsm หลัก บ่งชี้ว่าเมื่อใดควรเปิดเครื่องจับเวลา
    • (ไฟ) เป็นสัญญาณห่อหุ้มใช้เพื่อควบคุมไฟ LED และควบคุมโดยสถานะปัจจุบันของ fsm หลัก
  • ตัวนับลง fsm ควบคุมสิ่งที่เจ็ดส่วนแสดงขึ้นอยู่กับอินพุต (ตัวจับเวลา) และส่งออกสถานะปัจจุบันที่อยู่ใน (sd) ที่แสดงให้ง่ายขึ้นด้วยสัญญาณทั้งสองที่ใช้สำหรับ (td และ bin)

    • (td) เป็นสัญญาณ wrapper ที่ส่งไปยัง fsm หลักเป็นอินพุตและถูกควบคุมโดยสถานะปัจจุบันของ fsm ตัวนับลง ทำหน้าที่เป็นสัญญาณป้อนกลับที่บ่งชี้เมื่อหมดเวลา
    • (bin) เป็นสัญญาณ wrapper สี่บิตที่ต่อกันด้วยสี่บิตของศูนย์ (“0000” & bin) และแปดบิตที่รวมกันจะถูกส่งไปยัง (q) สัญญาณ wrapper แปดบิตที่ส่งไปยังเจ็ด ตัวถอดรหัสเซ็กเมนต์ภายใต้ (ALU_VAL)
  • โมดูลเจ็ดส่วนนั้นเหมือนกับโมดูล Polylearn; อินพุตหลักใช้ตัวเลข 8 บิต (bin) ถึง (ALU_VAL) เพื่อแสดงบนจอแสดงผลเจ็ดส่วนที่แตกต่างกันสี่จอโดยใช้เอาต์พุต (SEGMENTS) กับสัญญาณ wrapper (seg) และ (DISP_EN) ไปยัง wrapper (disp_en)

    • เนื่องจากการแสดงเซกเมนต์ตั้งแต่สองรายการขึ้นไปไม่สามารถแสดงตัวเลขที่ต่างกันได้ในเวลาเดียวกัน จึงจำเป็นต้องมีนาฬิกาเพื่อหมุนเวียนผ่านสี่ sseg โดยแสดงตัวเลขที่เหมาะสมในแต่ละครั้งสำหรับการเปิดใช้งานแต่ละ sseg แยกกัน และการปั่นจักรยานอย่างรวดเร็วเพียงพอทำให้ ssegs ดูเหมือนจะเปิดพร้อมกัน
    • (เครื่องหมายและถูกต้อง) เป็นค่าคงที่ตลอดโปรแกรมนี้ ดังนั้น (เครื่องหมาย) จะถูกตั้งค่าต่ำอย่างถาวร และ (ถูกต้อง) จะถูกตั้งค่าสูงอย่างถาวร
    • (ALU_VAL) รับสัญญาณ wrapper (q) เป็นอินพุต ซึ่งแสดงถึงตัวเลขที่จะแสดงบนจอแสดงผลทั้งเจ็ดส่วนในรูปแบบไบนารี
    • เอาต์พุต (SEGMENTS) ถูกส่งไปยังสัญญาณ wrapper แปดบิต (seg) และ (DISP_EN) ไปยังสัญญาณ wrapper สี่บิต (disp_en)
  • นอกจากนี้ยังมีโมดูล D flip flop ที่ไม่ได้แสดงอย่างชัดเจนในไดอะแกรม แต่จำเป็นสำหรับเครื่องสองสถานะเป็นโมดูลย่อย และช่วยให้สถานะทรานซิชันแบบซิงโครนัส

    • (3) สิ่งเหล่านี้จำเป็นสำหรับ fsm หลักตั้งแต่ 2^(3) = 8 > 5 สถานะสำหรับการเข้ารหัส
    • (4) สิ่งเหล่านี้จำเป็นสำหรับตัวนับลง fsm เนื่องจาก 2^4 = 16 > 12 สถานะสำหรับการเข้ารหัส

ขั้นตอนที่ 2: ระบุเครื่องจักร

เครื่องรัฐ
เครื่องรัฐ

ในการออกแบบเครื่องจักรของรัฐทั้งสองอย่างถูกต้องนั้น จะต้องมีการกำหนดแต่ละสถานะให้ชัดเจนด้วยผลลัพธ์และสถานะที่เปลี่ยนไปตามปัจจัยการผลิตที่แตกต่างกัน

สถานะ fsm หลัก:

“ไฟติด ตรวจพบการเคลื่อนไหว” (id = 000)

ไฟเปิดอยู่ อย่างน้อยหนึ่งในเครื่องตรวจจับความเคลื่อนไหวตรวจจับการเคลื่อนไหว ดังนั้น orx ต้องสูงและเปิด ms

  • เอาต์พุต: ไฟ = 1 และตัวจับเวลา = 0
  • คงสถานะนี้เมื่อ ms = 1 และ orx = 1
  • ไปที่สถานะ "ติดสว่าง ตรวจไม่พบการเคลื่อนไหว" ถ้า ms = 1 และ orx = 0
  • ไปที่สถานะ "เปิดด้วยตนเอง" ถ้า ms = 0 และ ns = 1
  • ไปที่สถานะ "ปิดด้วยตนเอง" ถ้า ms = 0 และ ns = 0

“ไฟติด ตรวจไม่พบการเคลื่อนไหว” (id = 001)

ไฟเปิดอยู่ ตรวจไม่พบการเคลื่อนไหวจากเครื่องตรวจจับการเคลื่อนไหวใดๆ ดังนั้น orx จะต้องต่ำและเปิด ms ไว้ นอกจากนี้ในช่วงเริ่มต้นของสถานะนี้ ตัวจับเวลาที่ตั้งไว้สูงจะบอก fsm นับถอยหลังให้เริ่มนับถอยหลัง ดำเนินการนับถอยหลัง และหยุดนับถอยหลังเมื่อ fsm นับถอยหลังบอก fsm นี้ว่านับเสร็จแล้ว

  • เอาต์พุต: ไฟ = 1 และตัวจับเวลา = 1
  • อยู่ในสถานะนี้เมื่อ ms = 1 และ orx = 0 และ td (หมดเวลา) = 0
  • ไปที่สถานะ "ไฟติด ตรวจพบการเคลื่อนไหว" ถ้า ms = 1 และ orx = 1
  • ไปที่สถานะ "ปิดไฟ ตรวจไม่พบการเคลื่อนไหว" ถ้า ms = 1 และ orx = 0 และ td = 1
  • ไปที่สถานะ "เปิดด้วยตนเอง" ถ้า ms = 0 และ ns = 1
  • ไปที่สถานะ "ปิดด้วยตนเอง" ถ้า ms = 0 และ ns = 0

“ปิดไฟ ตรวจไม่พบการเคลื่อนไหว” (id = 010)

ไฟดับ ตรวจไม่พบการเคลื่อนไหวจากเซ็นเซอร์ตรวจจับความเคลื่อนไหวใดๆ และตัวจับเวลานับถอยหลังเสร็จ ดังนั้น orx ต้องต่ำ เปิด ms และ td ปิดอยู่

  • เอาต์พุต: ไฟ = 0 และตัวจับเวลา = 0
  • คงสถานะนี้เมื่อ ms = 1 และ orx = 0
  • ไปที่สถานะ "ไฟติด ตรวจพบการเคลื่อนไหว" ถ้า ms = 1 และ orx =1
  • ไปที่สถานะ "เปิดด้วยตนเอง" ถ้า ms = 0 และ ns = 1
  • ไปที่สถานะ "ปิดด้วยตนเอง" ถ้า ms = 0 และ ns = 0

“เปิดด้วยตนเอง” (id = 011)

ไฟเปิดอยู่ อุปกรณ์ตรวจจับการเคลื่อนไหวไม่เกี่ยวข้อง ms จึงปิด และเปิด ns

  • เอาต์พุต: ไฟ = 1 และตัวจับเวลา = 0
  • คงสถานะนี้เมื่อ ms = 0 และ ns = 1
  • ไปที่สถานะ "ปิดด้วยตนเอง" ถ้า ms = 0 และ ns = 0
  • ไปที่สถานะ "ปิดไฟ ตรวจไม่พบการเคลื่อนไหวถ้า ms = 1

“ปิดด้วยตนเอง” (id = 100)

ไฟดับ เครื่องตรวจจับความเคลื่อนไหวไม่เกี่ยวข้อง ms ถูกปิด และ ns จะปิด

  • เอาต์พุต: ไฟ = 0 และตัวจับเวลา = 0
  • อยู่ในสถานะนี้เมื่อ ms = 0 และ ns = 0
  • ไปที่สถานะ "เปิดด้วยตนเอง" ถ้า ms = 0 และ ns = 1
  • ไปที่สถานะ "ปิดไฟ ตรวจไม่พบการเคลื่อนไหวถ้า ms = 1

ลงเคาน์เตอร์รัฐ:

“เซก 10” (id = 1010)

จอแสดงผลเซเว่นเซกเมนต์แสดง 10

  • ผลลัพธ์: bin = “1010” และ td = 0
  • ไปที่สถานะ “seg 9” ถ้าตัวจับเวลา = 1
  • ไปที่สถานะ "ว่าง 2" ถ้าตัวจับเวลา = 0

“เซก 9” (id = 1001)

จอแสดงผลเซเว่นเซกเมนต์แสดง 9

  • ผลลัพธ์: bin = “1001” และ td = 0
  • ไปที่สถานะ “seg 8” ถ้าตัวจับเวลา = 1
  • ไปที่สถานะ "ว่าง 2" ถ้าตัวจับเวลา = 0

(รัฐ "Seg 8" ลงไป "Seg 2" ถูกละเว้นเนื่องจากเป็นไปตามรูปแบบเดียวกับ "Seg 10" และ "Seg 9" และไม่จำเป็นสำหรับคำอธิบาย)

“ส่วนที่ 1” (id = 0001)

จอแสดงผลเซเว่นเซกเมนต์แสดง 1

  • ผลลัพธ์: bin = “0001” และ td = 0
  • ไปที่สถานะ "ว่าง 2" บนขอบนาฬิกาถัดไป (ไม่จำเป็นต้องป้อนข้อมูล)

“ว่าง 2” (id = 1111)

จอแสดงผลเจ็ดเซกเมนต์แสดง 0 จุดประสงค์ของสถานะว่างที่สองคือเพื่อให้มีสถานะแยกต่างหากเมื่อ td = 1 เพื่อความปลอดภัย

  • ผลลัพธ์: bin = “1111” และ td = 1
  • ไปที่สถานะ "ว่าง 1" บนขอบนาฬิกาถัดไป (ไม่จำเป็นต้องป้อนข้อมูล)

“ว่าง 1” (id = 0000)

จอแสดงผลเจ็ดส่วนแสดงค่า 0 ซึ่งเป็นสถานะที่ระบบยังคงอยู่เมื่อเครื่องสถานะหลักอยู่ในสถานะ "ดับ ตรวจไม่พบการเคลื่อนไหว"

  • ผลลัพธ์: bin = “0000” และ td = 0
  • ไปที่สถานะ “seg 10” ถ้าตัวจับเวลา = 1

ขั้นตอนที่ 3: ระบุตารางความจริงของเครื่อง สมการกระตุ้น และสมการผลลัพธ์

ตารางแสดงความจริงของเครื่อง สมการกระตุ้น และสมการเอาท์พุต
ตารางแสดงความจริงของเครื่อง สมการกระตุ้น และสมการเอาท์พุต
ตารางแสดงความจริงของเครื่อง สมการกระตุ้น และสมการเอาท์พุต
ตารางแสดงความจริงของเครื่อง สมการกระตุ้น และสมการเอาท์พุต
ตารางแสดงความจริงของเครื่อง สมการกระตุ้น และสมการเอาท์พุต
ตารางแสดงความจริงของเครื่อง สมการกระตุ้น และสมการเอาท์พุต
ตารางแสดงความจริงของเครื่อง สมการกระตุ้น และสมการเอาท์พุต
ตารางแสดงความจริงของเครื่อง สมการกระตุ้น และสมการเอาท์พุต

ขั้นตอนต่อไปคือการสร้างตารางความจริงสำหรับเครื่องสองสถานะและสมการกระตุ้นและสมการผลลัพธ์สำหรับแต่ละ fsm สำหรับแต่ละสมการกระตุ้น fsm จำเป็นต้องมีสมการสำหรับบิตที่เข้ารหัสสถานะถัดไปในแง่ของสถานะปัจจุบันและสัญญาณอินพุต สำหรับแต่ละสมการเอาท์พุต fsm จำเป็นต้องมีสมการสำหรับสัญญาณเอาท์พุตแต่ละตัวในแง่ของสถานะปัจจุบัน สมการทั้งสี่ชุดสามารถดึงมาจากตารางความจริงที่แสดงไว้ (qn คือสถานะถัดไปที่เข้ารหัสบิตสำหรับแต่ละเครื่องของรัฐ และ q คือสถานะปัจจุบัน)

(000) เทียบเท่ากับ q(2)'q(1)'q(0)' และ (0000) เทียบเท่ากับ q(3)'q(2)'q(1)'q(0)'

(เช่น (0101) คือ q(3)'q(2)q(1)'q(0) และ (110) คือ q(2)q(1)q(0)')

สมการกระตุ้นสำหรับ fsm หลัก:

  • qn(2) = (มิลลิวินาที)'(ns)
  • qn(1) = (ms)'(ns)' + (ms)(orx)'[(td)(001) + (010)] + (ms)[(011) + (100)]
  • qn(0) = (ms)'(ns)' + (ms)(orx)'[(000) + (td)'(001)]

สมการผลลัพธ์สำหรับ fsm หลัก:

  • ไฟ = (000) + (001) + (100)
  • ตัวจับเวลา = (001)

สมการการกระตุ้นสำหรับ fsm ตัวนับลง:

  • qn(3) = เสื้อ[(0000) + (1010) + (1001) + (0001)]
  • qn(2) = เสื้อ[(1000) + (0111) + (0110) + (0101) + (0001)]
  • qn(1) = เสื้อ[(0000) + (1000) + (0111) + (0100) + (0011) + (0001)]
  • qn(0) = เสื้อ[(1010) + (1000) + (0110) + (0100) + (0010) + (0001)]

สมการผลลัพธ์สำหรับ fsm ตัวนับลง:

  • td = (1111)
  • ถังขยะ(3) = (1010) + (1001) + (1000) + (1111) + (0000)
  • ถัง(2) = (0111) + (0110) + (0101) + (0100) + (1111) + (0000)
  • ถังขยะ(1) = (1010) + (0111) + (0110) + (0011) + (0010) + (1111) + (0000)
  • ถังขยะ(0) = (1001) + (0111) + (0101) + (0011) + (0001) + (1111) + (0000)

ขั้นตอนที่ 4: Wrapper, Submodules และ Constraint

ตามที่อธิบายไว้แล้วในขั้นตอนที่ 1 โมดูลเหล่านี้จำเป็นสำหรับโปรเจ็กต์นี้ และทั้งหมดเชื่อมโยงกับโมดูลแรปเปอร์ชื่อ "final_proj.vhd" ไฟล์ข้อจำกัดชื่อ "Basys3_Master.xdc" ใช้เพื่อเชื่อมโยงอินพุตและเอาต์พุตของ wrapper ทั้งหมดไปยังสวิตช์ ทั้งเจ็ดเซ็กเมนต์ และพอร์ต I/O บนบอร์ด Basy 3 สวิตช์หลักควรเป็นสวิตช์บนบอร์ดใกล้กับด้านที่สายไฟเปิดมากที่สุด สวิตช์ปกติ/ธรรมดาจะอยู่ใกล้ที่สุดเป็นอันดับสอง และสวิตช์สามตัวที่เป็นตัวแทนของเซ็นเซอร์ตรวจจับความเคลื่อนไหวทั้งสามตัวคือสวิตช์สามตัวที่อยู่ถัดจากสวิตช์ปกติ/ธรรมดา. โค้ดทั้งหมด (สมการบูลีน การประกาศโมดูล ฯลฯ) ถูกเขียนไว้แล้วในไฟล์ ดังนั้นคุณจึงไม่ต้องเขียนอะไรอีกเพื่อให้ใช้งานได้

ขั้นตอนที่ 5: พอร์ต I/O สำหรับ LED

พอร์ต I/O สำหรับ LED
พอร์ต I/O สำหรับ LED
พอร์ต I/O สำหรับ LED
พอร์ต I/O สำหรับ LED

ขั้นตอนสุดท้ายสำหรับโครงการนี้คือการใช้ LED เพื่อแสดงว่า (ไฟ) เปิดและปิดจริงหรือไม่ การเดินสายไฟจะแสดงในสองภาพ ตรวจสอบให้แน่ใจว่ามีตัวต้านทานแบบอนุกรมพร้อมไฟ LED (อย่างน้อย 330 โอห์ม) เพื่อไม่ให้ไฟ LED ไหม้ และตรวจสอบให้แน่ใจว่าพินยาวของไฟ LED เชื่อมต่อกับส่วนหัวตัวเมียตัวเดียวกันบนกระดานเบสขณะที่สายไฟสีแดงแสดงอยู่ (ด้านบน ขวาสุด) และพินที่สั้นกว่าเชื่อมต่อกับกราวด์ซึ่งเป็นส่วนหัวของตัวเมียตัวเดียวกับที่แสดงลวดสีดำ (บนสุดที่สองจากซ้าย)

แนะนำ: