Điều khiển LED
1. Mục tiêu bài học #
Sau bài này bạn sẽ:
- Biết cách nạp code cho Arduino Nano
- Biết cách điều khiển LED bật/tắt
- Hiểu cách hoạt động của chân OUTPUT
- Tạo được hiệu ứng LED nhấp nháy
2. Giới thiệu #
Arduino có sẵn một LED nhỏ trên board nối với chân D13. Chúng ta sẽ viết chương trình để:
- Bật LED
- Chờ một khoảng thời gian
- Tắt LED
- Lặp lại liên tục
3. Code nháy LED #
void setup() {
// Khai báo chân D13 là OUTPUT
pinMode(13, OUTPUT);
}
void loop() {
// Bật LED
digitalWrite(13, HIGH);
// Chờ 1 giây
delay(1000);
// Tắt LED
digitalWrite(13, LOW);
// Chờ 1 giây
delay(1000);
}4. Giải thích code #
pinMode() #
pinMode(13, OUTPUT);
Dùng để khai báo chân D13 là chân xuất tín hiệu. Arduino sẽ điều khiển điện áp tại chân này.
digitalWrite() #
digitalWrite(13, HIGH);
- HIGH = bật LED
- LOW = tắt LED
delay() #
delay(1000);
Dừng chương trình trong:
- 1000 ms = 1 giây
5. Nạp code #
Nhấn nút
Upload
Arduino sẽ biên dịch và nạp code.
Sau khi thành công:
- LED 13 sẽ nhấp nháy liên tục
6. Thử thay đổi tốc độ nháy #
Ví dụ nháy nhanh hơn:
delay(200);
Hoặc rất nhanh:
delay(50);
7. Thử một số biến thể của chương trình nháy LED #
Biến thể 1 – Nháy nhanh hơn #
LED bật 0.2 giây rồi tắt 0.2 giây.
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
delay(200);
digitalWrite(13, LOW);
delay(200);
}Kết quả:
⚡ LED nhấp nháy nhanh hơn chương trình ban đầu.
Biến thể 2 – Sáng lâu, tắt nhanh #
LED sáng 2 giây và chỉ tắt 0.5 giây.
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
delay(2000);
digitalWrite(13, LOW);
delay(500);
}Kết quả:
💡 LED sáng phần lớn thời gian.
Biến thể 3 – Nháy nhanh 3 lần rồi nghỉ #
LED sẽ chớp 3 lần liên tiếp rồi nghỉ 1 giây.
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
for(int i = 0; i < 3; i++)
{
digitalWrite(13, HIGH);
delay(150);
digitalWrite(13, LOW);
delay(150);
}
delay(1000);
}Kết quả:
⚡⚡⚡ → nghỉ → ⚡⚡⚡
Biến thể 4 – Tạo hiệu ứng SOS đơn giản #
Mô phỏng tín hiệu:
3 nháy nhanh → 3 nháy chậm → 3 nháy nhanh
void blink(int t)
{
digitalWrite(13, HIGH);
delay(t);
digitalWrite(13, LOW);
delay(t);
}
void setup()
{
pinMode(13, OUTPUT);
}
void loop()
{
for(int i=0;i<3;i++)
blink(150);
for(int i=0;i<3;i++)
blink(500);
for(int i=0;i<3;i++)
blink(150);
delay(1500);
}Kết quả:
⚡ ⚡ ⚡ → 💡 💡 💡 → ⚡ ⚡ ⚡
Biến thể 4 – Điều khiển bằng biến thời gian #
Thay đổi tốc độ chỉ bằng sửa một dòng.
int blink_time = 300;
void setup() {
pinMode(13, OUTPUT);
}
void loop() {
digitalWrite(13, HIGH);
delay(blink_time);
digitalWrite(13, LOW);
delay(blink_time);
}Muốn đổi tốc độ chỉ cần sửa:
blink_time = 100;
hoặc
blink_time = 1000;
Qua các ví dụ trên, bạn đã sử dụng được:
pinMode()digitalWrite()delay()- Biến (
int) - Hàm (
void blink()) - Vòng lặp
for
Đây là các thành phần sẽ xuất hiện trong hầu hết các bài lập trình Arduino tiếp theo.