I am trying to send data via an I²C interface from Arduino Uno to Raspberry Pi using I²C. This was the code I used.
In Arduino:
#include <Wire.h> unsigned int watt; unsigned int watt1; byte watt2; byte watt3; void setup() { Wire.begin(30); Wire.onRequest(requestEvent); Serial.begin(9600); } void loop() { delay(100); int sensorValue = analogRead(A0); int sensorValue1 = analogRead(A1); watt = sensorValue * (5 / 1023) * 2857; watt1 = sensorValue1 * (5 / 1023) * 2857; watt2 = map(watt, 0, 4294967295, 0, 255); watt3 = map(watt1, 0, 4294967295, 0, 255); Serial.println(watt2); Serial.println(watt3); } void requestEvent() { Wire.write(watt2); delay(30); Wire.write(watt3); }
And in Raspberry Pi:
import smbus import time bus = smbus.SMBus(0) address = 0x1e while (1): watt=bus.read_byte_data(address,1) watt2=bus.read_byte_data(address,2)
I got the following error.
Traceback (last last call):
File "/ home / pi / i 2ctest.py", line 8, in <module>
watt = bus.read_byte_data (address, 1)
IOError: error [Errno 5] I / O error
How to fix it? Also, are there alternatives for using I²C in Raspberry Pi besides the SMBus library?
source share