ตอนนี้ขอเพิ่มความซับซ้อนอีกนิดนึง ตอนก่อน ๆ ที่ผ่านมาเราเล่นกับ LED display ซึ่งเป็นเอาท์พุตตัวหนึ่งที่สั่งให้แสดงข้อความหรือแสดงรูปให้เราโดยไม่สนใจว่าจะมีอินพุตเข้ามาหรือไม่ ตอนนี้เราจะลองเพิ่มอินพุตเข้าไปดูโดยใช้อินพุตที่มีมาให้แล้วในบอร์ดคือสวิตช์ S1 และ S2 กำหนดไว้ว่าถ้าเรากดสวิตช์ S1 หน้าจอจะแสดงรูปหัวใจแดง แต่ถ้ากด S2 จะแสดงรูปหัวใจไม่มีสี เขียนเป็นแผนภาพได้ดังนี้
บล็อกคำสั่งที่เราควรมองหามาใช้คือ การรับค่ากดสวิตช์ S1 กะ S2 และบล็อก if...do....หรือ if...do...else...
การใช้งาน if...do...else...คือ การบอกให้บอร์ดเช็คค่าสถานะถ้าตรงตามที่กำหนดก็ทำงานลำดับต่อไป
if.....do.... = ถ้า...(เกิดอันนี้ขึ้น)...แล้วทำ....(อันนั้น)...
if.....do.....else.... = ถ้า...(เกิดอันนี้ขึ้น)...แล้วทำ....(อันนั้น)....ไม่เกิดเลยก็...(ทำแบบนี้แทน).....
แบบเนี้ยในโปรแกรมเราเรียก Logic งั้นเราก็ลองไปไล่หาคำสั่งในแถบเมนู Logic ได้เล้ย
เปิดมาปุ๊บเจอคำสั่งที่ต้องการทั้งหมดเลยไม่ว่าจะเป็นบล็อก if...do... / if...do...else.... แล้วก็บล็อก Switch 1 pressed (กดสวิตช์ S1) Switch 2 pressed (กดสวิตช์ S2) ตอนนี้ใช้ บล็อก if...do... ก่อน ลากมาสิจ๊ะรออะไร เอา 3 บล็อกนี้ก่อน
เอาบล็อกมาประกอบร่างตามภาพด้านล่างเลยแล้วอย่างลืมบล็อก Forever เพราะเราต้องการให้บอร์ดทำงานวนรอบไปเรื่อย ๆ ไม่เอาครั้งเดียวจบน้อมันจะไม่ทันเห็นอะไรเลย แต่เดี๋ยวก่อนสังเกตอะไรไหมที่บล็อก if...do...ที่ภาพโปรแกรมมันดูแปลก ๆ เพราะมี else if โผล่มาทำไงดี...
เอาบล็อกมาประกอบร่างตามภาพด้านล่างเลยแล้วอย่างลืมบล็อก Forever เพราะเราต้องการให้บอร์ดทำงานวนรอบไปเรื่อย ๆ ไม่เอาครั้งเดียวจบน้อมันจะไม่ทันเห็นอะไรเลย แต่เดี๋ยวก่อนสังเกตอะไรไหมที่บล็อก if...do...ที่ภาพโปรแกรมมันดูแปลก ๆ เพราะมี else if โผล่มาทำไงดี...
ไม่ต้องกังวลไปดูวิดีโอนี้ก่อน
จากภาพก็จะตรงกับแผนภาพที่เขียนไว้ตอนต้น ถ้ากดสวิตช์ S1 หน้าจอจะแสดงรูปหัวใจแดง แต่ถ้ากด S2 จะแสดงรูปหัวใจไม่มีสี หลังกดปุ่มโปรแกรมจะหยุดไว้ 2 วินาทีตามค่า Delay ที่ตั้งไว้แล้วจึงกดใหม่ได้อีกครั้ง ลองทำดูจะพบว่ารูปหัวใจมันค้างไว้ตามปุ่มสุดท้ายที่เรากด แล้วถ้าเราเปลี่ยนมาใช้ if...do...else....แบบภาพด้านล่างล่ะ
จากภาพนี้ขอใส่ลูกเล่นเพิ่มให้อีกนิดนึง คือบล็อกคำสั่งก่อนบล็อก Forever สังเกตว่าบล็อกคำสั่งอยู่นอกบล็อก Forever คือ LED 16x8 scroll และ Delay เมื่อเราเริ่มโปรแกรมบอร์ดจะแสดงข้อความแบบเลื่อนเพียงครั้งเดียวว่า "Press Switch" และตั้ง Delay ไว้ 6 วินาทีให้เพียงพอที่จะเลื่อนแสดงข้อความทั้งหมด แล้วค่อยเริ่มการรอรับค่า ถ้ากดสวิตช์ S1 หน้าจอจะแสดงรูปหน้ายิ้ม ค้างไว้ให้ดู 2 วินาที แต่ถ้ากด S2 ก็จะแสดงรูปหน้าบึ้งและค้างไว้ให้ดู 2 วินาที แต่ถ้าไม่กดอะไรเลย (else) จะทำปากหยัก ดังนั้นเมื่อเริ่มโปรแกรมตอนหลังข้อความ Press Switch ไม่มีการกด S1 หรือ S2 เกิดขึ้นซักอย่างเลยหน้าจอจึงขึ้นรูปปากหยัก วนอยู่อย่างนั้นไปเรื่อย ๆ เว้นแต่เราจะกดสวิตช์ตัวใดตัวหนึ่ง ออ ลืมบอก ถ้าหา else if ในบล็อกไม่เจอให้ทำเหมือนเดิมแบบเดียวกับบล็อก if...do...ในวิดีโอด้านบนนะจ๊ะ
มาลองดูผลจากโปรแกรมตัวนี้กันที่วิดีโอด้านล่างนี้
ครั้งหน้าเล่นอะไรอีกดีนะเอาบัซเซอร์ไหม มีแสง แล้วต้องมีเสียง แต่ไม่เอาควันนะเออ....
#Kidbright #Kidbright คืออะไร #Kidbright ทำอะไรได้บ้าง
ไม่มีความคิดเห็น:
แสดงความคิดเห็น