Giới thiệu
Hàm analogWrite()
được sử dụng để tạo ra một tín hiệu điều khiển Analog. Hàm analogWrite() sử dụng kỹ thuật Pulse Width Modulation (PWM), trong đó tín hiệu đầu ra được chia thành các chu kỳ đều nhau, trong đó tỷ lệ thời gian tín hiệu ở mức cao (ON) so với tổng thời gian chu kỳ xác định mức điện áp đầu ra. Kết quả là ta có thể điều chỉnh mức điện áp trung bình của tín hiệu đầu ra bằng cách thay đổi tỷ lệ thời gian tín hiệu ở mức cao và mức thấp.
Trên hầu hết các bo mạch Arduino (những board sử dụng ATmega168 hoặc ATmega328P), chức năng PWM hoạt động trên các chân 3, 5, 6, 9, 10 và 11. Trên Arduino Mega, PWM hoạt động trên các chân 2 – 13 và 44 – 46
Hàm analogWrite() được sử dụng phổ biến để điều khiển độ sáng của đèn LED, tốc độ của động cơ, độ rộng xung PWM cho các thiết bị điều khiển, và nhiều ứng dụng khác liên quan đến điều khiển mức điện áp.
Cú pháp
analogWrite(pin, giá_trị);
Thông số
pin:
Chỉ định chân kỹ thuật số của Arduino mà chúng ta muốn tạo ra tín hiệu PWM.
giá_trị:
Chỉ định mức điện áp trung bình của tín hiệu đầu ra, từ 0 đến 255. Giá trị 0 tương ứng với mức điện áp thấp nhất (OFF), trong khi giá trị 255 tương ứng với mức điện áp cao nhất (ON).
Trả về
Không
Code ví dụ
Dưới đây là một ví dụ về cách sử dụng hàm analogWrite() trong Arduino để điều chỉnh độ sáng của một đèn LED:
// Chân digital pin kết nối với LED const int ledPin = 9; void setup() { // Khởi tạo chân digital pin là OUTPUT pinMode(ledPin, OUTPUT); } void loop() { // Điều chỉnh độ sáng từ mức tối đến sáng và ngược lại for (int brightness = 0; brightness <= 255; brightness++) { analogWrite(ledPin, brightness); // Đặt độ sáng của LED // Chờ một khoảng thời gian trước khi tăng độ sáng tiếp theo delay(10); } // Tắt đèn LED hoàn toàn analogWrite(ledPin, 0); // Chờ một khoảng thời gian trước khi bắt đầu vòng lặp mới delay(1000); }
Trong ví dụ này, mình sử dụng hàm analogWrite()
để điều chỉnh độ sáng của đèn LED kết nối với chân số 9. Vòng lặp for được sử dụng để tăng dần độ sáng từ 0 đến 255, và sau đó tắt đèn LED hoàn toàn. Sau mỗi vòng lặp, chúng ta chờ một khoảng thời gian trước khi bắt đầu vòng lặp tiếp theo.