Arduino LED Mờ dần

Trong bài hướng dẫn này, chúng ta sẽ học:

※ Lưu ý:

Bài hướng dẫn này cung cấp kiến thức sâu sắc giúp bạn hiểu nguyên lý hoạt động. Để dễ hiểu hơn, bạn có thể sử dụng Arduino - Thư viện ezLED.

Phần cứng cần chuẩn bị

1×Arduino Uno R3
1×USB 2.0 cable type A/B (for USB-A PC)
1×USB 2.0 cable type C/B (for USB-C PC)
1×LED Kit
1×LED (red)
1×LED Module
1×220Ω Resistor
1×breadboard
1×dây jumper
1×(Khuyến nghị) Screw Terminal Block Shield for Arduino Uno
1×(Khuyến nghị) Breadboard Shield for Arduino Uno
1×(Khuyến nghị) Enclosure for Arduino Uno
1×(Khuyến nghị) Prototyping Base Plate & Breadboard Kit for Arduino UNO

Or you can buy the following kits:

1×DIYables STEM V3 Starter Kit (Arduino included)
1×DIYables Sensor Kit (30 sensors/displays)
1×DIYables Sensor Kit (18 sensors/displays)

Về LED

Bản đồ các chân

LED có hai chân:

  • Pin Cathode(-): cần được kết nối với GND (0V)
  • Pin Anode(+): được sử dụng để điều khiển trạng thái của LED
sơ đồ chân LED

Cách hoạt động

Sau khi kết nối điện cực catôt(-) với đất:

  • Nếu nối GND với anode (+), LED tắt.
  • Nếu nối VCC với anode (+), LED sáng.
  • Nếu phát tín hiệu PWM cho anode (+), độ sáng của LED được thay đổi theo giá trị PWM. Giá trị PWM dao động từ 0 đến 255. Giá trị PWM càng lớn, LED càng sáng. Giá trị PWM càng nhỏ, LED càng tối.
    • Nếu giá trị PWM bằng 0, nó tương đương với GND, do đó LED tắt
    • Nếu giá trị PWM bằng 255, nó tương đương với VCC, do đó LED sáng hoàn toàn
    cách đèn LED hoạt động

    ※ Lưu ý:

    Đối với hầu hết các LED, cần sử dụng một điện trở giữa anode (+) và VCC. Giá trị của điện trở phụ thuộc vào thông số kỹ thuật của LED.

    Arduino - làm mờ đèn LED

    Một số pin của Arduino có thể được lập trình để tạo tín hiệu PWM. Ta có thể làm mờ LED bằng cách kết nối chân anode (+) của LED với một pin của Arduino, chân cathode (-) của LED với GND, và lập trình để tạo PWM trên pin của Arduino.

Sơ đồ đấu dây

sơ đồ nối dây LED Arduino

This image is created using Fritzing. Click to enlarge image

Cách Lập Trình

  • Cấu hình một chân của Arduino ở chế độ đầu ra số bằng cách sử dụng hàm pinMode(). Ví dụ, chân 9:
pinMode(9, OUTPUT);
  • Thiết lập độ sáng của LED bằng cách phát sinh tín hiệu PWM tương ứng bằng hàm analogWrite():
analogWrite(9, brightness);

Trong đó độ sáng có giá trị từ 0 đến 255.

Mã Arduino - Ví dụ làm mờ dần từ Arduino IDE

Hướng dẫn từng bước

  • Kết nối Arduino với máy tính qua cáp USB
  • Mở Arduino IDE, chọn bo mạch và cổng phù hợp
  • Sao chép mã dưới đây và dán vào Arduino IDE
/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/arduino/arduino-led-fade */ #define LED_PIN 9 // the Arduino PWM pin connected to the LED int brightness = 0; // how bright the LED is int fadeAmount = 5; // how many points to fade the LED by // the setup routine runs once when you press reset: void setup() { // declare pin 9 to be an output: pinMode(LED_PIN, OUTPUT); } // the loop routine runs over and over again forever: void loop() { // set the brightness of pin 9: analogWrite(LED_PIN, brightness); // change the brightness for next time through the loop: brightness = brightness + fadeAmount; // reverse the direction of the fading at the ends of the fade: if (brightness <= 0 || brightness >= 255) { fadeAmount = -fadeAmount; } // wait for 30 milliseconds to see the dimming effect delay(30); }
  • Nhấn nút Tải lên trên Arduino IDE để tải mã lên Arduino
nạp mã bằng Arduino ide
  • Xem độ sáng của đèn LED

Giải thích mã nguồn

Bạn có thể tìm lời giải thích trong dòng bình luận của mã Arduino ở trên.

※ Lưu ý:

Ví dụ trên sử dụng hàm delay() để tăng dần và giảm dần độ sáng. Hàm delay() khiến LED fade không mượt và chặn các đoạn mã khác. Trong các phần tiếp theo, chúng ta sẽ học cách fade-in và fade-out một cách mượt mà và không chặn các đoạn mã khác bằng cách sử dụng hàm millis().

Cách để làm mờ dần LED trong một khoảng thời gian mà không dùng delay()

/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/arduino/arduino-led-fade */ #define LED_PIN 9 // the Arduino PWM pin connected to the LED #define FADE_PEDIOD 3000 // fade time is 3 seconds unsigned long fadeStartTime; // the setup routine runs once when you press reset void setup() { pinMode(LED_PIN, OUTPUT); // declare pin 9 to be an output fadeStartTime = millis(); } // fade-in in loop, and restart after finishing void loop() { unsigned long progress = millis() - fadeStartTime; if (progress <= FADE_PEDIOD) { long brightness = map(progress, 0, FADE_PEDIOD, 0, 255); analogWrite(LED_PIN, brightness); } else { fadeStartTime = millis(); // restart fade again } }

Cách làm LED sáng dần trong một khoảng thời gian mà không dùng delay()

/* * Mã Arduino này được phát triển bởi newbiely.vn * Mã Arduino này được cung cấp để sử dụng công khai, không có ràng buộc. * Để xem hướng dẫn chi tiết và sơ đồ kết nối, vui lòng truy cập: * https://newbiely.vn/tutorials/arduino/arduino-led-fade */ #define LED_PIN 9 // the Arduino PWM pin connected to the LED #define FADE_PEDIOD 3000 // fade time is 3 seconds unsigned long fadeStartTime; // the setup routine runs once when you press reset void setup() { pinMode(LED_PIN, OUTPUT); // declare pin 9 to be an output fadeStartTime = millis(); } // fade-in in loop, and restart after finishing void loop() { unsigned long progress = millis() - fadeStartTime; if (progress <= FADE_PEDIOD) { long brightness = map(progress, 0, FADE_PEDIOD, 0, 255); analogWrite(LED_PIN, brightness); } else { fadeStartTime = millis(); // restart fade again } }

Video Tutorial

Việc sản xuất video tốn rất nhiều thời gian. Nếu video hướng dẫn hữu ích cho việc học của bạn, hãy đăng ký kênh YouTube để ủng hộ. Nếu nhu cầu đủ cao, chúng tôi sẽ cố gắng làm thêm nhiều video.

Thử thách bản thân

Thay đổi độ sáng của LED bằng biến trở. Gợi ý: Tham khảo Arduino - Biến trở.

Kiến thức bổ sung

  • Tín hiệu PWM được tạo bởi hàm analogWrite() sẽ làm mờ một đèn LED. Điều này là do PWM ở tần số cao. Nếu chúng ta tạo một hàm tùy chỉnh (yêu cầu kiến thức nâng cao), hàm đó sẽ phát tín hiệu PWM với tần số thấp, đèn LED sẽ nhấp nháy thay vì mờ.
  • Tóm tắt: Tín hiệu PWM có thể được sử dụng trong Arduino để: điều khiển động cơ servo, điều khiển động cơ DC, phát âm thanh bằng buzzer piezo, làm mờ LED, nhấp nháy LED ...