Mục tiêu bài học
- Hiểu khái niệm PWM (Pulse Width Modulation).
- Sử dụng hàm
analogWrite()
để điều chỉnh độ sáng LED. - Ứng dụng thực tế: đèn ngủ dimmer, đèn xe máy, điều khiển quạt, v.v.
PWM là gì?
PWM là kỹ thuật điều biến độ rộng xung – bật/tắt tín hiệu với chu kỳ nhất định. Tỷ lệ thời gian bật gọi là Duty Cycle.
0%
duty → LED tắt hoàn toàn.100%
duty → LED sáng tối đa.- Arduino sử dụng các chân PWM có ký hiệu
~
như 3, 5, 6, 9, 10, 11.
Viết code điều chỉnh độ sáng LED
Kết nối phần cứng
- LED nối với chân
6
(PWM) qua điện trở 220Ω–330Ω. - GND của LED nối về GND Arduino.
Hướng dẫn nạp code
Bước 1: Kết nối Arduino Uno với máy tính
-
Sử dụng cáp USB (loại USB A to B, giống cáp máy in).
-
Cắm một đầu vào Arduino Uno, đầu còn lại vào cổng USB của máy tính.
Bước 2: Cài đặt phần mềm Arduino IDE
-
Truy cập: https://www.arduino.cc/en/software
-
Tải về và cài đặt bản phù hợp với hệ điều hành của bạn (Windows, macOS hoặc Linux).
Bước 3: Mở Arduino IDE và thiết lập cấu hình
-
Mở Arduino IDE.
-
Vào menu Tools (Công cụ) → Board (Bo mạch) → chọn Arduino Uno.
-
Vào Tools → Port → chọn đúng cổng COM (thường là COM3, COM4,... tùy máy).
Nếu không thấy cổng COM, hãy kiểm tra driver USB hoặc cài CH340 Driver nếu Arduino dùng chip CH340.
Bước 4: Cài đặt phần mềm Arduino IDE
-
Nhấn nút Upload (mũi tên →) trên thanh công cụ.
-
Quan sát thanh trạng thái, khi hiện "Done uploading" nghĩa là nạp thành công.
Code ví dụ:
Điều khiển độ sáng của đèn LED được kết nối với chân D6 của Arduino Uno bằng cách dùng PWM (xung rộng xung)
int ledPin = 6;
void setup() {
pinMode(ledPin, OUTPUT);
}
void loop() {
for (int brightness = 0; brightness <= 255; brightness++) {
analogWrite(ledPin, brightness);
delay(10);
}
for (int brightness = 255; brightness >= 0; brightness--) {
analogWrite(ledPin, brightness);
delay(10);
}
}
Mô phỏng LED Fade In / Fade Out
Ứng dụng thực tế: Đèn ngủ dimmer
Có thể điều chỉnh độ sáng bằng biến trở, nút nhấn hoặc cảm biến ánh sáng để tạo đèn ngủ, đèn LED linh hoạt theo môi trường.
Các hàm Arduino sử dụng
Hàm | Công dụng |
---|---|
pinMode(pin, OUTPUT) |
Thiết lập chân xuất tín hiệu PWM. |
analogWrite(pin, value) |
Gửi tín hiệu PWM (value từ 0–255) ra chân. |
delay(ms) |
Tạm dừng để thấy hiệu ứng rõ ràng. |
Lưu ý PWM
- Không phải tất cả chân đều hỗ trợ
analogWrite()
. analogWrite()
chỉ tạo tín hiệu PWM, không phải điện áp analog thực sự.- Nếu cần điện áp analog thực, dùng mạch DAC.
Gợi ý bài tập cho học viên
- Thêm nút nhấn tăng/giảm độ sáng từng bước.
- Thử điều khiển 2 LED cùng lúc với độ sáng ngược nhau.
- Thay đổi tốc độ sáng bằng thay giá trị
delay()
.
Nhận xét