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

เรียนรู้และฝึกทดลองไปกับบอร์ดไมโครคอนโทรเลอร์ 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 เพื่อสั่งให้คอมไพล์โปรแกรมและดาวน์โหลดโปรแกรมจากเว็บลงมา