Nội dung bài viết
Nguyễn Đăng Khánh Hôm nay tôi sẽ hướng dẫn các bạn điều khiển đèn led tự động bật - tắt với cảm biến ánh sáng trong bộ STDIO Starter Kit v2. Có thể các bạn đã từng sử dụng qua các loại đèn trong nhà có chức năng tương tự và chưa hiểu nguyên lý của nó, ở bài viết này tôi sẽ hướng dẫn các bạn sử dụng "quang trở", và đây có thể là tiền đề cho các bạn phát triển sản phẩm cho riêng mình.

Giới thiệu

Hôm nay tôi sẽ hướng dẫn các bạn điều khiển đèn led tự động bật - tắt với cảm biến ánh sáng trong bộ STDIO Starter Kit V3. Có thể các bạn đã từng sử dụng qua các loại đèn trong nhà có chức năng tương tự và chưa hiểu nguyên lý của nó, ở bài viết này tôi sẽ hướng dẫn các bạn sử dụng "quang trở", và đây có thể là bước đệm đầu tiên cho các bạn phát triển sản phẩm cho riêng mình.

Tiền đề bài viết

Nằm trong chuỗi bài viết hướng dẫn sử dụng các linh kiện có trong bộ STDIO Starter Kit V3, với cấu tạo đơn giản của "quang trở", giúp các bạn có thể biết thêm những kiến thức về mạch điện tử, ở bài viết này sẽ nâng cao hơn, tất nhiên đều trong khả năng của các bạn vì đây là 1 ứng dụng rất dễ dàng.

Đối tượng hướng đến

Chương trình này hướng đến các bạn ĐANG LÀM QUEN với việc lập trình Arduino và đã có trên tay bộ STDIO Starter Kit V3. Bạn đọc có thể tham khảo các bài viết khác về Arduino trong Chuyên Mục Arduino. Các linh kiện điện tử cần thiết các bạn có thể tự mua hoặc truy cập STDIO Electronics​​​ để ủng hộ sản phẩm của STDIO. 

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.

 

quang trở

 

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,...Các bạn có thể tham khảo chi tiết hơn về xung PWM tại Điều Chế Độ Rộng Xung PWM của tác giả Vũ Quang Huy.

Chuẩn bị

  • Arduino Uno.
  • Breadboard.
  • Dây cắm breadboard.
  • Đèn led.
  • Quang trở.
  • Điện trở

Sử dụng hàm

Sau đây là những hàm tôi sử dụng trong bài viết 

- Serial : thư viện 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.println(value) : Hàm này sẽ xuất dữ liệu ra cổng Serial dưới dạng chuỗi cho người có thể đọc được, hàm này tương tự Serial.print(), nhưng khi in ra sẽ xuống dòng, chức năng như "\n" trong C++ . 
  • 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​

serial

- Analog :

  • AnalogRead() :Nhiệm vụ đọ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

sơ đồ

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ệu
  • Serial.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ào value.
  • In ra giá trị tại cổng giao tiếp COM3 (ấn tổ hợp phím CTRL + SHIFT + M) giá trị của "value".
  • 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); 
}

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.

kết thúc

Lời kết

Qua bài viết này, chúng ta có thể thực hiện và hiểu thêm về một số hàm, thư viện cũng như cách hoạt động của quang trở. Mong rằng khi xem và thực hành theo, các bạn có thể vận dụng và sáng tạo thêm nhiều thứ hay hơn nữa, tiếp theo sẽ là những chuỗi bài hướng dẫn dành cho các bạn mới bắt đầu, tất cả đều có trong bộ STDIO Starter Kit v2. Hãy tham gia cùng Stdio để tìm kiếm những thử thách mới cùng Arduino.

THẢO LUẬN
ĐÓNG