Các loại đèn trong nhà có chức năng tự bật khi trời tối và tự tắt khi có ánh sáng sử dụng quang trở để hiện thực. Với cấu tạo đơn giản của quang trở, bài viết này giúp bạn biết thêm những kiến thức về điện tử.
Kiến thức về quang trở
Quang trở là linh kiện điện tử rất hay gặp trong những mạch có sử dụng cảm biến ánh sáng. Quang trở như một loại điện trở, đơn vị là (Ohm), thay đổi theo cường độ ánh sáng.
Nếu môi trường thiếu sáng, ánh sáng mờ hoặc tối, điện trở của "quang trở" sẽ tăng cao, và ngược lại ánh sáng càng nhiều thì điện trở sẽ giảm. Với nguyên lý đó, ta có thể xây dựng ứng dụng đèn led, khi có ánh sáng, đèn led sẽ tắt; khi tối, đèn led sẽ sáng lên. Các bạn có thể trang bị thêm kiến thức về "điện trở" trong bài viết Điện Trở - Resisitor.
Xung PWM (Pulse Width Modulation)
Xung bao gồm các trạng thái (HIGH/LOW) của mức điện áp, bao gồm tần số (frequency) và chu kì xung (duty cycle) nhằm xác định trạng thái dao động. Chức năng của xung PWM có thể điều khiển động cơ, thay đổi độ sáng tối của đèn led, ... tham khảo chi tiết hơn về xung PWM tại Điều Chế Độ Rộng Xung PWM.
Chuẩn bị
- Arduino Uno.
- Breadboard.
- Dây cắm breadboard.
- Đèn led.
- Quang trở.
- Điện trở.
Sử dụng hàm
Serial
: đối tượng chứa các hàm giao tiếp giữa các mạch Arduino, có thể hiểu Serial
được dùng trong việc giao tiếp giữa các board mạch với nhau (hoặc board mạch với máy tính hoặc với các thiết bị khác.
Lưu ý, nếu bạn đang sử dụng các hàm của thư viện Serial
, không thể sử dụng chân digital 0 và digital 1, và tất nhiên chân digital 0 và digital 1 lúc này sẽ có dòng điện. Để mở bảng COM3 giao tiếp với máy tính, bạn ấn tổ hợp phím CTRL
+ SHIFT
+ M
.
Serial.begin(9600)
: cổng giao tiếp với máy tính, có các tốc độ truyền sau: 300, 600, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, hoặc 115200
Analog
:
analogRead()
: đọc giá trị điện áp từ một chân Analog (ADC). Trên mạch Arduino UNO có 6 chân Analog In, được kí hiệu từ A0 đến A5. Trên các Arduino có những chân tương tự, với ký tự "A" đầu tiên, sau đó là số hiệu của chân. Cú pháp :analogRead(chân đọc điện áp)
.analogWrite()
: lệnh xuất ra từ một chân trên mạch như một mức tín hiệu analog - xung PWM. Hàm thường sử dụng để điều khiển mức sáng tối của đèn led, hoặc động cơ bằng cách phát xung PWM. Giá trị mức xung PWM nằm trong khoảng từ 0 đến 255.
Sơ đồ lắp đặt
Cài đặt
Bước 1: Khai báo
Analog = 0
: Định nghĩa chân quang trở chân A0.Led = 11
: Chân led chân 11.value = 0
: Giá trị ban đầu.
int Analog = 0; int Led = 11; int value = 0;
Bước 2: Khai báo giá trị của biến trong hàm setup(), mở cổng 9600
pinMode
: định nghĩa chân xuất tín hiệuSerial.begin(9600);
void setup() { pinMode(Led, OUTPUT); Serial.begin(9600); }
Bước 3: Gồm các bước
- Gán giá trị nhận được từ hàm
analogRead
vàovalue
. - In ra giá trị tại cổng giao tiếp
COM3
(ấn tổ hợp phímCTRL
+SHIFT
+M
) giá trị củavalue
. - Xuất giá trị xung PWM với 2 giá trị: chân đèn led và
value
nhận được. - Dừng chương trình trong 10ms.
void loop() { value = analogRead(Analog); Serial.println(value); analogWrite(Led, value); delay(10); }
Code đầy đủ
void setup()
{
pinMode(Led, OUTPUT);
Serial.begin(9600);
}
void loop()
{
value = analogRead(Analog);
Serial.println(value);
analogWrite(Led, value);
delay(10);
}
Kết quả
Sau khi nối mạch và nạp code như trên, ta thực hiện bước cuối cùng, xem value
vừa nhận được tại màn hình COM3
bằng cách ấn tổ hợp phím CTRL
+ SHIFT
+ M
. Nhận thấy sự thay đổi value
do ảnh hưởng của ánh sáng trong môi trường, ánh sáng càng nhiều value
càng giảm, và ngược lại, ánh sáng càng ít thì value
càng cao.