ในบทเรียนก่อนหน้านี้คุณได้เรียนรู้วิธีใช้ข้อมูลจากออปติคัลเซนเซอร์ในโครงการเพื่อจัดเรียงดิสก์ตามสี ในบทเรียนนี้คุณจะต่อยอดจากสิ่งที่คุณได้เรียนรู้ในการสำรวจตัวเลือกใน VEXcode ที่ช่วยให้โครงการสามารถตัดสินใจได้ไม่ว่าจะตรวจพบสีใดโดยออปติคัลเซนเซอร์ คุณจะได้เรียนรู้เกี่ยวกับ:
- ทำไมการเพิ่มประสิทธิภาพการตัดสินใจจึงเป็นสิ่งสำคัญในสถานที่อุตสาหกรรม
- ความแตกต่าง ระหว่างบล็อค If then, Ifthen else และ otherse if
การตรวจสอบหลายเงื่อนไข
ในบทเรียนก่อนหน้านี้คุณได้สร้างโครงการที่สามารถเรียงลำดับดิสก์ตามสีเป็นพาเลทสีแดงหรือพาเลทสีเขียว แม้ว่าจะมีประสิทธิภาพแต่โปรเจกต์สามารถจัดเรียงดิสก์ได้ครั้งละหนึ่งแผ่นเท่านั้น ในโรงงานวัตถุจำนวนมากจะต้องถูกจัดเรียงและจัดเรียงเป็นพาเลทซ้ำๆ เพื่อที่จะทำสิ่งนี้ได้อย่างมีประสิทธิภาพแขน 6 แกนจำเป็นต้องสามารถตัดสินใจซ้ำๆเกี่ยวกับวิธีการเคลื่อนย้ายวัตถุหรือหากจำเป็นต้องมีการแทรกแซงของมนุษย์ พิจารณาลูกบาศก์ที่คุณย้ายมาในหลักสูตร Introduction to the 6 - Axis Arm
จะเกิดอะไรขึ้นหากลูกบาศก์สีน้ำเงินอยู่ในโซนโหลด จะเกิดอะไรขึ้นในโครงการจากบทเรียนก่อนหน้านี้? ในสภาพแวดล้อมทางอุตสาหกรรมเงื่อนไขที่เป็นไปได้ทั้งหมดจะต้องได้รับการพิจารณา หากวัตถุที่หลงผิดถูกผสมลงในวัตถุที่จะจัดเรียงอาจจำเป็นต้องมีการแทรกแซงของมนุษย์เพื่อให้แน่ใจว่าเซลล์งานและคนงานรอบข้างปลอดภัยและทำงานได้อย่างมีประสิทธิภาพ
Sequential If then blocks
ในบทเรียนก่อนหน้านี้ท่านใช้ If then block ตามลำดับเพื่อตรวจสอบสองเงื่อนไขที่แยกกันทีละข้อโดยหลักแล้วถามคำถามสองข้อภายในโครงการ

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

Sequential If then else blocks
มีบล็อกอื่นที่สามารถใช้เพื่อช่วยให้เราสามารถตรวจสอบเงื่อนไขสีแดงและสีเขียวและบัญชีสำหรับสีอื่นได้ If then else block เป็นบล็อก C ที่เรียกใช้บล็อกภายใน สาขา if หรือ สาขา อื่น ตามค่าบูลีนที่รายงาน

หลังจากเรียกใช้ สาขา if หรือ สาขา อื่นโครงการจะย้ายไปยังบล็อกถัดไปในสแต็ก การไหลของโปรเจกต์ของ If then else blocks ยังสามารถแสดงให้เห็นถึงการทำให้สาขามองเห็นได้ชัดเจนยิ่งขึ้น

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

ภาพในตอนนี้แสดงให้เห็นเพียงวิธีการจัดการกับสภาพของวัตถุที่เป็นสีแดง อีก หาก จำเป็นต้องตรวจสอบสภาพของวัตถุที่เป็นสีเขียว

ลองคิดเกี่ยวกับการไหลของโครงการด้วยโครงสร้างนี้ ทุกครั้งที่โครงการดำเนินการจะมีการดำเนินการหลายสาขาไม่ว่าเซ็นเซอร์ออปติคอลจะตรวจจับสีใดก็ตาม

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

ในขณะที่ตอนนี้เราสามารถพิจารณาวัตถุที่ไม่คาดคิด (เช่นลูกบาศก์สีน้ำเงิน) แต่แขน 6 แกนจะไม่ถึงจุดในโครงการปล่อยดิสก์ลงบนพาเลท แทนที่จะตรวจสอบเงื่อนไขสีแดงและสีเขียวทีละรายการมีวิธีตรวจสอบว่าวัตถุเป็นสีเขียวหรือไม่หากวัตถุไม่เป็นสีแดง เท่านั้นแทนที่จะตรวจสอบ เงื่อนไขสีแดงและสีเขียวทีละรายการ
Nested If then else blocks
แต่ละสาขาของบล็อค If then else สามารถยอม รับบล็อค C อื่นๆภายในได้ สิ่งนี้เรียกว่า 'การซ้อน' ซึ่งหมายความว่าอันที่สอง ถ้าอย่าง นั้นบล็อคอื่นสามารถซ้อนอยู่ภายใน สาขา อื่นของอันแรกได้เช่นนี้
ตอนนี้เงื่อนไขของออปติคัลเซนเซอร์ตรวจจับสีเขียวจะถูกตรวจสอบก็ต่อเมื่อเงื่อนไขก่อนหน้านี้ (ออปติคัลเซนเซอร์ตรวจจับสีแดง) รายงานว่าเป็นเท็จ ดังนั้นเมื่อออปติคัลเซนเซอร์ตรวจจับสีแดง เฉพาะ สาขาแรกที่จะทำงานโดยย้ายดิสก์เหนือพาเลทสีแดง

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

Nested If then else blocks can be view as a cascading list of questions. Nested If then else blocks can be view as a cascading list of questions ที่นี่คำถามมีดังนี้:
- วัตถุเป็นสีแดงหรือไม่?
- ใช่ไหม? เลื่อนไปบนพาเลทสีแดงและหยุดถามคำถาม
- ไม่? ถามคำถามอื่น
- วัตถุเป็นสีเขียวหรือไม่?
- ใช่ไหม? เลื่อนไปบนพาเลทสีเขียวและหยุดถามคำถาม
- ไม่? จากนั้นวัตถุจะไม่เป็นสีแดงหรือสีเขียว เปลี่ยนสีของ Signal Tower และเรียกใช้การหยุดแบบควบคุม
- วัตถุเป็นสีเขียวหรือไม่?
โปรดสังเกตว่าคำถามจะถูกถามก็ต่อเมื่อคำถามก่อนหน้านี้ได้รับคำตอบในเชิงลบ
ในขณะที่สิ่งนี้จัดการกับเงื่อนไขทั้งหมดที่เราต้องการตรวจสอบมีอีกบล็อกหนึ่งที่จะตรวจสอบเงื่อนไขในลักษณะเดียวกันแต่สร้างได้ง่ายกว่าบล็อกซ้อน
มิฉะนั้น ถ้าบล็อค
บล็อก อื่นๆที่ช่วยให้คุณสามารถตรวจสอบหลายเงื่อนไขภายในบล็อกเดียวกัน แต่ละเงื่อนไขในบล็อกนี้จะได้รับการตรวจสอบตามลำดับเฉพาะในกรณีที่เงื่อนไขก่อนหน้านี้รายงานเป็นเท็จ หากเงื่อนไขบูลีนทั้งหมดสำหรับสาขาอื่นๆหากสาขาเป็นเท็จบล็อกภายในส่วนอื่นๆจะถูกเรียกใช้

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