analog Write() |
คำอธิบาย เขียนค่าอนาล็อกที่ขา (คลื่น PWM) ซึ่งสามารถทำให้แสงไฟ LED สว่างในหลายระดับ หรือ ขับมอเตอร์ด้วยความเร็วหลายระดับ หลังจากเรียกฟังก์ชัน analogWrite() ขานั้นจะสร้างคลื่นสี่เหลี่ยมอย่างต่อเนื่องซึ่งมีรอบการทำงานตามที่กำหนดไว้จนกว่าจะมีการเรียกฟังก์ชัน analogWrite() (หรือเรียก digitalRead() หรือ digitalWrite() บนขาเดียวกัน) ความถี่ของสัญญาณ PWM ที่ขาส่วนใหญ่จะอยู่ที่ประมาณ 490 เฮิร์ตซ์ ใน บอร์ด Uno และ ในบอร์ดที่คล้ายกัน ขาที่ 5 และ 6 มีความถี่ประมาณ 980 เฮิร์ตซ์ ขาที่ 3 และ 11 บนบอร์ด Leonardo มีความถี่ประมาณ 980 เฮิร์ตซ์ เช่นกัน ในบอร์ด Arduino ส่วนใหญ่ (ATmega168 หรือ ATmega328) ฟังก์ชันนี้ทำงานบนขา 3, 5, 6, 9, 10, และ 11 ในบอร์ด Arduino Mega จะทำงานบนขา 2-13 และ 44 - 46 บอร์ด Arduino ที่เก่ากว่าที่มี ATMega8 จะรองรับ เฉพาะ analogWrite() บนขา 9, 10, และ 11 บอร์ด Arduino Due รองรับ analogWrite() บนขา 2 ถึง 13 และยังมีขาสำหรับ DAC0 และ DAC1 ซึ่งแตกต่างจากขา PWM ขา DAC0 และ DAC1 เป็นตัวแปลงดิจิตอลเป็นอนาล็อก และ ทำหน้าที่เป็นเอาต์พุตเป็นแบบอนาล็อก ไม่จำเป็นต้องเรียกใช้ฟังก์ชัน pinMode() เพื่อการตั้งค่าขาให้เป็นเอาต์พุต ก่อนการเรียกใช้งานฟังก์ชันanalogWrite() ฟังก์ชัน analogWrite ไม่มีการทำงานร่วมกับขาอนาล็อก หรือ ฟังก์ชัน analogRead การใช้งาน analogWrite(pin, value) พารามิเตอร์pin: ขาที่จะเขียนลงไป value: รอบการทำงาน: ระหว่าง 0 (ปิดตลอด) ถึง 255 (เปิดตลอดเวลา) ค่าที่ส่งกลับไม่มี ข้อสังเกต และ ปัญหาที่พบเจอเอาต์พุต PWM สร้างขึ้นบนขา 5 และ 6 จะมีรอบสูงกว่าที่คาดไว้ นี้เป็นเพราะการปฏิสัมพันธ์ของฟังก์ชั่น millis() และ delay() ที่ใช้เวลาภายในร่วมกัน เพื่อสร้างเอาต์พุต PWM จะสังเกตได้ส่วนใหญ่ในการตั้งค่ารอบของวงจรต่ำ (เช่น 0 - 10) และอาจส่งผลให้ค่าเอาต์พุต 0 ที่ขา 5 และ 6 ไม่ปิดการทำงาน ตัวอย่างตั้งค่าเอาต์พุต LED ตามสัดส่วนค่าที่อ่านจากตัวต้านทานปรับค่าได้ int ledPin = 9; // LED ต่อที่ขาดิจิตอล 9 int analogPin = 3; // ตัวต้านทานปรับค่าได้ต่อขาอนาล็อก 3 int val = 0; // ตัวแปรเก็บค่าที่อ่านได้ void setup() { pinMode(ledPin, OUTPUT); // ตั้งค่าขาเป็นเอาต์พุต } void loop() { val = analogRead(analogPin); // อ่านค่าขาอินพุต analogWrite(ledPin, val / 4); // ค่า analogRead มีค่าเริ่มจาก 0-1023 analogWrite ค่าเริ่มจาก 0-255 } |
วันอังคารที่ 14 พฤศจิกายน พ.ศ. 2560
Arduino - analogWrite( ) - Electronics Lab
สมัครสมาชิก:
ส่งความคิดเห็น (Atom)
ไม่มีความคิดเห็น:
แสดงความคิดเห็น