Queue number counter ・ 排队计数
2つのDigiClockユニットをI2Cハブで制御して番号を表示する順番待ちカウンター。
この構成をエディタで開く・編集する →| 部品 | 役割 | ポート | リンク・価格 |
|---|---|---|---|
| M5Stack Core2 | Controller | grove_i2c, grove_analog, grove_uart, mbus | official page — $46.9 |
| Unit PaHub2 | I2C hub (1→6) | grove_i2c | official page — $7.95 |
| Unit DigiClock | Digit display 1 | grove_i2c | official page — $5.95 |
| Unit DigiClock | Digit display 2 | grove_i2c | official page — $5.95 |
M5Stack Core2と2台のDigiClockユニットを使った、整理番号表示装置です。PaHub2 I2Cハブを介してCore2が2台のDigiClockを制御し、番号を表示します。
# M5Stack Core2 + PaHub2 + 2x DigiClock (queue number display)
# Wiring: Core2 Port.A -> PaHub2 IN, PaHub2 OUT0 -> DigiClock1, OUT1 -> DigiClock2
import time
from machine import Pin, I2C
from m5stack import lcd
# I2C setup on Core2 Port.A (default pins: sda=21, scl=22)
i2c = I2C(0, scl=Pin(22), sda=Pin(21), freq=100000)
# TCA9548A I2C address (default 0x70)
TCA_ADDR = 0x70
def select_channel(channel):
"""Select TCA9548A channel (0-5)."""
i2c.writeto(TCA_ADDR, bytes([1 << channel]))
# DigiClock I2C address (default 0x30)
DIGICLOCK_ADDR = 0x30
def digiclock_write(display_num, segments):
"""Send 4-digit segments to a DigiClock.
segments: list of 4 bytes, each byte controls 7-segment (a,b,c,d,e,f,g,dp).
"""
select_channel(display_num) # 0 for first, 1 for second
# DigiClock expects: [digit0, digit1, digit2, digit3]
i2c.writeto(DIGICLOCK_ADDR, bytes(segments))
# Segment patterns for digits 0-9 (a=bit0, b=bit1, ... g=bit6, dp=bit7)
seg_digits = [
0x3F, # 0
0x06, # 1
0x5B, # 2
0x4F, # 3
0x66, # 4
0x6D, # 5
0x7D, # 6
0x07, # 7
0x7F, # 8
0x6F, # 9
]
def show_number(display_num, number):
"""Display a 4-digit number (0-9999) on a DigiClock."""
digits = [0, 0, 0, 0]
for i in range(3, -1, -1):
digits[i] = number % 10
number //= 10
segments = [seg_digits[d] for d in digits]
digiclock_write(display_num, segments)
# Main loop: show queue numbers
queue1 = 1
queue2 = 100
while True:
show_number(0, queue1)
show_number(1, queue2)
lcd.clear()
lcd.print('Queue1: %d' % queue1, 10, 20)
lcd.print('Queue2: %d' % queue2, 10, 60)
time.sleep(1)
queue1 += 1
queue2 += 1
if queue1 > 9999:
queue1 = 0
if queue2 > 9999:
queue2 = 0
この作り方はAIが構成から生成したものです(未検証)。通電前に配線とコードをご確認ください。
この構成はAIが実在するM5Stack部品から設計し、ポート互換をサーバで検証したものです。編集・共有できます。
エディタで開く →UnitKit は M5Stack® 製品向けの非公式ツール。作りたいものを書くと、部品リストと配線図が出ます。