Getting Started with the Raspberry Pi Pico Microcontroller and Arduino IDE [EP2]

ในบทความตอนที่ 2 เป็นการทดลองใช้งานขาอินพุตและเอาต์พุตของบอร์ด Raspberry Pi Pico ด้วยการกำหนดเป็นการรับค่าและส่งค่าแบบลอจิก (TTL Level) ด้วยการให้ขาหนึ่งรับสัญญาณเข้าอินพุต จากนั้นก็จะกำหนดให้อีกขาหนึ่งเป็นเอาต์พุต ซึ่งจะทำตามเงื่อนไขของสัญญาณอินพุตที่รับเข้ามา โดยการทดลลองนี้ช่วยให้เข้าใจการใช้คำสั่งด้วยโปรแกรม Arduino IDE และลักษณะผลการทดลองที่เกิดขึ้น

รูปที่ 1 ตำแหน่งขาอินพุตและเอาต์พุตที่ใช้ในการทดลอง

ในการทดลองจะใช้ขา GPIO 16 และ GPIO 17 (ในตำแหน่งกรอบสีแดงรูปที่ 1) โดยให้ขา GPIO 16 ทำหน้าที่เป็นเอาต์พุตสำหรับขับแอลอีดีและให้ขา GPIO 17 ทำหน้าที่รับสัญญาณอินพุตด้วยการรับค่าจากสวิตช์กด ทั้งนี้เพื่อทดลองใช้ตัวอย่างโปรแกรมและสังเกตผลการทดลองที่ได้ ซึ่งตัวอย่างโปรแกรม Arduino ดังแสดงข้างล่าง

const int SwPin = 17;     
const int ledPin =  16;      
int buttonState = 0;

void setup() {
  Serial.begin(9600);   
  pinMode(SwPin, INPUT); 
  pinMode(ledPin, OUTPUT);
}

void loop() {  
  buttonState = digitalRead(SwPin);
  Serial.println(buttonState); 
  if (buttonState == LOW) {   
    digitalWrite(ledPin, HIGH);
  } else {   
    digitalWrite(ledPin, LOW);
  }
}

ในตัวอย่างโปรแกรมสำหรับการทดลองจะรับค่าสัญญาณอินพุตและเอาต์พุตแบบลอจิก โดยเมื่อกดสวิตช์ คำสั่ง if (buttonState == LOW) จะตรวจสอบว่าเงื่อนไขว่าสถานะเป็นจริง ที่ขา GPIO 17 ตามที่ได้ออกแบบวงจรรับสัญญาณได้ถูกต้อง โปรแกรมก็จะกำหนดให้แอลอีดีติดสว่างด้วยคำสั่ง digitalWrite(ledPin, HIGH); (Logic = 1 หรือ ON) ที่ตำแหน่งขา GPIO 16 ในทางกลับกันกรณีที่สวิตช์ไม่ถูกกดแอลอีดีจะกำหนดให้ดับลง ด้วยคำสั่ง digitalWrite(ledPin, LOW); ทั้งนี้การใช้งานคำสั่งโปรแกรมจะเหมือนกับบอร์ดควบคุมในกลุ่ม Arduino ทั่วไป

รูปที่ 2 ผลการทดลองเมื่อสวิตช์ยังไม่ถูกกดหน้าต่าง COM6 แสดงค่าเป็นลอจิก 1
รูปที่ 3 ผลการทดลองเมื่อสวิตช์ถูกกดหน้าต่าง COM6 แสดงค่าเป็นลอจิก 0

ในรูปที่ 2 และรูปที่ 3 แสดงผลการทดลองเมื่อสวิตช์ไม่ถูกกด/และถูกกด ในหน้าต่าง COM6 เป็นค่าเป็นลอจิก 1 และ ลอกจิก 0 ให้ทราบ โดยเมื่อทดลองกับบอร์ด Raspberry Pi Pico จริงให้ผลการทดลองได้อย่างถูกต้องดังแสดงในรูปที่ 4 และรูปที่ 5

รูปที่ 4 การทดลองกับบอร์ด Raspberry Pi Pico เมื่อสวิตช์ไม่ถูกกด
รูปที่ 5 การทดลองกับบอร์ด Raspberry Pi Pico เมื่อสวิตช์ถูกกด
รูปที่ 6 การทดลองโปรแกรมคำสั่ง Arduino และวงจรที่เว็บไซต์ https://wokwi.com

Raspberry Pi Pico LAB I/O : https://wokwi.com/projects/470695355987591169

รูปที่ 6 เป็นการทดลองโปรแกรมคำสั่ง Arduino และวงจรที่เว็บไซต์ https://wokwi.com เพื่อสังเกตการทำงานอีกครั้งและแชร์ผลการทดลองให้กับผู้อ่าน โดยในการทดลองจะเห็นว่ามีตัวต้านทานขนาด 1 กิโลโอห์ม ที่ต่อระหว่างไฟเลี้ยง 3.3V และขา GPIO 17 เพื่อทำหน้าที่พูลอัพ (PULLUP) อีกครั้ง และเมื่อให้โปรแกรมเริ่มการทำงานที่ (ปุ่มสีเขียว : Start the simulation) แล้วทดลองกดสวิตช์จะให้ผลการทดลองได้อย่างถูกต้องเช่นกัน สำหรับในการทดลองรับค่าสัญญาณอินพุตและเอาต์พุตแบบลอจิกกับบอร์ดควบคุม Raspberry Pi Pico นี้ จะเป็นพื้นฐานสำหรับนำไปใช้ประโยชน์ต่างๆ ในครั้งต่อไป

Reference

  1. https://www.raspberrypi.com/documentation/microcontrollers/pico-series.html
  2. https://randomnerdtutorials.com/
  3. https://github.com/micropython/micropython/wiki
  4. https://pip-assets.raspberrypi.com/categories/610-raspberry-pi-pico/documents/RP-008355-DS-1-raspberry-pi-pico-python-sdk.pdf
  5. https://projecthub.arduino.cc/angadiameya007/getting-started-with-raspberry-pi-pico-in-arduino-ide-5e13ee
  6. https://th.cytron.io/p-edu-project-and-innovation-kits-for-pico-w
  7. https://wokwi.com/pi-pico
  8. https://thonny.org/