Phần 2: PWM | Thay đổi ánh sáng của LED trên Arduino kiến thức mới năm 2023
Mục lục bài viết
Phần 2: PWM | Thay đổi ánh sáng của LED trên Arduino – Cập nhật kiến thức mới nhất năm 2023
Đã được đăng vào 11/12/2019 @ 09:25
Arduino cơ bản 02 – Phần 2: PWM | Thay đổi ánh sáng của LED trên Arduino
Tổng quan
Bài viết hôm nay mình sẽ hướng dẫn các bạn cách bật một con LED sáng dần và tắt dần như thế nào? Qua đó, các bạn sẽ tìm hiểu thêm một hàm mới là analogWrite() và cách sử dụng các chân PWM.
Xem thêm:
Sơ đồ
Vật tư cần thiết cho bài này:
- Arduino Board
- LED
- Breadboard và dây cắm
- Điện trở 220 Ohm
Code mẫu
/*
Fading Light
This example shows how to fade an LED on pin 10 using the analogWrite() function.
*/
int ledPin = 6; // the pin that the LED is attached to
void setup() {
// declare pin 9 to be an output:
pinMode(ledPin,OUTPUT);
// initialize serial communication at 9600 bits per second:
Serial.begin(9600);
}
void loop(){
fadeOn(2000,5);
fadeOff(2000,5);
}
void fadeOn(unsigned int time,int increament){
//change the brightness by FOR statement
for (byte value = 0 ; value < 255; value+=increament){
// print out the value:
Serial.println(value);
// set the brightness of pin 10:
analogWrite(ledPin, value);
delay(time/(255/5));
}
}
void fadeOff(unsigned int time,int decreament){
//change the brightness by FOR statement
for (byte value = 255; value >0; value-=decreament){
Serial.println(value);
analogWrite(ledPin, value);
delay(time/(255/5));
}
}
Giải thích code
void fadeOn(unsigned int time,int increament){
//change the brightness by FOR statement
for (byte value = 0 ; value < 255; value+=increament){
// print out the value:
Serial.println(value);
// set the brightness of pin 10:
analogWrite(ledPin, value);
delay(time/(255/5));
}
}
Trong vòng lặp for điều kiện đưa ra khi giá trị Led = 0, thỏa value < 255 thì Led sẽ tăng thêm một giá trị nói một cách nôm na là giá trị càng tăng lên đồng nghĩa với việc đèn Led sẽ sáng dần lên và ngược lại.
analogWrite(ledPin, value);
Xung PWM
Xung là các trạng thái cao / thấp (HIGH/LOW) về mức điện áp được lặp đi lặp lại. Đại lượng đặc trưng cho 1 xung PWM (Pulse Width Modulation) bao gồm tần số (frequency) và chu kì xung (duty cycle).
Tần số là gì?
Tần số là số lần lặp lại trong 1 đơn vị thời gian. Đơn vị tần số là Hz, tức là số lần lặp lại dao động trong 1 giây.
Lấy ví dụ, 1Hz = 1 dao động trong 1 giây. 2Hz = 2 dao động trong 1 giây. 16MHz = 16 triệu dao động trong 1 giây.
Hoạt động của xung trong thực tế
analogWrite | Tỉ lệ | Chu kỳ xung |
analogWrite(0) | 0/255 | 0% |
analogWrite(64) | 64/255 | 25% |
analogWrite(127) | 127/255 | 50% |
analogWrite(191) | 191/255 | 75% |
analogWrite(255) | 255/255 | 100% |
Hàm analogWrite() là một lệnh được ghi giá trị trên một chân của Arduino. Các chân PWM (~) thường xuất hiện trên Board Arduino Uno là 3, 5, 6, 9, 10, 11.
Các chân PWM thường dùng để điều khiển độ sáng của một đèn Led hay là điều khiển động và sử dụng trong điều khiển Servo.
Lời kết
Qua bài 2 – phần 2 chúng ta biết được cách dùng analogWrite() trong việc điều khiển Thay đổi ánh sáng của LED là như thế nào. Ứng dụng của PWM trong Arduino.
Nguồn: arduinokit.vn
Kết thúc
Ngoài các bài viết tin tức, bài báo hàng ngày của https://www.kythuatcodienlanh.com/, nguồn nội dung cũng bao gồm các bài viết từ các cộng tác viên chuyên gia đầu ngành về chuỗi kiến thức kỹ thuật điện, điện lạnh, điện tử, cơ khí,…,.. được chia sẽ chủ yếu từ nhiều khía cạnh liên quan chuỗi kiến thức này.
Bạn có thể dành thời gian để xem thêm các chuyên mục nội dung chính với các bài viết tư vấn, chia sẻ mới nhất, các tin tức gần đây từ chuyên gia và đối tác của Chúng tôi. Cuối cùng, với các kiến thức chia sẻ của bài viết, hy vọng góp phần nào kiến thức hỗ trợ cho độc giả tốt hơn trong hoạt động nghề nghiệp cá nhân!
* Ý kiến được trình bày trong bài viết này là của tác giả khách mời và không nhất thiết phải là SEMTEK. Nhân viên tác giả, cộng tác viên biên tập sẽ được liệt kê bên cuối bài viết.
Trân trọng,
Các chuyên mục nội dung liên quan