เรียนรู้และฝึกทดลองไปกับบอร์ดไมโครคอนโทรเลอร์ STM32 Nucleo
จากค่าย STMicroelectronics
(ตอนที่ 2 ทดลองใช้งานขา GPIO บนบอร์ด Nucleo)

ในบทความนี้เป็นการทดลองใช้งานขา GPIO (General Purpose Input Output) บนบอร์ด Nucleo โดยให้ขาสัญญาณ D2 D3 D4 เป็น Output ต่อกับ LED ทั้ง 3 ดวง และให้ขาสัญญาณ D7 D6 D5 เป็น Input ต่อกับสวิสต์ SW_1 SW_2 SW_3 ดังภาพ โดยกำหนดโปรแกรมอ่านค่าสัญญาณจากขา Input ไปกำหนดการทำงานของหลอด LED ที่ขา Output

ต่อวงจรบนบอร์ดทดลองเข้ากับ Nucleo ได้ดังภาพ
จากนั้นไปที่หน้าเว็บ Compiler ของ mbed คลิกขวาเลือก New Program…

ที่หัวข้อ Template: เลือกเป็น Empty Program และกำหนดชื่อโปรแกรมในหัวข้อ Program Name: จากนั้นกดปุ่ม OK

เว็บจะสร้างโปรแกรมเปล่าขึ้นมาแต่ผู้ใช้จะยังไม่สามารถใช้งานได้ ต้องสร้างไฟล์โปรแกรม main.cpp และอิมพอร์ตไลบรารี่พื้นฐานของ mbed เข้ามาก่อน ให้คลิกขวาที่ชื่อโปรแกรมจากนั้นเลือก New File…

กำหนดชื่อไฟล์เป็น main.cpp จากนั้นกดปุ่ม OK

จากนั้นอิมพอร์ตไลบรารี่พื้นฐานของ mbed โดยคลิกขวาที่โปรแกมเลือกหัวข้อ Import Library > From Import Wizard …

เว็บจะแสดงหน้าค้นหาไลบรารี่ขึ้นมาที่ช่อง Search ค้นหาคำว่า “mbed” จากนั้นจะเห็นผลการค้นหาในรายการด้านล่าง เลือกไบบรารี่ที่ชื่อว่า “mbed” จากนั้นกดปุ่ม Import ด้านบน

เมื่อขั้นตอนอิมพอร์ตไลบรารี่สำเร็จแล้วจะเห็นได้ว่าที่หน้าต่าง Program Workspace จะประกอบด้วยไฟล์โปรแกรม main.cpp และไลบรารี่ mbed ดังภาพ จากนั้นคลิกที่ไฟล์ main.cpp เพื่อเขียนโปรแกรม

โค้ดโปรแกรมดังนี้
#include "mbed.h" DigitalOut led_red (D2); DigitalOut led_green (D3); DigitalOut led_blue (D4); DigitalIn sw_1 (D7); DigitalIn sw_2 (D6); DigitalIn sw_3 (D5); int main() { while(1) { if (sw_1 == 0) { led_blue = 0; } else { led_blue = 1; } if (sw_2 == 0) { led_green = 0; } else { led_green = 1; } if (sw_3 == 0) { led_red = 0; } else { led_red = 1; } } }
จากโค้ดโปรแกรมจะเห็นได้ว่า
#include "mbed.h" DigitalOut led_red (D2); DigitalOut led_green (D3); DigitalOut led_blue (D4); DigitalIn sw_1 (D7); DigitalIn sw_2 (D6); DigitalIn sw_3 (D5);
กำหนดขาสัญญาณ D2 D3 D4 เป็น Output ใช้ชื่อ led_red led_green led_blue และกำหนดขาสัญญาณ D7 D6 D5 เป็น Input ใช้ชื่อ sw_1 sw_2 sw_3 ตามลำดับ
while(1) { if (sw_1 == 0) { led_blue = 0; } else { led_blue = 1; } if (sw_2 == 0) { led_green = 0; } else { led_green = 1; } if (sw_3 == 0) { led_red = 0; } else { led_red = 1; } }
ให้โปรแกรมวนอ่านค่าจากพอร์ต Input ทั้ง 3 ตัว จากนั้นกำหนดค่าให้กับขา Output เช่นเมื่อกดสวิสต์ sw_1 สัญญาณที่ขา D7 เป็น 0 (Low) ทำให้ LED น้ำเงินสว่าง คือ ให้ขาสัญญาณนั้นเป็น Low ทำให้กระแสไหลครบวงจรจาก led ไปที่ขา output ลง GND ทำให้ LED สว่าง แต่ถ้าขา sw_1 เป็น 1 (High) กำหนด LED น้ำเงินดับ เพราะกระแสไหลไม่ครบวงจร

สามารถดูข้อมูล และตัวอย่างการใช้งานเพิ่มเติมได้จาก
Digital In >>http://developer.mbed.org/handbook/DigitalIn
Digital Out >>http://developer.mbed.org/handbook/DigitalOut
จากนั้นทดลองใช้งานโปรแกรมโดยกดปุ่ม Compile All เพื่อสั่งให้คอมไพล์โปรแกรมและดาวน์โหลดโปรแกรมจากเว็บลงมา
