เรียน-เล่น-โค้ด KidBright32iP กับ microBlock IDE EP4: ใช้งานอินพุต/เอาต์พุต

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


สวิตช์ S1 และ S2

ชุดคำสั่งของสวิตช์ S1 และ S2 อยู่ในหัวข้อ Input บล็อกคำสั่งของสวิตช์มี 2 รูปแบบคือ เป็นเหตุการณ์ที่ถูกกระตุ้นให้ทำคำสั่งภายในเมื่อตรงตามเงื่อนไข กับเป็นบล็อกที่คืนค่าผลลัพธ์สถานะของสวิตช์


ตัวอย่างที่ 14 ทดสอบอ่านค่าสวิตช์ S1 S2 และ S1+S2

เขียนโค้ดสั้นๆ เพื่อให้เห็นความแตกต่างระหว่างบล็อก on pressed กับ on press

ภายในชุดคำสั่งจะมีตัวเลือกของสวิตช์ โดย on pressed จะมี S1+S2 ซึ่งหมายถึงการกดสวิตช์พร้อมกัน 2 ตัวด้วย

การทำงาน

เมื่อทดสอบกดสวิตช์ S1 (on pressed) หน้าจอ LED 16×8 จะไม่แสดงผลทันที ต้องรอปล่อยสวิตช์ก่อน ส่วนสวิตช์ S2 (on press) หน้าจอแสดงผลทันที


ตัวอย่างที่ 15 ใช้สวิตช์เพิ่ม/ลด ค่าตัวเลข

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

การทำงาน

ค่าที่เพิ่มหรือลดจะเก็บในตัวแปร x โดยกำหนดค่าตัวแปรในหัวข้อ Variables และเปลี่ยนชื่อเป็น x จากนั้นกำหนดค่าให้เท่ากับ 5 เมื่อกดสวิตช์ S1 จะลดค่า x ลง 1 ค่าแล้วนำมาแสดงที่ LED 16×8 ถ้ากดสวิตช์ S2 จะเพิ่มค่า x ขึ้น 1 ค่าแล้วนำมาแสดงที่ LED 16×8 ถ้ากดสวิตช์ทั้ง 2 ตัวพร้อมกัน จะเป็นการเคลียร์ค่าให้กลายเป็น 0

ตัวอย่างที่ 16 เปิด/ปิด LED USB ด้วยสวิตช์ S1 และ S2

บนบอร์ด KidBright32iP มีขั้ว USB ที่ใช้เป็นเอาต์พุตให้กับอุปกรณ์ไฟฟ้าที่รับแรงดัน 5V จ่ายกระแสไม่เกิน 1 แอมป์อยู่ สามารถนำอุปกรณ์ต่างๆ มาทดสอบได้ ในที่นี้จะใช้หลอดไฟ LED ซึ่งหาได้ทั่วๆ ไปมาทดสอบ


คำสั่งที่ใช้เปิด/ปิด USB


การทำงาน

ให้การกดสวิตช์ แต่ละตัวสั่งให้ USB LED จ่ายไฟ หรือไม่จ่ายไฟ เมื่อกดสวิตช์พร้อมกันเป็นการสั่งสลับสถานะเดิม

คำสั่ง if

ถ้าเงื่อนไขเป็นจริง ให้ทำงานในส่วนที่ตามมา สามารถกดที่เครื่องหมาย + เพื่อเติมการตรวจสอบเงื่อนไข ในข้อมูลชุดเดียวกันได้ หรือกดเครื่องหมาย – เพื่อลบ else if ที่เพิ่มขึ้นมาออกได้

คำสั่ง if else

ต่างจาก if ปกติคือ ถ้าเงื่อนไขเป็นเท็จให้ไปทำในช่อง else สามารถเครื่องหมาย + เพื่อเพิ่มเงื่อนไข else if เข้าไปได้ หรือกดเครื่องหมาย – เพื่อลบ else if ที่เพิ่มขึ้นมาออกได้

ตัวอย่างที่ 17 เปิด/ปิด LED USB ด้วยสวิตช์ S1 S2 ผ่านคำสั่ง if

ทำงานเหมือน ตัวอย่างที่ 16 แต่เปลี่ยนการเขียนโค้ด โดยใช้การวนลูปและตรวจสอบเงื่อนไข ด้วย if else if แทน

การทำงาน

ถ้าสวิตช์ S1 ถูกกด เงื่อนไขชุดแรกจะเป็นจริง สั่งจ่ายไฟให้ USB LED ถ้าสวิตช์ S2 ถูกกดเงื่อนไขชุดที่ 2 เป็นจริง ให้หยุดจ่ายไฟให้ USB LED

การสร้างเสียงออกลำโพงบน KidBright32iP

บนบอร์ด KidBright32iP มีลำโพงขนาดเล็กติดตั้งอยู่ สามารถใช้คำสั่งในหัวข้อ OUTPUT สร้างเสียงออกลำโพงได้

บล็อก buzzer tone frequency

จะสร้างเสียงโดยระบุความถี่เสียงหน่วยเป็นเฮิร์ต (Hz) และระยะเวลาให้เสียงดังหน่วยเป็นวินาที เสียงที่ลำโพงตอบสนองได้ดีจะอยู่ในช่วง 300-5000 Hz ถ้าน้อยหรือมากกว่านี้เสียงจะเบาลงมาก

ตัวอย่างที่ 18 สร้างความถี่เสียงแบบสุ่มออกลำโพง

ตัวอย่างนี้จะคอยตรวจสอบสวิตช์ S1 ถ้ามีการกดอยู่จะให้สร้างเสียงต่อเนื่องไปเรื่อยๆ จนกว่าจะมีการปล่อยสวิตช์ โดยเสียงให้สุ่มความถี่ตั้งแต่ 300-3000 Hz

การทำงาน

ถ้าไม่มีการกดสวิตช์จะยังไม่มีการสร้างเสียง เนื่องจาก repeat while ยังเป็นเท็จ เมื่อกดสวิตช์จะเรียกคำสั่งสร้างเสียง โดยกำหนดความถี่เป็นค่า Random ช่วง 300 ถึง 3000 Hz

คำสั่ง repeat while

คำสั่งrepaet while จะวนทำซ้ำในช่องที่ตามมาจนกว่าเงื่อนไขจะเป็นเท็จ

ตัวอย่างที่ 19 สร้างเสียงไซเรน

การทำงาน

เสียงไซเรนเป็นการสลับกัน โดยเมื่อกดสวิตช์ S1 จะวนลูป 10 ครั้งสร้างเสียงออกลำโพงด้วยความที่ 2 ความถี่สลับกัน

คำสั่ง wait ultil

เป็นการหยุดค้างเมื่อรอเงื่อนไข และไปทำงานตามคำสั่งต่อไปเมื่อเงื่อนไขเป็นจริง

คำสั่ง repeat

จะวนทำซ้ำคำสั่งที่ตามมา ตามจำนวนรอบที่กำหนด

บล็อก buzzer note

เป็นบล็อกคำสั่งเช่นเดียวกับ buzzer tone แต่ใช้วิธีระบุเสียงเป็นคีย์โน้ตดนตรี และจังหวะของเสียง ต้องระบุค่า 2 ค่าคือ

notes คือชื่อตัวโน้ตดนตรี กำหนดได้หลายๆตัวโน๊ต จะกำหนดด้วยตนเองหรือเลือกเพลงตัวอย่าง Collection ก็ได้ สามารถฟังเสียงโน้ตจากคอมพิวเตอร์ก่อนดาวน์โหลดใส่ไปยัง KidBright32iP

duration คือ ระยะเวลาที่ต้องการให้ขับเสียงดนตรีมีด้วยกัน 5 ค่า

ตัวอย่างที่ 20 เสียงเพลง Twinkle,Twinkle Little Star และ Jingle Bells

เป็นการเอาเมโลดี้ตัวอย่างจาก 9 แบบมาลองเล่นเสียงจากการกดปุ่ม S1 และ S2

อุปกรณ์อินพุตเอาต์พุตยังมีอีกหลายตัว ขอยกใปตอนหน้าครับ

Facebook Comments Box