Monday, September 15, 2014

Hiệu ứng Fading

Hiệu ứng mờ Fading

Bài học này dạy cho chúng ta cách sử dụng hàm analogWrite để làm mờ độ sáng của LED. AnalogWrite sử dụng PWM để bật, tắt nhanh chóng tín hiệu chân digital output, để làm xuất hiện hiệu ứng mờ.
Yêu cầu phần cứng
  • Mạch Arduino board
  • Bảng cắm Breadboard
  • Một con LED
  • Một điện trở 220 ohm

Cách ráp mạch

Kết nối chân dương (chân dài) của LED qua điện trở 220 Ohm tới chân xuất tín hiệu digital số 9 của Arduino. Nối chân âm (chân ngắn) của LED đi vào chân ground.

Sơ đồ

Hình ảnh sử dụng Fritzing. Các ví dụ khác, truy cập Fritzing project page

Code

Sau khi định nghĩa chân 9 là chân ledPin, 
Hàm analogWrite () sẽ nằm trong main loop làm việc với 2 chức năng. 
1. Chỉ ra chân nào được gửi tín hiệu tới
2. Giá trị PWM cần đọc
Để tắt mở LED tạo hiệu ứng mờ Arduino sẽ đọc tín hiệu  PWM từ 0 (thời điểm LED tắt) đến 225(thời điểm LED sáng), và lặp lại quá trình 225 trở về 0 cho tới khi hết một vòng. Trong mã lệnh bên dưới, giá trị PWM được thay đổi khác nhau và đặt là brightness. Mỗi lần đọc độ sáng lại được cộng thêm bởi một giá trị khác là fadeAmount.
Nếu brightness có giá trị cao nhất trong khoảng 0-225 thì fadeAmount sẽ được chuyển thành giá trị đối nghịch với nó. 
analogWrite() có thể thay đổi giá trị PWM rất nhanh, vì vậy quá trình mờ rất là nhanh, hàm delay có tác dụng làm thay đổi tốc độ của hiệu ứng mờ.
/*
 Hiệu ứng mờ
 
 Ví dụ này chỉ ra cách làm hiệu ứng trên LED trên chân 9
 sử dụng hàm analogWrite().
 
 */


int led = 9;           // chân mà LED kết nối tới
int brightness = 0;    // Mức sáng của LED
int fadeAmount = 5;    // những điểm LED có hiệu ứng mờ

// Chương trình chạy một vòng lặp
void setup()  {
  // Chỉ ra chân 9 là chân xuất dữ liệu
  pinMode(led, OUTPUT);
}

// Vòng lặp chạy liên tục của LED
void loop()  {
  // Đặt chân 9 bằng độ sóng:
  analogWrite(led, brightness);  

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

  // Hiệu ứng mờ theo chiều ngược lại( nghĩa là LED mờ từ 0-225 và sáng trở lại)
  if (brightness == 0 || brightness == 255) {
    fadeAmount = -fadeAmount ;
  }  
  // Thời gian trễ là 30ms
  delay(30);                          
}

0 comments:

Post a Comment