กลับหน้าหลัก
views
วิธีอ่านค่า Analog บน Arduino ด้วย analogRead()
Last updated on

วิธีอ่านค่า Analog บน Arduino ด้วย analogRead()


วิธีอ่านค่า Analog บน Arduino ด้วย analogRead()

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 แบบเร่งด่วน สามารถดูรายละเอียดบริการได้ที่หน้าแรก

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

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

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

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

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

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

ความคิดเห็น

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

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

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

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