การใช้งาน Digital I/O
ความรู้เบื้องต้นเกี่ยวกับไฟฟ้า
ก่อนที่เราจะสั่งงานฮาร์ดแวร์ เราต้องเข้าใจพื้นฐานไฟฟ้า 3 ตัวแปรหลักก่อนครับ:
- แรงดันไฟฟ้า (Voltage - V): แรงผลักที่ทำให้กระแสไฟไหล (Arduino ปกติใช้ 5V)
- กระแสไฟฟ้า (Current - I): ปริมาณไฟฟ้าที่ไหลในวงจร (อุปกรณ์แต่ละชิ้นกินกระแสไม่เท่ากัน)
- ความต้านทาน (Resistance - R): ตัวต้านการไหลของกระแสไฟฟ้า (ใช้ R เพื่อป้องกันไม่ให้ LED ขาด)
พอร์ต Digital I/O (Input/Output) คือช่องทางในการสื่อสารภายใต้ ตรรกะทวิลักษณ์ (Binary Logic) ซึ่งมีเพียง 2 สถานะ:
HIGH (1)
5 โวลต์ (5V)เปรียบเสมือนการ "เปิด" สวิตช์
LOW (0)
0 โวลต์ (0V)เปรียบเสมือนการ "ปิด" สวิตช์
1. การควบคุมอุปกรณ์ด้วย Digital Output
การส่งคำสั่ง (จ่ายไฟ) ออกไปควบคุมอุปกรณ์ภายนอก เช่น การสั่งให้หลอด LED ติดหรือดับ
👆 กดปุ่ม "Start Simulation" เพื่อสังเกตการไหลของกระแสไฟฟ้า
pinMode(ขา, OUTPUT); และ digitalWrite(ขา, สถานะ);
int ledPin = 8; void setup() { pinMode(ledPin, OUTPUT); // ตั้งเป็นโหมดส่งสัญญาณออก } void loop() { digitalWrite(ledPin, HIGH); // จ่ายไฟ 5V (เปิดไฟ) delay(1000); digitalWrite(ledPin, LOW); // จ่ายไฟ 0V (ปิดไฟ) delay(1000); }
2. การอ่านค่าด้วย Digital Input
การรับสัญญาณเข้ามายังบอร์ด เช่น การตรวจสอบว่า "สวิตช์ถูกกดอยู่หรือไม่"
pinMode(ขา, INPUT); และ digitalRead(ขา);
int switchPin = 2; void setup() { pinMode(switchPin, INPUT); // ตั้งเป็นโหมดรับสัญญาณเข้า } void loop() { int state = digitalRead(switchPin); // อ่านสถานะ 0 หรือ 1 if (state == HIGH) { // ทำงานเมื่อสวิตช์ถูกกด } }
3. แกลเลอรีภาพกรณีศึกษา (Case Study Gallery)
ตัวอย่างการนำหลักการ Digital I/O ไปประยุกต์ใช้ในโลกจริง:
สวิตช์แม่เหล็กตรวจจับการเปิด-ปิดประตูบ้าน
เซนเซอร์กันชนตรวจจับสิ่งกีดขวางของหุ่นยนต์
การสั่งงานกระดิ่งเตือนภัยอัตโนมัติเมื่อเกิดเหตุ
ภารกิจที่ 1: ผู้พิทักษ์ความปลอดภัย (Smart Alarm)
ให้ออกแบบวงจรและเขียนโปรแกรมระบบสัญญาณกันขโมย โดยใช้ สวิตช์ ร่วมกับเงื่อนไข if-else เพื่อสั่งงานเสียงเตือนภัย (Buzzer) หรือไฟแจ้งเตือน หากพบข้อผิดพลาดให้บันทึกลงในศูนย์แก้ปมปัญหา
ปฏิบัติภารกิจที่ 1