กลับหน้าหลัก
views
analogRead() Arduino คืออะไร? อ่านค่า Analog พร้อมวงจรและโค้ด
Last updated on

analogRead() Arduino คืออะไร? อ่านค่า Analog พร้อมวงจรและโค้ด


analogRead() Arduino คืออะไร? อ่านค่า Analog พร้อมวงจรและโค้ด

analogRead() คือฟังก์ชัน Arduino สำหรับอ่านสัญญาณจากขา Analog Input บน Arduino UNO จะคืนค่า 0–1023 ตามแรงดันที่อ่านได้ Arduino สามารถรับสัญญาณแบบต่อเนื่อง (Analog) ได้ ต่างจากสัญญาณดิจิทัลที่มีแค่ 0 กับ 1 อุปกรณ์ภายนอกหลายตัว เช่น ตัวต้านทานปรับค่าได้ (potentiometer), เซ็นเซอร์วัดแสง, เซ็นเซอร์วัดอุณหภูมิ จะส่งค่าเป็นระดับแรงดันไฟฟ้ามาให้เราอ่าน

Analog Input บน Arduino ทำงานอย่างไร

บอร์ด Arduino มี Analog to Digital Converter (ADC) ในตัว จำนวน 6 ช่อง คือ A0-A5

  • รับแรงดันได้ช่วง 0-5 โวลต์
  • แปลงเป็นตัวเลข 10-bit คือ ค่า 0-1023
  • ไม่มีหน่วย (เป็นค่าดิจิทัลที่ Arduino คำนวณให้)
แผนภาพวงจร potentiometer ต่อกับ Arduino ที่ช่อง A0 แสดงสาย 5V, GND และสัญญาณไป A0

การใช้งาน analogRead()

ฟังก์ชันที่ใช้อ่านค่า Analog คือ analogRead(pin) โดยกำหนด pin เป็นช่อง A0-A5

// กำหนดช่องที่ต่ออุปกรณ์ Analog
const int sensorPin = A0;

void setup() {
  Serial.begin(9600);  // เปิด Serial Monitor ดูค่าที่อ่านได้
}

void loop() {
  int value = analogRead(sensorPin);  // อ่านค่า 0-1023
  Serial.println(value);              // แสดงค่าออกมาทาง Serial
  delay(100);
}

ตัวอย่าง: หรี่ไฟ LED ด้วย potentiometer

ต่อ potentiometer เข้ากับ A3 แล้วใช้ค่าที่อ่านได้ควบคุมความเร็วการกระพริบของ LED ที่ขา 13

[image: ภาพตัวอย่างการต่อ potentiometer เข้ากับ Arduino บน breadboard แสดงตำแหน่งขา A3 และ LED ที่ขา 13]

// กำหนดขา potentiometer และ LED
const int sensorPin = A3;
const int ledPin = 13;

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

void loop() {
  // อ่านค่า Analog จาก potentiometer
  int sensorValue = analogRead(sensorPin);
  Serial.println(sensorValue);

  // ส่งค่าไปควบคุม LED ผ่านฟังก์ชัน Blinky
  Blinky(sensorValue);
}

void Blinky(int timeMs) {
  digitalWrite(ledPin, HIGH);
  delay(timeMs);              // หน่วงเวลาเท่ากับค่าที่อ่านได้
  digitalWrite(ledPin, LOW);
  delay(timeMs);
}

หลักการที่ควรเข้าใจ

ความละเอียดของ ADC

ADC 10-bit หมายความว่า Arduino แบ่งช่วงแรงดัน 0-5V ออกเป็น 1024 ระดับ (0-1023) ถ้าแรงดันเปลี่ยนน้อยมาก ค่าที่อ่านได้อาจไม่เปลี่ยน ซึ่งเป็นข้อจำกัดของฮาร์ดแวร์

การเปลี่ยนค่าแรงดันเป็นโวลต์

ถ้าต้องการค่าเป็นโวลต์จริง ให้คำนวณจากสูตร:

โวลต์ = (ค่าที่อ่าน / 1023) × 5

float voltage = (analogRead(A0) / 1023.0) * 5.0;
Serial.println(voltage);  // แสดงค่าเป็นโวลต์ เช่น 2.34

ห้ามใช้ขา Digital เป็น Analog Input

ขา Digital (D0-D13) ใช้สำหรับสัญญาณดิจิทัลเท่านั้น ถ้าต้องการอ่าน Analog ต้องใช้ขา A0-A5

[image: แผนผังบอร์ด Arduino UNO เน้นขา A0-A5 พร้อมระบุว่าเป็นช่อง Analog Input]

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

https://www.youtube.com/embed/7UDbvh5u2cI

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

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

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

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

ความคิดเห็น