+1 đánh giá

Làm sao để điều khiển LED đơn sáng dần lên và tắt dần xuống

Bài hướng dẫn này tôi sẽ giới thiệu cho các bạn làm sao để lập trình cho LED đơn sáng dần lên và tắt dần xuống dùng xung PWM và hàm analogWrite().

 

Bước 1: Tìm hiểu về PWM.
khoere_pwm-6433200025.png khoere_f4trtzxia58p2h0.medium1-2086004060.jpg

Với Arduino UNO chần PWM nằm ở các chân  3, 5, 6, 9, 10, và 11. Và các chân này cho phép bạn xuất ra tính hiệu dạng xung có độ rộng mức 1,0 thay đổi như hình 1. Độ rộng chu ỳ của các xung này là 255. Khi bạn gọi hàm analogWrite(64) thì độ rộng mức [1] chiếm 25% chu kỳ. Và analogWrite(255) sẽ chiếm 100% chu kỳ.

Với các xung có độ rộng mức [1] thay đổi thì khi đặt lên LED sẽ làm cho LED sáng với mức tương ứng bằng điện áp trung bình trong cả chu kỳ của xung PWM. Hay nó cách khác, Với PWM 25%, LED sáng 25%. PWM 100%, LED sáng 100%. 

Bước 2: Đấu nối Mạch
khoere_f45yk0wia58p2it.medium1-9119457672.jpg khoere_fym2la1ia58p7t5.medium1-8894986435.jpg khoere_f3sgt2dia58p7sk.medium1-4833799344.jpg

Bạn tiến hành nối như hình trên, Điện trở 220Ohm, LED đơn nối với chân số 3 Arduino UNO. 

Bước 3: Lập trình
int led = 3;           // Nối LED vào chân 3
int brightness = 0;    // Biến độ sáng
int fadeAmount = 5;    // Độ phân giải mức sáng sau 1 lần thay đổi, giá trị càng lớn LED sáng lên càng nhanh.


void setup()  { 
  pinMode(led, OUTPUT);
} 


void loop()  { 
  analogWrite(led, brightness);    //Đầu tiên LED sáng 0%.

  // Thay đổi độ sáng
  brightness = brightness + fadeAmount;

  // Sau khi sáng dần lên hết mức thì tắt dần xuống.
  if (brightness == 0 || brightness == 255) {
    fadeAmount = -fadeAmount ; 
  }     
  // Chờ 30s rồi thay đổi mức sáng tiếp theo. 
  delay(30);                            
}

 

(!) Nếu có bất kỳ thắc mắc nào cần hỏi vui lòng đặt câu hỏi tại HỏiHay.Net, Cộng đồng Hỏi đáp Hỏi Hay sẽ trả lời bạn.
1,883 lượt xem ^tháng ^ngày, ^năm
Lam Nguyen Van 380 điểm

Please log in or register to Comment this Media.