I2C总线Raspi主Arduino Mega从站上的远程I / O错误

时间:2019-02-07 15:50:47

标签: python loops error-handling raspberry-pi3 i2c

我已将raspi(主设备)与Arduino Mega(从机)连接,并希望将模拟读数从模拟引脚A0-A3连续传输到raspi。程序运行了一段时间,崩溃给了我: [Errno 121]远程I / O错误

我怀疑可能是两件事:1)while循环=>更长的睡眠时间导致更长的运行时间,直到程序崩溃为止2)我读到某处连线库在执行onReceive命令之前执行了onReceive命令onRequest?

这是我的Arduino和raspi代码:

Arduino超级代码     #include

int SLAVE_ADDRESS = 0x08;
int analogPin1 = A0;
int analogPin2 = A1;
int analogPin3 = A2;
int analogPin4 = A3;


void setup(){
Wire.begin(SLAVE_ADDRESS);
Wire.onRequest(sendAnalogReading);
}

void loop(){
}

void sendAnalogReading(){

uint16_t reading1 = analogRead(analogPin1);
uint16_t reading2 = analogRead(analogPin2);
uint16_t reading3 = analogRead(analogPin3);
uint16_t reading4 = analogRead(analogPin4);


Wire.write((char *) &reading1, 2);
Wire.write((char *) &reading2, 2);
Wire.write((char *) &reading3, 2);
Wire.write((char *) &reading4, 2);

}

这是我的Raspi上的脚本:     进口小型客车     导入时间

bus = smbus.SMBus(1)

SLAVE_ADDRESS = 0x08

def requestreading():
block = bus.read_i2c_block_data((SLAVE_ADDRESS), 0, 8)

print(block)


while True:
#var = input("Press any key for reading: ")
requestreading()
    time.sleep(0.1)

应该可以连续运行,但是我觉得实际运行时间要到崩溃为止取决于2个因素。 while循环中time.sleep()的长度以及测量值是否发生很大变化。

0 个答案:

没有答案