การอ่านค่าจากขาอะนาล็อก 10 บิต บอร์ด Arduino
Read Analog Voltage
BOARD | OPERATING VOLTAGE | USABLE PINS | MAX RESOLUTION |
---|---|---|---|
Uno |
5 Volts |
A0 to A5 |
10 bits |
Code
1 2 |
analogRead() [Analog I/O] |
การอ่านค่าจากขาอะนาล็อก 10 บิต บอร์ด Arduino มีตัวแปลงแอนะล็อกเป็นดิจิทัลแบบหลายช่องสัญญาณ 10 บิต ซึ่งหมายความว่าจะแมปแรงดันอินพุตระหว่าง 0 และแรงดันใช้งาน (5V หรือ 3.3V) เป็นค่าจำนวนเต็มระหว่าง 0 ถึง 1023 ตัวอย่างเช่น บน Arduino UNO ค่านี้จะให้ความละเอียดระหว่างการอ่าน: 5 โวลต์ / 1024 หน่วย หรือ , 0.0049 โวลต์ (4.9 มิลลิโวลต์) ต่อหน่วย
- ช่วงอินพุตสามารถเปลี่ยนได้โดยใช้ analogReference() ในขณะที่สามารถเปลี่ยนความละเอียดได้ (สำหรับบอร์ด Zero, Due และ MKR เท่านั้น) โดยใช้ analogReadResolution()
- บนบอร์ดที่ใช้ ATmega (UNO, Nano, Mini, Mega) จะใช้เวลาประมาณ 100 ไมโครวินาที (0.0001 วินาที) ในการอ่านอินพุตแบบอะนาล็อก ดังนั้นอัตราการอ่านสูงสุดจึงอยู่ที่ประมาณ 10,000 ครั้งต่อวินาที
- ในโปรแกรมด้านล่าง สิ่งแรกที่คุณจะทำคือในฟังก์ชันการตั้งค่า เพื่อเริ่มการสื่อสารแบบอนุกรมที่ข้อมูล 9600 บิตต่อวินาที ระหว่างบอร์ดและคอมพิวเตอร์ของคุณด้วยสาย:
1 |
Serial.begin(9600); |
- ในลูปหลักของโค้ดต้องสร้างตัวแปรเพื่อเก็บค่าความต้านทาน (ซึ่งจะอยู่ระหว่าง 0 ถึง 1023 เหมาะสำหรับประเภทข้อมูล int) ที่มาจากโพเทนชิออมิเตอร์
1 |
int sensorValue = analogRead(A0); |
- หากต้องการเปลี่ยนค่าจาก 0-1023 เป็นช่วงที่สอดคล้องกับแรงดันไฟฟ้าที่พินกำลังอ่านจะต้องสร้างตัวแปรอื่น เช่น Float หากต้องการปรับขนาดตัวเลขระหว่าง 0.0 ถึง 5.0 ให้หาร 5.0 ด้วย 1023.0 แล้วคูณด้วย sensorValue :
1 |
float voltage= sensorValue * (5.0 / 1023.0); |
- สุดท้ายต้อง Print ข้อมูลนี้ไปยัง Serial Monitor สามารถทำได้โดยใช้คำสั่ง Serial.println() ในโค้ดบรรทัดสุดท้าย:
1 |
Serial.println(voltage) |
- เมื่อเปิด Serial Monitor ใน Arduino IDE (โดยคลิกที่ไอคอนทางด้านขวาของแถบสีเขียวด้านบน หรือกด Ctrl+Shift+M) จะเห็นตัวเลขต่อเนื่องตั้งแต่ 0.0 – 5.0 เมื่อ หมุน Potentiometer ค่า จะเปลี่ยนตามแรงดันไฟที่เข้าขา A0