Skip to content

Instantly share code, notes, and snippets.

@Corteil
Created June 29, 2023 23:23
Show Gist options
  • Save Corteil/a623840a774c264b8689994c22811424 to your computer and use it in GitHub Desktop.
Save Corteil/a623840a774c264b8689994c22811424 to your computer and use it in GitHub Desktop.
Circuitpython code for ibus servo protocal
import time
uart = busio.UART(rx=board.SLOT2.FAST2, tx=board.SLOT2.FAST1, baudrate=115200, bits=8, parity=None, stop=1 )
buffer=bytearray(31)
error_flag = False
while True:
c=uart.read(1)
#time.sleep(0.005)
#print(c[0])
try:
if c[0] == 0x20:
uart.readinto(buffer)
checksum = 0xffff - 0x20
for i in range(29): checksum -= buffer[i]
if checksum == (buffer[30] <<8) | buffer[29]:
# skip buffer[0] = 0x40
ch1 = buffer[2]*255+buffer[1]
ch2 = buffer[4]*255+buffer[3]
ch3 = buffer[6]*255+buffer[5]
ch4 = buffer[8]*255+buffer[7]
ch5 = buffer[10]*255+buffer[9]
ch6 = buffer[12]*255+buffer[11]
print('ch 1-',ch1,' 2-',ch2,' 3-',ch3,' 4-',ch4,' 5-',ch5,' 6-',ch6)
#time.sleep(0.5)
except Exception:
pass
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment