กลับไปหน้ารวมไฟล์
analog-read-serial-fff5fa.md

เราจะอ่านค่าอินพุตแบบอนาล็อก แล้วส่งผลลัพธ์ไปแสดงที่ Serial Monitor ครับน้อง

  • ถ้าบิดปุ่มโพเทนชิโอมิเตอร์ไปสุดทางด้านหนึ่ง จะมีแรงดัน 0 โวลต์เข้าที่ขา และค่าที่อ่านได้จะเป็น 0
  • ถ้าบิดไปสุดทางอีกด้าน จะมีแรงดัน 5 โวลต์เข้าที่ขา และค่าที่อ่านได้จะเป็น 1023
  • ส่วนค่าตรงกลางระหว่างนั้น ฟังก์ชัน analogRead() จะคืนค่าตัวเลขระหว่าง 0 ถึง 1023 ที่เป็นสัดส่วนกับแรงดันที่ป้อนเข้าขานั้นๆ
Analog Read Serial

กระบวนการนี้คือกลไกพื้นฐานของ ตัวแปลงสัญญาณอนาล็อกเป็นดิจิทัล (ADC) ที่ถูกฝังมากับชิปหลักของ Arduino เองเลย

  • ขาดิจิทัลทำงานแบบ Binary (เปิด/ปิด) แต่โลกจริงของเรามันเป็นอนาล็อก
  • ด้วยการส่งแรงดันไฟฟ้าที่เปลี่ยนแปลงได้ผ่านโพเทนชิโอมิเตอร์ (ตัวต้านทานปรับค่าได้) Arduino จะตรวจจับได้ว่า มีแรงดันอยู่เท่าไหร่ แล้วส่งข้อมูลนั้นไปยัง Serial Monitor เป็นลำดับของตัวเลขจำนวนเต็ม 10-bit

potentiometer_led_rgb_color_theory_1772681525046.png

มาดูกันว่า ADC 10-Bit มันทำงานยังไง

เมื่อแรงดันไฟฟ้าเข้าสู่ขาอนาล็อก เช่น A0 โปรเซสเซอร์ ATmega328P จะทำการแปลง ADC ทันที

  1. ADC 10-bit จะแบ่งช่วงแรงดัน 0-5V ออกเป็น 1024 ขั้น (step) คณิตศาสตร์
  2. ถ้าปุ่มอยู่ที่ 0V (GND) ค่าที่ได้คือ 0
  3. ถ้าบิดไปที่ 2.5V (ครึ่งทาง) ADC จะคืนค่า 512
  4. ถ้าอยู่ที่ 5.0V สูงสุด ADC จะคืนค่า 1023
int sensorPin = A0;  // ประกาศขาอนาล็อกให้ชัดเจนไปเลย!

void setup() {
  // เปิดการสื่อสารแบบ UART ที่ความเร็ว 9600 Baud เพื่อคุยกับคอม
  Serial.begin(9600);
}

void loop() {
  // อ่านค่าจากอนาล็อกเป็นดิจิทัล
  int sensorValue = analogRead(sensorPin);

  // ส่งค่าจำนวนเต็มตรงๆ ไปที่ Serial Terminal
  Serial.println(sensorValue);

  delay(1); // รอสัก 1 มิลลิวินาทีเพื่อให้ระบบเสถียร
}

แปลงตัวเลขกลับเป็นแรงดันจริงๆ

ตัวเลขดิบอย่าง "845" มันดูไม่ค่อยเข้าใจง่ายสำหรับการวัด แปลงกลับเป็นแรงดันใช้งานได้ด้วยสมการง่ายๆ:

  • float voltage = sensorValue * (5.0 / 1023.0);
  • บรรทัดนี้เอาไปคูณกับอัตราส่วน "แรงดันต่อหนึ่งขั้น"
  • Serial Monitor จะแสดงค่าแรงดันเป็นทศนิยมให้เห็นแล้ว เช่น 4.13V

อุปกรณ์ที่ต้องใช้

  • Arduino Uno/Nano (ใช้ขาอินพุตอนาล็อก A0-A5 ที่มีมาให้)
  • โพเทนชิโอมิเตอร์แบบหมุน (10K-Ohm) (ทำหน้าที่เป็นตัวแบ่งแรงดันไฟฟ้า)
  • สาย USB Data Cable (เพื่อส่งข้อมูลแบบ UART ต่อเนื่อง)
  • Arduino IDE Serial Monitor / Serial Plotter Tool (ตัว Serial Plotter จะเปลี่ยนค่าตัวเลขให้เป็นกราฟคลื่นเรียบๆ ให้เห็นการเปลี่ยนแปลงแบบอนาล็อกเลย)

ข้อมูล Frontmatter ดั้งเดิม

apps:
  - "1x Arduino IDE"
author: "SBR"
category: ""
components:
  - "1x Breadboard (generic)"
  - "1x Jumper wires (generic)"
  - "1x Rotary potentiometer (generic)"
  - "1x Arduino UNO"
description: "ตัวอย่างนี้จะโชว์ให้เห็นวิธีอ่านค่าจากเซนเซอร์ Analog อย่างโพเทนชิออมิเตอร์ รับค่าแล้วส่งไปแสดงผลที่ Serial Monitor งานตึงๆ วัยรุ่นต้องลอง!"
difficulty: "Easy"
documentationLinks: []
downloadableFiles:
  - "https://projects.arduinocontent.cc/14740004-27bc-4108-b513-dba2a34892cb.ino"
encryptedPayload: "U2FsdGVkX18Q+g0ALgtdJ16XAcAyGgooM80AiMWn9UGJFy8Pmwwl+uIcQHvudME9P7HNsftBGDgCoqJr/djBHGoAnGj8WW3Kp+JXhn8O7LY="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/analog-read-serial-fff5fa_cover.jpg"
lang: "en"
likes: 1
passwordHash: "9d59d695b840cf686d3820dfc3aa626023665830ccc0b76e0c572b55fd8d1e6f"
price: 199
seoDescription: "Learn to read Analog input from a Potentiometer using Arduino and Serial Monitor with this step-by-step Analog Read Serial guide."
tags:
  - "built-in example"
  - "analog read serial"
  - "basics"
title: "อ่านค่า Analog ง่ายๆ แต่หล่อ!"
tools: []
videoLinks:
  - "https://www.youtube.com/embed/l7wo_Iqw7QY"
views: 9964