กลับหน้าหลัก
views
วิธีอ่านค่าสวิตซ์ด้วย digitalRead() บน Arduino
Last updated on

วิธีอ่านค่าสวิตซ์ด้วย digitalRead() บน Arduino


วิธีอ่านค่าสวิตซ์ด้วย digitalRead() บน Arduino

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

หลักการของ digitalRead()

Arduino มีขาดิจิทัลที่สามารถตั้งค่าเป็นอินพุตหรือเอาต์พุตได้ เมื่อตั้งค่าเป็นอินพุต จะใช้คำสั่ง digitalRead(ชื่อขา) เพื่อตรวจสอบว่าขานั้นมีไฟหรือไม่

ค่าที่ได้กลับมามี 2 แบบ:

  • HIGH → มีไฟ (แรงดันประมาณ 5V)
  • LOW → ไม่มีไฟ (แรงดัน 0V)

วงจร Pull-down พื้นฐาน

สวิตซ์แบบปกติเปิด (Normally Open) จะไม่ยืนยันสถานะเมื่อไม่ถูกกด ทำให้ขาอินพุตลอยไม่มีค่าชัดเจน วิธีแก้คือต่อ Pull-down Resistor ดังนี้

วงจร Pull-down พื้นฐาน - สวิตซ์ต่อกับขา D2 มี resistor 10kΩ ลากจากขา D2 ลงกราวด์ ส่วนสวิตซ์ต่อกับไฟ 5V ผ่าน Pull-down resistor ตามมาตรฐาน

วิธีต่อ:

  1. ขาหนึ่งของสวิตซ์ต่อกับไฟ 5V
  2. ขาอีกขาหนึ่งต่อกับขา Arduino (เช่น D2)
  3. ต่อ Resistor 10kΩ ระหว่างขา Arduino กับ GND (เป็น Pull-down)

การทำงาน:

  • ไม่กดสวิตซ์ → กระแสไหลผ่าน Resistor ลงกราวด์ → อ่านได้ LOW
  • กดสวิตซ์ → ไฟ 5V ไหลเข้าขา Arduino → อ่านได้ HIGH

โค้ดอ่านค่าสวิตซ์ควบคุม LED

// กำหนดขาที่ใช้
const int buttonPin = 2;   // ขาต่อสวิตซ์
const int ledPin = 9;      // ขาต่อ LED

// ตัวแปรเก็บสถานะสวิตซ์
int buttonState = 0;


void setup() {
  // เริ่ม Serial Monitor สำหรับดูผลลัพธ์
  Serial.begin(9600);
  
  // ตั้งค่าขา LED เป็นเอาต์พุต
  pinMode(ledPin, OUTPUT);
  
  // ตั้งค่าขาสวิตซ์เป็นอินพุต
  pinMode(buttonPin, INPUT);
}

void loop() {
  // อ่านค่าจากขาสวิตซ์
  buttonState = digitalRead(buttonPin);

  // ตรวจสอบว่าสถานะเป็น HIGH หรือไม่
  if (buttonState == HIGH) {
    // เมื่อกดสวิตซ์ → LED ติด
    Serial.println("LED ON");
    digitalWrite(ledPin, HIGH);
  } else {
    // เมื่อปล่อยสวิตซ์ → LED ดับ
    Serial.println("LED OFF");
    digitalWrite(ledPin, LOW);
  }
}

สิ่งที่โค้ดทำ:

  • อ่านค่าจากขา D2 ตลอดเวลาด้วย digitalRead()
  • ถ้าได้ค่า HIGH (กดสวิตซ์) → สั่ง LED ติด
  • ถ้าได้ค่า LOW (ปล่อยสวิตซ์) → สั่ง LED ดับ
  • พิมพ์สถานะออก Serial Monitor เพื่อตรวจสอบ

จุดที่ต้องปรับตามโปรเจกต์จริง

จุดปรับค่าเดิมปรับได้ตามต้องการ
ขาสวิตซ์2เปลี่ยนเป็นขาอื่นที่ว่าง
ขา LED9ต่อ LED ขาอื่นหรือเปลี่ยนเป็น Relay, Buzzer
ขั้วต่อสวิตซ์Pull-downเปลี่ยนเป็น Pull-up ถ้าต้องการ logic ตรงข้าม

ทดสอบด้วย Serial Monitor

Serial Monitor แสดง LED ON เมื่อกดสวิตซ์ และ LED OFF เมื่อปล่อย

หลังอัพโค้ดขึ้นบอร์ดแล้ว เปิด Serial Monitor (115200 baud) จะเห็นข้อความเปลี่ยนทุกครั้งที่กดหรือปล่อยสวิตซ์ ใช้ตรวจสอบว่า Arduino อ่านค่าถูกต้อง

สรุป

digitalRead() เป็นคำสั่งพื้นฐานที่ต้องเข้าใจก่อนทำโปรเจกต์ Arduino ที่ต้องรับอินพุตจากสวิตซ์ เซ็นเซอร์ หรือสวิตช์อื่น ๆ จำหลักการ Pull-down/Pull-up และวิธีใช้งานในโค้ดได้ ก็นำไปต่อยอดโปรเจกต์ได้หลายแบบ

วิดีโออ้างอิง

วิดีโอสาธิตการต่อวงจรและทดสอบ Arduino รับค่าสวิตซ์

อยากทำโปรเจคแบบนี้?

รับทำโปรเจค Arduino / IoT จบงานไว ส่งงานครบ พร้อมสอน

หากต้องการ รับทำโปรเจคอาดูโน่ หรือระบบ IoT แบบเร่งด่วน สามารถดูรายละเอียดบริการได้ที่หน้าแรก

จ้างทำโปรเจคเลย

ประเมินราคาอัตโนมัติ + Reference Code

ขอให้ AI ประเมินราคาโปรเจคนี้

กรอกข้อมูลให้ครบ ระบบจะสร้างรหัสอ้างอิงและประเมินราคา/ระยะเวลาคร่าว ๆ จากรายละเอียดงาน แล้วให้กด Add LINE พร้อมพิมพ์รหัสนี้เพื่อคุยต่อ

คำถามให้ AI ประเมินแม่นขึ้น

หลังส่งฟอร์ม ระบบจะโชว์ Reference Code ให้ copy แล้วกด Add LINE เพื่อคุยต่อ ข้อมูลส่วนตัวจะไม่ถูกส่งเข้า GA4

ความคิดเห็น

รีวิวจากคนใช้งานจริง

รีวิวจากลูกค้าและคนที่เคยใช้งาน

ถ้าเคยสั่งงาน เคยอ่านหน้านี้แล้วได้ประโยชน์ หรือมีข้อเสนอแนะ ฝากรีวิวไว้ได้เลย

กำลังโหลดรีวิว...