วันศุกร์ที่ 28 สิงหาคม พ.ศ. 2563

ตอนที่ 4 กดปุ่มเลือกได้ ป้อนอินพุตให้ KidBright

    ตอนนี้ขอเพิ่มความซับซ้อนอีกนิดนึง ตอนก่อน ๆ ที่ผ่านมาเราเล่นกับ 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 โผล่มาทำไงดี... 
    
ไม่ต้องกังวลไปดูวิดีโอนี้ก่อน 



จากภาพก็จะตรงกับแผนภาพที่เขียนไว้ตอนต้น ถ้ากดสวิตช์ 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 ทำอะไรได้บ้าง

ไม่มีความคิดเห็น:

แสดงความคิดเห็น

ตอนที่ 11 KidBright ต่อ Output ควบคุมพัดลมตามเวลาและอุณหภูมิผ่านรีเลย์

     เมื่อเรามีบอร์ดควบคุมอย่าง KidBright และมีรีเลย์พร้อมกับแหล่งจ่ายไฟภายนอกเราก็สามารถควบคุมการทำงานของอุปกรณ์ขนาดใหญ่ขึ้นได้      บอกเสร...