เริ่มเรียนรู้ Physical Programming ด้วย Scratch และ GPIO บน Raspberry Pi ตอนที่ 4

[ตอนที่ 1][ตอนที่ 2][ตอนที่ 3][ตอนที่ 5]

จากตอนที่ 3 ผมได้แสดงให้เห็นวิธีการใช้ GPIO Pin ในรูปแบบของ output mode มาแล้ว มาในตอนนี้จะเพิ่มเติมเรื่องการใช้ใน input mode กันบ้าง

โครงงานนี้จะต่อยอดจากโครงงานเรื่อง LED ในตอนที่แล้ว โดยจะเปลี่ยนการเปิด-ปิด LED มาใช้ Push button switch แทนการใช้ Scratch Block

Push button switch ถือว่าเป็นอุปกรณ์ไฟฟ้าแบบหนึ่ง ใช้ในการตัดต่อวงจรไฟฟ้าเพื่อให้มีการจ่ายหรืองดจ่ายแรงดันไฟฟ้า



By Scwerllguy - Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=4229777

สำหรับ GPIO Pin บน Raspberry Pi ใช้ในการส่งสัญญาณดิจิตอลเป็น ON หรือ 1 หมายถึงปล่อยแรงดันขนาด 3.3 V หรือ OFF หรือ 0 หมายถึวงดจ่ายแรงดัน แรงดันเป็น 0.0 V


เมื่อนำมา Push button switch มาทำงานร่วมกับ GPIO เราก็จะสามารถสร้างระบบตรวจสอบสถานะการกดหรือปล่อย switch ได้โดยการตรวจสอบสถานะของ GPIO ได้


ตามแผนภาพ GPIO 20 (สายสีเหลือง) ต่อเข้ากับขาด้านหนึ่งของ Push button switch และต่อสาย Ground (สายสีดำ) เข้ากับอีกด้านหนึ่ง ในภาวะปรกติจะไม่มีแรงดันไฟฟ้าผ่านในส่วนนี้ แต่เนื่องจาก Raspberry Pi มีการติดตั้ง pull up resistor มาด้วยแล้วทำให้เกิดข้อแม้ดังนี้

1. เมื่อกำหนดให้ mode ของ GPIO20 เป็น inputpullup (ดูรายละเอียดคำสั่งนี้ในตอนที่ 3) จะทำให้สถานะของ GPIO20 เป็น "ON"  หรือ "1" (ในทางตรงข้ามหากกำหนดเป็น inputpulldown ก็จะมีสถานะเป็น OFF หรือ 0)

2. เมื่อ switch ถูกกด จะเป็นการเชื่อมเส้นทางจาก GPIO20 ไปสู่ Ground จะส่งผลทำให้สถานะของ GPIO20 เปลี่ยนจาก ON ไปเป็น OFF  หรือ จาก 1 ไปเป็น 0

3. เมื่อยก switch ขึ้นสถานะของ GPIO20 ก็จะกลับมาเป็น ON ตามเดิม หรือ เปลี่ยนจาก 0 ไปเป็น 1








ด้วยวิธีการทำงานข้างต้นเราก็จะสามารถสร้างขั้นตอนการเปิด-ปิด LED ได้ดังนี้


Switch GPIO20 การสั่งการ
ไม่กด 1 ปิด LED
กด 0 เปิด LED



ส่วนการทำงานที่ใช้ในการเปิด - ปิด LED ผมจะใช้การทำงานตามแบบในโครงงานในตอนที่ 3

Scratch Script 







อยากจะแนะนำ Block สีน้ำเงินที่เห็นในภาพหรือวิดิโอสาธิตสักหน่อย Block นี้อยู่ในกลุ่ม Sensing Blocks (รุ่น 2.0 จะเป็นสีดำ) หน้าที่ของ Block นี้คือการรับค่าจาก GPIO Pin ของ Raspberry Pi

หากท่านคลิ๊กดูที่ Block นี้จะเห็น drop down menu แสดงตัวแปรเริ่มต้นอยู่จำนวนหนึ่ง ตัวแปรเหล่านี้มีไว้สำหรับใช้งานกับ PicoBoard ครับ ซึ่งไม่ได้ใช้งานในโครงการนี้ ก็มองข้ามไปได้

ในโครงงานนี้ตัวแปรที่ใช้ในการรับค่าจาก GPIO Pin จะมีชื่อ gpio20 ได้มาจากการใช้คำสั่ง config20inputpullup โดยทาง Scratch จะตั้งชื่อให้เองโดยเอา "gpio" รวมกับ GPIO Number ซึ่งผู้ใช้ไม่ต้องไปตั้งเอง ครับ ชื่อนี้จะถูกนำมาใช้กับ GPIO ที่ถูกกำหนด mode ให้เป็น input เท่านั้น และในตอนแรกเริ่มนั้น sensor value Block จะยังไม่รู้จักว่าเรากำหนด GPIO ไหนเป็น input ทำให้ Scratch ยังไม่แสดงชื่อให้เห็น ต้องทำการกระตุ้นโดยการคลิ๊กไปที่ block ที่ใช้คำสั่ง  config20inputpullup    ก่อน หลังจากนั้นก็ใช้งานได้



    
Previous
Next Post »