จากตัวอย่างก่อนหน้านี้ที่แสดงการเปิด-ปิดไฟ ซึ่งเป็นลักษณะของสัญญาณดิจิตอล คือเป็นการแสดงค่า 0-1 หรือ เปิด-ปิด หรือ 5-0 โวล์ ในตัวอย่างนี้จะแสดงการส่งค่าที่มีค่าต่างๆนอกเหนือจาก 0-1 กล่าวคือเราจะส่งเป็นแบบอนาล็อกนั่นเอง โดยปกติแล้วไมโครคอนโทรเลอร์หรือคอมพิวเตอร์ จะไม่สามารถส่งค่าแบบอนาล็อกได้ เพราะว่ามันรู้จักค่าดิจิตอลเท่านั้น ดังนั้นถ้าเราต้องการส่งค่าเป็นแบบอนาล็อก เราจะต้องใช้เทคนิคที่เรียกว่า PWM(Pulse Width Modulation)
PWM คืออะไร
PWM จะใช้หลักการที่ส่งค่าแบบดิจิตอลคือ 0-1 ด้วยความถี่ค่าหนึ่ง แต่จะส่งค่าให้มีสัญญาณสูง(1)สลับกับสัญญาณต่ำ(0) โดยให้ระยะเวลาของแต่ละชนิดสัญญาณต่างกัน เพื่อให้ค่าเฉลี่ยของสัญญาณทั้งหมดออกมาเป็นค่าที่ต้องการนั่นเอง เช่นถ้าเราส่งค่าที่มีระยะสัญญาณสูงและต่ำเท่ากัน ก็จะได้ค่าเป็น 2.5 โวล์ ถ้าเราให้ค่าสัญญาณสูงยาวกว่า เราก็จะได้ค่ามากกว่า 2.5 และในทำนองเดียวกันถ้าเราให้ค่าสัญญาณต่ำยาวกว่า เราก็จะได้ค่าเฉลี่ยน้อยกว่า 2.5 นั่นเอง Arduino สามารถรับค่าอนาล็อคได้ 255 ระดับ ดังนั้นหมายความว่าค่าสัญญาณ 0 โวล์ถึง 5 โวล์ ก็จะแสดงได้เป็น 0 ถึง 255 ในสัญญาณดิจิตอลนั่นเอง โดยเราสามารถใช้หลักบัญญัติไตรยางค์ สามารถเปรียบเทียบค่าได้เลย ในการใช้งาน PWM เราจะต้องเลือกขาที่เขียนว่าเป็น PWM เท่านั้น จะใช้ขาอื่นไม่ได้ เพราะบอร์ดไม่ได้รองรับ และจำนวนขาที่เป็น PWM ก็จะมีไม่เท่ากัน ขึ้นกับรุ่นของบอร์ดที่เราใช้งาน
ตัวอย่างไฟสว่าง
ขอให้เปิดโปรแกรม Arduino ขึ้นมาแล้วเขียนโค๊ดดังนี้
int i;
void setup() {
// initialize the digital pin as an output.
// Pin 13 has an LED connected on most Arduino boards
pinMode(13, OUTPUT);
}
void loop() {
for (i=1; i<256; i++){
analogWrite(13, i);
delay(20);
}
for (i=255; i>=0; i--){
analogWrite(13, i);
delay(20);
}
}
จากนั้น Upload ไปที่บอร์ด แล้วจะได้ผลดังวิดิโอ
ไม่มีความคิดเห็น:
แสดงความคิดเห็น