Hướng dẫn lập trình đèn led

2020-04-06T05:56:37-04:00 2020-04-06T05:56:37-04:00 //giaoducsteam.com/vi/news/arduino/bai-2-cach-lam-den-led-nhap-nhay-theo-yeu-cau-61.html ////i0.wp.com/k2.arduino.vn/img/2014/05/25/0/466_8821-1401000666-0-boar-bb.750x525.jpg

Tổ chức giáo dục theo phương pháp STEAM của Mỹ //giaoducsteam.com/uploads/logo_100.png

Bài 2: Cách làm đèn LED nhấp nháy theo yêu cầu

Lắp mạch

Như hình vẽ sau

Mã lập trình và giải thích

Trước tiên, cứ mỗi khi dùng một con LED, chúng ta phải pinMode OUTPUT chân Digital mà ta sử dụng cho con đèn LED. Trong ví dụ ngày hôm nay, chúng ta sử dụng chân LED là chân digital 13. Nên đoạn code sau cần nằm trong void setup[]

pinMode[13, OUTPUT];

Để bật một con đèn LED, bạn phải digitalWrite HIGH cho chân số 13 [chân Digtal được kết nối với con LED]. Đoạn code này nằm trong void loop[]

digitalWrite[13,HIGH];

Dòng lệnh trên sẽ cấp một điện thế là 5V vào chân số Digital 13. Điện thế sẽ đi qua điện trở 220ohm rồi đến đèn LED [sẽ làm nó sáng mà không bị cháy, ngoài ra bạn có thể các loại điện trở khác đèn LED tắt. Và để thấy được trạng thái bật và tắt của đèn LED bạn phải dừng chương trình trong một khoảng thời gian đủ lâu để mắt cảm nhận được [nói vậy thôi, chứ bạn chỉ cần dừng chương trình trong vài miligiây là thấy được rồi]. Vì vậy, hàm delay được tạo ra để làm việc này [Dừng hẳn chương trình bao nhiêu mili giây]!

Vận dụng kiến thức về tín hiệu Analog Input đã học để làm việc với cảm biến ánh sáng và điều khiển đèn LED đa màu RGB được tích hợp sẵn trên xController.

Tìm hiểu cách sử dụng cửa sổ Serial Monitor để xem và theo dõi kết quả đọc được từ cảm biến, từ đó có thể viết đúng logic hoạt động của chương trình.

Viết chương trình điều chỉnh độ sáng của đèn LED RGB một cách tự động dựa vào ánh sáng môi trường.

Kiến thức mới

  • Cảm biến ánh sáng

Cảm biến ánh sáng có nhiều loại, trong đó loại dùng quang trở là phổ biến nhất. Quang trở là một loại điện trở mà giá trị của nó thay đổi theo cường độ ánh sáng nó thu được. Nếu đặt ở môi trường có ít ánh sáng, có bóng râm hoặc bóng tối thì điện trở của quang trở sẽ tăng cao. Ngược lại, nếu đặt ở ngoài nắng, hoặc nơi có ánh sáng thì điện trở sẽ giảm.

Ta có thể sử dụng cảm biến ánh sáng trong rất nhiều ứng dụng thực tế, ví dụ như bật tắt đèn tự động mỗi khi trời tối.

  • LED đa màu RGB

xController được tích hợp sẵn 2 đèn LED đa màu RGB trên board. Đèn LED RGB là đèn LED đặc biệt, có thể phát sáng với nhiều màu khác nhau [lên đến 16 triệu màu]. Màu của đèn LED được tổng hợp từ 3 đèn màu đỏ [Red], xanh lục [Green], xanh lam [Blue] bên trong.

Các LED màu này có độ sáng từ 0 đến 255. Để thay đổi màu đèn LED RGB, chúng ta sẽ thay đổi độ sáng của 3 LED màu này.

  • Cửa sổ Serial Monitor

Cửa sổ Serial Monitor [gọi tắt là cửa sổ Serial] là một công cụ rất hữu ích để quan sát và theo dõi những thông tin trong một chương trình, như in kết quả đọc được từ cảm biến, giúp chỉnh sửa lỗi chương trình một cách dễ dàng.

Bạn có thể mở Serial Monitor bằng cách click vào Tools -> Serial Monitor.

Thiết bị cần sử dụng

Kết nối phần cứng

Viết chương trình

  • Mở phần mềm Arduino IDE.
  • Để làm việc với đèn LED RGB tích hợp trên xController, bạn cài đặt thư viện của xController ở link này: //github.com/AITT-VN/xcontroller_arduino_lib/archive/refs/heads/main.zip hoặc vào link Github để tải về tại //github.com/AITT-VN/xcontroller_arduino_lib
  • Sau khi tải xong, bạn vào menu Sketch \> Include library \> Add .ZIP library, chọn file zip thư viện vừa tải để thêm vào Arduino IDE.

  • Copy đoạn code sau, click vào nút Verify để kiểm tra lỗi chương trình. Sau khi biên dịch không báo lỗi, bạn có thể nạp chương trình vào board.

include

XController xcon; int lightSensorPin = A4_1; // cảm biến ánh sáng nối với cổng 4 int sensorValue= 0; // giá trị đọc được từ cảm biến int outputValue= 0; // giá trị xuất ra cho LED RGB void setup[] {   Serial.begin[9600]; } void loop[] {   //  đọc giá trị cảm biến ánh sáng [0-4095]   sensorValue = analogRead[lightSensorPin];   // in ra cửa sổ Serial kết quả đọc được   Serial.println[sensorValue];   //  chuyển kết quả đọc được sang dải giá trị 0-255   outputValue = map[sensorValue, 0, 4095, 0, 255];   // in ra kết quả chuyển đổi   Serial.println[outputValue];   // thay đổi màu sắc của LED RGB, chỉ thay đổi giá trị màu đỏ   xcon.showLED[0, outputValue, 0, 0];   delay[100];                    }

Giải thích chương trình

Sau khi nạp chương trình, Bạn có thể xem giá trị của cảm biến ánh sáng và kết quả tính toán độ sáng của đèn LED RGB trong cửa sổ Serial Monitor.

include

Để sử dụng thư viện của xController, bạn cần cài đặt như hướng dẫn ở trên. Trong chương trình, bạn cần khai báo thư viện [có tên ] bằng câu lệnh

include.

XController xcon;

Sau khi khai báo thư viện của xController, chúng ta khai báo một đối tượng là XController. Đối tượng này có các hàm để chúng ta làm việc với các chức năng tích hợp trên xController như đèn LED RGB, loa hay cảm biến gia tốc,…

Serial.begin[9600];

Khởi tạo giao tiếp Serial với tốc độ [baud rate] là 9600. Để thông tin hiển thị đúng trong cửa sổ Serial, bạn phải chọn tốc độ truyền nhận [ở góc dưới bên phải của giao diện màn hình Serial] đúng với giá trị dùng để khởi tạo trong chương trình.

Serial.println[sensorValue];

In ra cửa sổ Serial giá trị đọc được từ cảm biến và ngắt xuống dòng. Một câu lệnh tương tự cũng in ra cửa sổ Serial nhưng không ngắt xuống dòng là Serial.print[].

outputValue = map[sensorValue, 0, 4095, 0, 255];

Như ta đã biết, cảm biến xuất ra tín hiệu Analog có giá trị từ 0 đến 4095, trong khi độ sáng của 3 đèn LED trong đèn LED RGB tích hợp nhận giá trị từ 0 đến 255. Vậy nên, ta cần quy đổi hai thang đo này thành một:

  • Khi giá trị cảm biến là 0 thì độ sáng của LED đỏ trong LED RGB là 0.
  • Khi giá trị cảm biến là 4095 thì độ sáng LED đỏ trong LED RGB là 255.

Để chuyển đổi tự động, chúng ta sử dụng hàm map[] cho phép chuyển đổi giá trị trong 1 dải giá trị này sang 1 dải giá trị khác.

Cú pháp của câu lệnh map như sau:

map[value, fromLow, fromHigh, toLow, toHigh]

Các tham số:

  • value: Số cần chuyển đổi.
  • fromLow: Giới hạn dưới của dải giá trị hiện tại.
  • fromHigh: Giới hạn trên của dải giá trị hiện tại.
  • toLow: Giới hạn dưới của dải giá trị mới cần chuyển đổi.
  • toHigh: Giới hạn trên của dải giá trị mới cần chuyển đổi.

xcon.showLED[0, outputValue, 0, 0];

Để thay đổi màu và độ sáng của đèn LED RGB trên xController, chúng ta sử dụng hàm showLED[]. Hàm này có cú pháp như sau:

showLED[whichLED, redValue, greenValue, blueValue];

Các tham số bao gồm:

  • whichLED: LED RGB cần thay đổi màu sắc, nhận 1 trong các giá trị là 0 [cả 2 LED], 1 [LED trái], 2 [LED phải]. Trong chương trình trên, chúng ta dùng giá trị 0 để đổi màu cả 2 LED trái phải trên xController.
  • redValue: Độ sáng của LED đỏ.
  • greenValue: Độ sáng của LED xanh lục.
  • blueValue: Độ sáng của LED xanh lam.

Để thay đổi độ sáng của đèn LED RGB, chúng ta chỉ cần thay đổi độ sáng của LED đỏ và tắt các LED xanh lục, xanh lam.

Sau khi nạp chương trình, bạn thử lấy tay che cảm biến ánh sáng và quan sát sự thay đổi độ sáng của cả 2 đèn LED RGB trên xController.

Chủ Đề