เริ่มต้น สอน Arduino : รับข้อมูลจากผู้ใช้ Analog Input
ในตัวอย่างนี้ เราจะใช้ตัวต้านทานปรับค่าได้ ซึ่งสามารถปรับค่าความต้านทานโดยการหมุนปุ่ม เราจะให้ Arduino อ่านค่าความต้านทานเข้ามา ซึ่งค่าที่อ่านได้มาหลายค่าไม่ได้มีเพียง 0 หรือ 1 เท่านั้น เราเรียกค่าแบบนี้ว่า analog ซึ่งมีได้หลายค่า Arduino มีความสามารถในการอ่านค่า Analog โดยจะอ่านได้ค่า 1024 ค่า คือ 0-1023 ค่า ซึ่งเป็นความสามารถมาจากวงจรแปลง Analog to Digital Conversion (ADC) วงจรของ Arduino มีความละเอียด 10 bit ซึ่งค่า 2^10 = 0-1023 ยิ่งวงจร ADC มีความละเอียดมากค่าที่ได้ก็จะมีความกว้างมาก ทำให้มีความถูกต้องมากขึ้นด้วย เช่น ถ้าละเอียด 16 bit ก็จะอ่านค่าได้ 2^16 = 0- 65,535
การอ่านค่าแบบ analog ไม่สามารถอ่านมาได้ทุกขา จะต้องใช้ขาที่มีคุณสมบัตินี้ด้วย สังเกตง่าย ๆ คือขาที่ขึ้นต้นด้วยตัว A คือ A0-A5
ค่าที่อ่านได้เป็นโวลต์ ซึ่งสามารถแปลงโวลต์ให้เป็นค่า 0-1023 หรือแปลงจากค่า 0-1023 ให้เป็นโวลต์ได้เช่นกัน
เช่น แรงดันไฟฟ้าอ้างอิงสูงสุด 0-5 โวลต์ ถ้าค่า 0 ก็แปลงได้เป็น 0 โวลต์ ค่า 1023 ก็แปลงได้ 5 โวลต์ ถ้าอ่านค่าได้ 2.12V ก็แปลงได้ค่า 434
เราสามารถอ่านค่า Analog เข้ามาได้ง่าย ๆ โดยใช้คำสั่ง
analogRead(ขาที่ต้องการ);
ค่าที่อ่านได้ 0-1023
มาลองดูตัวอย่าง Analog Input : โดยใช้ตัวต้านทานปรับค่าได้
1 2 3 4 5 6 7 8 9 10 11 12 |
int analogPin = A0; int val = 0; void setup() { Serial.begin(9600); } void loop() { val = analogRead(analogPin); Serial.println(val); } |
ลองเปลี่ยนวงจรเป็นตัวต้านทานปรับค่าได้ตามแสงหรือ LDR กันบ้างโดยใช้โคดเดิม
มาดูตัวอย่าง ให้เขียนปรับค่า delay ของ led ตามค่าที่อ่านเข้ามาได้จากตัวต้านทานปรับค่าได้ หรือ ldr โดยดัดแปลงจากโคดนี้
1 2 3 4 5 6 7 8 9 10 11 12 |
void setup() { // initialize digital pin 13 as an output. pinMode(13, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(13, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(13, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second } |
บทเรียนก่อนหน้าบทเรียนถัดไป
ยังไม่มีคอมเมนต์
คุณสามารถเป็นคนแรกที่คอมเมนต์