#8 สอน Arduino Tutorial : Arduino อ่านค่าแบบ Analog INPUT
Arduino สามารถอ่านค่า Analog เข้ามาประมวลผลได้
โดยขาของ Arduino Uno ที่ใช้ได้คือ ขา A0-A5
ค่าที่อ่านได้อยู่ระหว่าง 0-1023
โดยใช้คำสั่ง analogRead(ขา);
ในตัวอย่างนี้ จะใช้ตัวต้านทานปรับค่าได้ เป็นเซนเซอร์สำหรับส่งค่า Input Analog ให้กับ Arduino
ใน Arduino uno จะสามารถวัดโวลต์ 0-5V ซึ่งเป็นสัญญาณแบบ Analog แล้วแปลงเป็นเลข 0-1023 แบบดิจิตอลได้ โดยขาที่ใช้ได้คือขา A0-A5 ในบอร์ดจะเขียนแถบนี้ว่า ANALOG IN
ตัวอย่างการใช้งาน
ต้องการวัดค่าจากตัวต้านทานปรับค่าได้ เป็นค่าแบบ Analog โดยต่อกับขา A0 อ่านค่าที่ผู้ใช้ปรับหมุนเข้ามา เพื่อใช้ในการประมวลผล
การใช้งาน Analog Read
โคดตัวอย่าง Arduino AnalogRead
void setup() {
Serial.begin(9600);
}
void loop() {
int val = analogRead(A0);
Serial.println(val);
delay(100);
}
การแปลงเลขช่วงหนึ่ง ให้เป็นอีกช่วงหนึ่ง
ค่าที่อ่านได้จากตัวต้านทานปรับค่าได้ทางขา Analog จะมีค่าระหว่าง 0-1023 ถ้าต้องการนำค่าไปหรี่ไฟ LED สามารถทำได้ โดยใช้คำสั่ง analogWrite(); โดยค่าที่ส่งออกไปให้ LED มีค่าอยู่ในช่วง 0-255
จะเห็นว่า ค่าที่รับเข้ามา กับค่าที่ส่งออกไป ไม่ใช่ค่าเดียวกัน ใน Arduino มีคำสั่งที่ช่วงแปลงช่วง 0-1023 เป็น 0-255 หรือแปลงจากเลขช่วงหนึ่ง ให้เป็นอีกช่วงหนึ่งได้ง่าย ๆ โดยใช้คำสั่ง map
คำสั่ง map
รูปแบบคือ map(ค่าที่ต้องการแปลง , ค่าต่ำสุดของตัวตั้งต้น , ค่าสูงสุดของตัวตั้งต้น , ค่าต่ำสุดของตัวที่ต้องการแปลง , ค่าต่ำสุดของตัวที่ต้องการแปลง );
โดยจะให้ค่าออกมาเป็น ตัวแปรแบบ int
ตัวอย่าง
ต้องการแปลงค่า จากตัวแปร val ซึ่งมีค่าอยู่ระหว่าง 0-1023 ให้มีค่าระหว่าง 0-255 แล้วเก็บไว้ในตัวแปร int res
int res = map(val,0,1023,0,255);
ทดลองเขียนโค้ดกันเลย Arduino Simulator
Ex1 : https://wokwi.com/projects/326763510287565396
Ex2 : https://wokwi.com/projects/326763732311999060
Ex3 : https://wokwi.com/projects/326764005886526036