บอร์ด 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
อุปกรณ์อินพุตเอาต์พุตยังมีอีกหลายตัว ขอยกใปตอนหน้าครับ