Arduino Nhấp nháy nhiều đèn LED

Hướng dẫn này dạy bạn cách lập trình Arduino để làm cho nhiều đèn LED nhấp nháy đồng thời mà không sử dụng hàm delay. Hướng dẫn cung cấp mã nguồn theo hai cách:

Chúng ta sẽ dùng ba đèn LED làm ví dụ. Bạn có thể dễ dàng chỉnh sửa nó để phù hợp với hai đèn LED, bốn đèn LED, hoặc thậm chí nhiều hơn.

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)

Giới thiệu về LED

Chúng tôi có một hướng dẫn LED chi tiết bao gồm sơ đồ chân phần cứng, nguyên lý hoạt động, cách kết nối Arduino và các hướng dẫn mã. Tìm hiểu thêm tại đây:

Sơ đồ đấu dây

sơ đồ nối dây nhiều đèn LED cho Arduino

This image is created using Fritzing. Click to enlarge image

Mã Arduino - Nhấp nháy nhiều đèn LED

Để nháy đồng thời nhiều LED, chúng ta không thể dựa vào hàm delay(). Điều này xảy ra vì việc sử dụng delay() ngăn chặn việc thực thi mã khác, khiến chúng ta không thể nháy nhiều LED cùng lúc. Thay vào đó, chúng ta sử dụng hàm millis() để quản lý thời điểm đánh dấu một cách hiệu quả.

Đối với người mới bắt đầu, việc quản lý dấu thời gian khi nhấp nháy nhiều đèn LED có thể gặp khó khăn. May mắn thay, thư viện ezLED (BASE_URL/tutorials/arduino/arduino-led-library) đơn giản hóa quá trình này bằng cách xử lý quản lý dấu thời gian ở bên trong. Điều này loại bỏ gánh nặng quản lý dấu thời gian khỏi người dùng khi sử dụng thư viện. Ngoài ra, việc sử dụng một mảng các đèn LED có thể cải thiện tính rõ ràng và tính ngắn gọn của mã.

/* * 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-blink-multiple-led */ #include <ezLED.h> // ezLED library by ArduinoGetStarted.com #define PIN_LED_1 7 // The Arduino pin connected to LED 1 #define PIN_LED_2 8 // The Arduino pin connected to LED 2 #define PIN_LED_3 9 // The Arduino pin connected to LED 3 ezLED led1(PIN_LED_1); // create ezLED object that attach to pin PIN_LED_1 ezLED led2(PIN_LED_2); // create ezLED object that attach to pin PIN_LED_2 ezLED led3(PIN_LED_3); // create ezLED object that attach to pin PIN_LED_3 void setup() { Serial.begin(9600); led1.blink(500, 500); // 500ms ON, 500ms OFF, blink immediately led2.blink(200, 800); // 200ms ON, 800ms OFF, blink immediately led3.blink(800, 200); // 800ms ON, 200ms OFF, blink immediately } void loop() { led1.loop(); // MUST call the led1.loop() function in loop() led2.loop(); // MUST call the led2.loop() function in loop() led3.loop(); // MUST call the led3.loop() function in loop() // DO SOMETHING HERE }

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

  • Nối dây như hình ở trên.
  • Kết nối bo mạch Arduino với máy tính của bạn bằng cáp USB.
  • Mở Arduino IDE trên máy tính của bạn.
  • Chọn bo mạch Arduino đúng (ví dụ Arduino Uno) và cổng COM.
  • Nhấp vào biểu tượng Libraries ở thanh bên trái của Arduino IDE.
  • Tìm “ezLED”, sau đó tìm thư viện ezLED do ArduinoGetStarted cung cấp.
  • Nhấp nút Install để cài đặt thư viện ezLED.
thư viện LED cho Arduino
  • Sao chép đoạn mã ở trên và dán vào Arduino IDE.
  • Biên dịch và tải mã lên bo mạch Arduino bằng cách nhấp vào nút Tải lên trên Arduino IDE.
cách tải mã Arduino lên Arduino ide
  • Xem trạng thái của đèn LED

Mã Arduino - Chớp nhiều LED bằng cách sử dụng mảng

Chúng ta có thể cải thiện mã ở trên bằng cách sử dụng một mảng các đèn LED. Mã dưới đây sử dụng mảng này để xử lý các đối tượng LED.

/* * 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-blink-multiple-led */ #include <ezLED.h> // ezLED library by ArduinoGetStarted.com #define NUM_LED 3 // three LEDs #define PIN_LED_1 7 // The Arduino pin connected to LED 1 #define PIN_LED_2 8 // The Arduino pin connected to LED 2 #define PIN_LED_3 9 // The Arduino pin connected to LED 3 ezLED ledArray[NUM_LED] = { ezLED(PIN_LED_1), // create ezLED object that attach to pin PIN_LED_1 ezLED(PIN_LED_2), // create ezLED object that attach to pin PIN_LED_2 ezLED(PIN_LED_3) // create ezLED object that attach to pin PIN_LED_3 }; void setup() { Serial.begin(9600); ledArray[0].blink(500, 500); // 500ms ON, 500ms OFF, blink immediately ledArray[1].blink(200, 800); // 200ms ON, 800ms OFF, blink immediately ledArray[2].blink(800, 200); // 800ms ON, 200ms OFF, blink immediately } void loop() { for (int i = 0; i < NUM_LED; i++) ledArray[i].loop(); // MUST call the led.loop() function in loop() // DO SOMETHING HERE }

Bằng cách sử dụng thư viện Arduino - Thư viện ezLED, chúng ta có thể nháy nhiều LED một cách linh hoạt như sau:

  • Nháy nhiều đèn LED với các tần số khác nhau
  • Nháy nhiều đèn LED với các thời điểm bắt đầu khác nhau
  • Nháy mỗi đèn LED trong một khoảng thời gian
  • Nháy mỗi đèn LED với một số lần (chu kỳ)

Xem mã ví dụ trong thư viện.

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.