Files
pi-dro/dro_print.py
2026-03-21 23:51:53 +01:00

49 lines
1.1 KiB
Python

#/usr/bin/python3
"""
is the port available:
ls /dev/*i2c*
scan connected I2C slaves:
sudo i2cdetect -y 1
"""
from enum import IntEnum
import time
# Prefer system-installed `smbus2`, otherwise fall back to local `smbus2.py`.
try:
import smbus2
except ImportError:
import RPi.fake_smbus as smbus2 # type: ignore
print('smbus2 not available; using fake smbus2.py')
_bus = smbus2.SMBus(1)
def poll_i2c_data():
""" poll I2C data from Arduino """
try:
data = _bus.read_i2c_block_data(0x08, 0, 4)
x_position_update = int.from_bytes(bytes(data[0:2]), 'little', signed=True)
z_position_update = int.from_bytes(bytes(data[2:4]), 'little', signed=True)
print(f"X Position: {x_position_update}, Z Position: {z_position_update}")
except IOError as e:
print(f"I2C read error: {e}")
except OSError as e:
print(f"I2C OS error: {e}")
def main():
try:
while 1:
poll_i2c_data()
time.sleep(0.2) # Poll every 200ms
except KeyboardInterrupt:
raise SystemExit
if __name__ == '__main__':
main()