RaspberryPieをマスターに、Arduinoをスレーブとしてデータを返す。
1.I2CポートのSDAとSCL、GNDを接続する
ArduinoNano
A5:SCL
A6:SDA
RaspberryPieB+
P3がSDA
P5がSCL
2.Arduino
サンプルスケッチのsleve_sender
ここでは以下のように変更。読みだすたびに値が増えていく。
IDは08
#include <Wire.h> byte cnt=0; void setup() { Wire.begin(8); // join i2c bus with address #8 Wire.onRequest(requestEvent); // register event } void loop() { delay(100); } // function that executes whenever data is requested by master // this function is registered as an event, see setup() void requestEvent() { Wire.write(cnt++ ); }
3.RaspberriePie
pi@raspberrypi ~ $ sudo i2cdetect -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- 08 -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- -- pi@raspberrypi ~ $ sudo i2cget -y 1 0x08 0x00 b 0x00 pi@raspberrypi ~ $ sudo i2cget -y 1 0x08 0x00 b 0x01 pi@raspberrypi ~ $ sudo i2cget -y 1 0x08 0x00 b 0x02 pi@raspberrypi ~ $ sudo i2cget -y 1 0x08 0x00 b 0x03 pi@raspberrypi ~ $ sudo i2cget -y 1 0x08 0x00 b 0x04 pi@raspberrypi ~ $ sudo i2cget -y 1 0x08 0x00 b 0x05 pi@raspberrypi ~ $ sudo i2cget -y 1 0x08 0x00 b 0x06
すげえ簡単!