#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 จะเป็นโหมด INPUT โดยค่าเริ่มต้น ดังนั้นจึงไม่ต้องกำหนดโหมด หรือถ้าต้องการกำหนดโหมดสามารถเขียนดังนี้ pinMode(A0,INPUT);
- ใช้คำสั่ง analogRead(A0); เพื่ออ่านค่าจากขา A0 เข้ามา ซึ่งค่าที่อ่านได้เป็นจำนวนเต็มประเภท int
- ใช้ตัวแปรประเภท int เก็บค่า จะเขียนโคดได้ int val = analogRead(A0);
โคดตัวอย่าง Arduino AnalogRead
1 2 3 4 5 6 7 8 9 |
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(ค่าที่ต้องการแปลง , ค่าต่ำสุดของตัวตั้งต้น , ค่าสูงสุดของตัวตั้งต้น , ค่าต่ำสุดของตัวที่ต้องการแปลง , ค่าต่ำสุดของตัวที่ต้องการแปลง );
โดยจะให้ค่าออกมาเป็น ตัวแปรแบบ int
ตัวอย่าง
ต้องการแปลงค่า จากตัวแปร val ซึ่งมีค่าอยู่ระหว่าง 0-1023 ให้มีค่าระหว่าง 0-255 แล้วเก็บไว้ในตัวแปร int res
int res = map(val,0,1023,0,255);
บทเรียนก่อนหน้าบทเรียนถัดไป
7 Response Comments
ชอบมากครับ เข้าใจง่าย
สัญญาณ pwm ที่ออกทางขา analog output สามารถนำไปขับโมดุล IGBTได้ไหมครับ
ใช้เป็นสัญญาณสำหรับขับอุปกรณ์อื่น ๆ ได้ครับ
ขอบคุณมากครับ
อ่านเข้าใจได้ง่ายมากเลยครับ
เยี่ยมมาก ชอบมาก
กระจ่างแจ้งขึ้นมาทีละนิด
Thanks a lotttt