Cytron Technologies
Giờ làm việc: 8:00 - 17:00
Thứ 2 - Thứ 6 (trừ ngày lễ)
Hotline 0362917357
Trong dự án này, mình sẽ chế tạo một thiết bị đếm khách ra vào 2 chiều với Maker Nano RP2040 và Cảm biến Vật cản Hồng ngoại E18-D80NK. Sau đó, mình sẽ lập trình RP2040 với CircuitPython.
Đây là danh sách các linh kiện được sử dụng:
Bạn có thể tải file STL để in 3D hộp đựng bộ sản phẩm tại Thingiverse
Chương trình này được xây dựng trên CircuitPython. Bạn cần thêm bộ thư viện simpleio.py vào thư mục CIRCUITPY/lib folder. Bạn có thể tại bộ thư viện thổng hợp cho CircuitPython tại đây.
Đối với file lcd.py và i2c_pcf8574_interface.py, hãy lưu nó vào thư mục CIRCUITPY/lib/lcd. Mặc định, thư mục lcd sẽ không được tao, bạn cần di chuyển tới thư mục lib và tạo nó.
import time
import board
import busio
import simpleio
import rotaryio
from lcd.lcd import LCD
from lcd.i2c_pcf8574_interface import I2CPCF8574Interface
buzzer = board.BUZZER
NOTE_C4 = 261
NOTE_G4 = 392
IR1 = board.GP2
IR2 = board.GP3
sensor = rotaryio.IncrementalEncoder(IR1, IR2)
LCD_SCL = board.GP5
LCD_SDA = board.GP4
LCD_ADDR = 0x27
i2c_lcd = busio.I2C(LCD_SCL, LCD_SDA)
lcd = LCD(I2CPCF8574Interface(i2c_lcd, LCD_ADDR), num_rows=2, num_cols=16)
lcd.print(" Bidirectional\nVisitor Counter")
simpleio.tone(buzzer, NOTE_C4, duration=0.1)
simpleio.tone(buzzer, NOTE_G4, duration=0.15)
time.sleep(2)
lcd.clear()
lcd.print("No of visitor\n0")
last_count = 0
while True:
count = sensor.position
if count != last_count:
print("No of visitor: {} ".format(count))
lcd.set_cursor_pos(1, 0)
lcd.print("{} ".format(count))
if count > last_count:
simpleio.tone(buzzer, NOTE_G4, duration=0.1)
else:
simpleio.tone(buzzer, NOTE_C4, duration=0.1)
last_count = count
Chúc bạn thành công!