Bạn vừa lên giường trùm chăn ấm và chợt nhận ra là quên chưa tắt đèn, hay bạn băn khoăn không biết vừa nãy đã tắt điện phòng tắm chưa. Nếu ở trong những tình huống này, bạn sẽ làm gì?
Sẽ rất thuận tiện nếu bạn có thể bật tắt đèn từ xa bằng remote phải không nào? Ngoài ra, không chỉ là bật tắt, chúng ta sẽ dùng remote để điều chỉnh độ sáng đèn phù hợp cho nhiều hoàn cảnh sử dụng như đọc sách, xem phim hay khi chuẩn bị đi ngủ.
Trong dự án này, chúng ta sẽ dùng đèn LED RGB có trên hộp điều khiển xController để mô phỏng đèn trong nhà và sử dụng remote hồng ngoại để có thể:
from ir_receiver import * ir_rx.start() light_level = 0 while True: if ir_rx.get_code() == IR_REMOTE_UP: light_level = light_level + 50 if light_level > 255: light_level = 255 ir_rx.clear_code() elif ir_rx.get_code() == IR_REMOTE_DOWN: light_level = light_level - 50 if light_level < 0: light_level = 0 ir_rx.clear_code() elif ir_rx.get_code() == IR_REMOTE_SETUP: if light_level > 0: light_level = 0 else: light_level = 255 ir_rx.clear_code() led_onboard.show(0, (light_level, 0, 0)) time.sleep(0.2)
Chương trình sử dụng các lệnh đã học ở những bài học trước về remote và đèn LED RGB.
light_level = 0
Chúng ta dùng biến tên light_level để lưu độ sáng hiện tại của đèn LED và gán giá trị ban đầu là 0.
if ir_rx.get_code() == IR_REMOTE_UP: light_level = light_level + 50 if light_level > 255: light_level = 255 ir_rx.clear_code()
Câu lệnh if kiểm tra xem nút Up có được nhấn không. Nếu có, ta tăng độ sáng đèn LED được lưu trong biến light_level và giữ nguyên mức 255 nếu vượt quá vì đèn LED RGB chỉ có độ sáng tối đa là 255.
Sau đó chúng ta dùng lệnh ir_rx.clear_code() để xóa tín hiệu đã được xử lý để không xử lý lặp lại ở vòng lặp sau nữa.
Chúng ta kiểm tra tương tự cho các nút khác.
led_onboard.show(0, (light_level, 0, 0))
Sau khi đã thay đổi độ sáng của đèn LED trong biến light_level, ở cuối vòng lặp chúng ta dùng câu lệnh show() của thư viện led_onboard để thay đổi độ sáng của đèn LED.