มาดูตัวอย่างการใช้งาน Analog Input กันอีกซักหน่อย
ตัวอย่าง อ่านค่า Analog จากตัวต้านทานปรับค่าได้แล้วนำไปแสดงผลควบคุม LED ตัวอย่างนี้จะให้เราได้ฝึกการใช้คำสั่ง if else เพื่อเช็คเงื่อนไขต่าง ๆ
เราจะต่อ LED 4 ดวงให้แทนระดับ 4 Level ถ้าปรับตัวต้านทานปรับค่าได้ค่าสูงสุดให้ LED ติดทั้ง 4 ดวง และค่าต่ำสุดให้ LED ดับทุกดวง โดยมีเงื่อนไขดังนี้
- LED ติด 1 ดวง ถ้าค่า 0-255
- LED ติด 2 ดวง ถ้าค่า 256-512
- LED ติด 3 ดวง ถ้าค่า 513-768
- LED ติด 4 ดวง ถ้าค่ามากกว่า 769
ตัวอย่างโคดโปรแกรม Arduino เขียนได้ดังนี้
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 } |
ใน Arduino มีคำสั่งช่วยให้เราเขียนโคดได้ง่ายขึ้น ในการแปลงค่าหรือแมพค่า 0-1023 ให้เป็นช่วงที่เราต้องการ เช่นในกรณีนี้เราต้องการแมพแปลงให้อยู่ในช่วง 1-4
คำสั่ง map(ค่า input ,ค่า input ต่ำสุด,ค่า input สูงสุด,ค่าที่ต้องการแปลงต่ำสุด,ค่าที่ต้องการแปลงสูงสุด)
เช่น int val = map(val, 0, 1023, 0, 3);
ดูตัวอย่างการใช้งาน
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 } |
1 2 3 4 5 6 7 |
void setup() {} void loop() { int val = analogRead(0); val = map(val, 0, 1023, 0, 255); analogWrite(9, val); } |
บทเรียนก่อนหน้าบทเรียนถัดไป
ยังไม่มีคอมเมนต์
คุณสามารถเป็นคนแรกที่คอมเมนต์