Sau khi hoàn thành chương trình đầu tiên để làm quen với uPyCraft trong bài trước, bây giờ, chúng ta hãy thử học cách điều khiển module đèn LED. Trong bài tập này, chúng ta sẽ lập trình cho module đèn LED bật và tắt liên tục (còn gọi là blink) sau mỗi giây.
3 yếu tố cơ bản cấu thành nên một hệ thống điều khiển là:
Trong chương trình bật/tắt LED, chúng ta sẽ chỉ sử dụng Output mà không sử dụng Input. xController chính là Control Unit – sử dụng tín hiệu Digital để điều khiển module Output là đèn LED .
Có 2 loại tín hiệu cơ bản mà chúng ta sẽ làm việc với chúng trong lập trình điện tử, đó là tín hiệu Digital và tín hiệu Analog. Chúng ta sẽ tìm hiểu về Analog trong các bài học sau.
Tín hiệu Digital là tín hiệu chỉ có 2 giá trị là Tắt (còn gọi là LOW, 0V) và Bật (HIGH, 3.3V hay 5V tùy vào điện áp hoạt động của hệ thống, xController sử dụng 3.3V).
Trạng thái tắt bật của tín hiệu Digital
Module LED hoạt động dựa vào tín hiệu Digital truyền tới:
import time while True: pin11.write_digital(1) time.sleep(1) pin11.write_digital(0) time.sleep(1)
Sau khi chạy chương trình, bạn sẽ thấy đèn LED phát sáng và tắt liên lục mỗi 1 giây.
pin11.write_digital(1)
Lưu ý: Một chân IO có thể được sử dụng với các chế độ hoạt động khác nhau:Câu lệnh này cấu hình chế độ hoạt động của chân IO (còn gọi là IO Pin) nối với module LED thành DIGITAL OUTPUT để có thể điều khiển được và đổi trạng thái thành 1 (tương đương với HIGH).
Do tính đa năng như vậy, nên các chân IO còn được gọi là General Purpose Input Output (các chân IO đa mục đích), hay gọi tắt là GPIO.
xController có thiết kế sẵn 6 cổng mở rộng, được đánh số từ cổng 1 đến cổng 6. Mỗi cổng mở rộng này có 4 chân tín hiệu. Bạn có thể thấy 4 chân tín hiệu này thông qua dây cáp tín hiệu đi kèm bộ kit. Dây cáp này có 4 sợi với 4 màu khác nhau:
Firmware MicroPython của xController đã khai báo sẵn các đối tượng có tên là pinXY để chúng ta dễ dàng làm việc với các chân IO 1 và 2 của các cổng mở rộng. Tên của các chân IO này như sau:
Do đèn LED được nối với cổng mở rộng số 1 và chỉ sử dụng 1 chân tín hiệu nên ta sẽ dùng đối tượng pin11 để điều khiển bật tắt dùng tín hiệu digital.
Câu lệnh để bật tắt 1 chân tín hiệu digital như sau:
pinXY.write_digital(value)
Sau đó, dùng một vòng lặp mãi mãi while True đã tìm hiểu ở bài trước để lặp lại liên tục các lệnh bên trong.
while True: # Các lệnh cần thực hiện
pin11.write_digital(1)
Câu lệnh này xuất ra tín hiệu mức HIGH và cấp điện cho cho chân IO nối với module LED, tương ứng với việc bật đèn LED.
pin11.write_digital(0)
Tương tự, câu lệnh này xuất tín hiệu LOW cho chân IO nối với module LED, tương ứng với mức điện áp 0V. Khi đó, LED sẽ được tắt.
time.sleep(1)
Dừng chương trình trong một giây. Chúng ta cần tạm dừng chương trình trong 1 giây để có thể nhìn rõ được hiệu ứng bật và tắt đèn LED. Nếu không, đèn LED sẽ được bật và tắt một cách quá nhanh, mắt người không nhìn rõ được.
Câu lệnh sleep() có cú pháp như sau:
time.sleep(s)
Tham số truyền vào:
Vậy là bạn đã làm quen với khái niệm tín hiệu Digital và biết cách điều khiển module LED. Ở bài học sau, bạn sẽ kết hợp thêm các tín hiệu Input khác để làm những bài học nâng cao hơn.