from machine import Pin, I2C, mem32
import utime
class I2C_SlaveSender:
def __init__(self, i2c, address):
self.i2c = i2c
self.address = address
def read_pins_state(self):
return (Pin(2).value(), Pin(3).value(), Pin(4).value(), Pin(5).value())
def send_data(self, data):
self.i2c.writeto(self.address, bytes([data]))
i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=100000) # I2Cインスタンスを作成
sender = I2C_SlaveSender(i2c, 0x41) # I2Cスレーブのアドレスを0x41に設定
try:
while True:
pins_state = sender.read_pins_state() # ピンの状態を読み取る
data = (pins_state[0] << 3) | (pins_state[1] << 2) | (pins_state[2] << 1) | pins_state[3]
sender.send_data(data) # ピンの状態をI2Cで送信
utime.sleep(0.1) # 0.1秒待機して状態を送信
except KeyboardInterrupt:
pass