我已将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()的长度以及测量值是否发生很大变化。