通过I2C将整数数组从Raspberry Pi发送到Arduin

2024-04-25 04:35:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要一次从树莓派发送4个整数到Arduino。目前,Arduino不请求或发送数据,但以后可能需要。我的代码可以工作,但它在大约5个数组被发送后崩溃。在

树莓派代码(Python)

import smbus
import time

bus = smbus.SMBus(1)
address = 0x04

def writeNumber(a,b,c,d):
bus.write_i2c_block_data(address, a, [b, c, d])
return -1


while True:
    try:   
        writeNumber(12,42,-5,0)
        time.sleep(1)                    #delay one second

    except keyboardInterrupt:
        quit()

Arduino代码

^{pr2}$

它将工作在大约5个数组上,即它将发送a,b,c,d,然后在一秒钟后再次发送,然后在一秒钟后再次发送,持续5次,然后崩溃,LXTerminal产生错误:

Traceback (most recent call last):
File "PS3_ctrl_v2.py", line 44, in <module>
writeNumber(12,42,-5,0)
File "PS3_ctrl_v2.py", line 11, in writeNumber
bus.write_i2c_block_data(address, a, [b, c, d])
IOError: [Errno 5] Input/output error 

我做错了什么?如何使代码更健壮?在


Tags: 代码importdatatimeaddress数组i2cblock