เราจะอ่านค่าอินพุตแบบอนาล็อก แล้วส่งผลลัพธ์ไปแสดงที่ Serial Monitor ครับน้อง
- ถ้าบิดปุ่มโพเทนชิโอมิเตอร์ไปสุดทางด้านหนึ่ง จะมีแรงดัน 0 โวลต์เข้าที่ขา และค่าที่อ่านได้จะเป็น 0
- ถ้าบิดไปสุดทางอีกด้าน จะมีแรงดัน 5 โวลต์เข้าที่ขา และค่าที่อ่านได้จะเป็น 1023
- ส่วนค่าตรงกลางระหว่างนั้น ฟังก์ชัน
analogRead()จะคืนค่าตัวเลขระหว่าง 0 ถึง 1023 ที่เป็นสัดส่วนกับแรงดันที่ป้อนเข้าขานั้นๆ
Analog Read Serial
กระบวนการนี้คือกลไกพื้นฐานของ ตัวแปลงสัญญาณอนาล็อกเป็นดิจิทัล (ADC) ที่ถูกฝังมากับชิปหลักของ Arduino เองเลย
- ขาดิจิทัลทำงานแบบ Binary (เปิด/ปิด) แต่โลกจริงของเรามันเป็นอนาล็อก
- ด้วยการส่งแรงดันไฟฟ้าที่เปลี่ยนแปลงได้ผ่านโพเทนชิโอมิเตอร์ (ตัวต้านทานปรับค่าได้) Arduino จะตรวจจับได้ว่า มีแรงดันอยู่เท่าไหร่ แล้วส่งข้อมูลนั้นไปยัง Serial Monitor เป็นลำดับของตัวเลขจำนวนเต็ม 10-bit

มาดูกันว่า ADC 10-Bit มันทำงานยังไง
เมื่อแรงดันไฟฟ้าเข้าสู่ขาอนาล็อก เช่น A0 โปรเซสเซอร์ ATmega328P จะทำการแปลง ADC ทันที
- ADC 10-bit จะแบ่งช่วงแรงดัน 0-5V ออกเป็น
1024ขั้น (step) คณิตศาสตร์ - ถ้าปุ่มอยู่ที่
0V (GND)ค่าที่ได้คือ0 - ถ้าบิดไปที่
2.5V(ครึ่งทาง) ADC จะคืนค่า512 - ถ้าอยู่ที่
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จะเปลี่ยนค่าตัวเลขให้เป็นกราฟคลื่นเรียบๆ ให้เห็นการเปลี่ยนแปลงแบบอนาล็อกเลย)