Raspberry piとArduinoをi2c接続する

2022-05-07

まずこちらの記事を参考にして、Raspberry pi 4とArduino を以下のように配線を行います。

ArduinoRaspberry pi
GNDGND
A44
A55
表 Arduino-Raspberry piの配線表
図 Raspberry piとArduinoの接続

 外部にLEDを接続するのが面倒なので、Arduinoの13ピンに接続されている付属のLEDで動作の確認を行います。
 Arduinoには以下のコードを記載します。

#include <Wire.h>

const int addr = 0x9;

void setup() {
  // put your setup code here, to run once:
  pinMode(13, OUTPUT);
  Wire.begin(addr);
  Wire.onReceive(changeBrightness); 
}

// Reads and sets the PWM value from the I2C bus 
void changeBrightness(int bitstream) { 
    int brightness = Wire.read(); 
    digitalWrite(13, brightness);
} 

void loop() {
  // put your main code here, to run repeatedly:

}

 Raspberry piからi2cdetectコマンドを使用して0x09 にデバイスが接続されていることを確認します。

chimesness@rapsberrypi:~ $ i2cdetect -y 1
      0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- 09 -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --

 Raspberry piからArduinoに書き込みをしてみます。

/*LEDを点灯する*/
pi@rapsberrypi:~ $ i2cget -y 1 0x09 0x01
0x00

/*LEDを消灯する*/
pi@rapsberrypi:~ $ i2cget -y 1 0x09 0x00
0x00

 LEDが点灯/消灯しました。正しくi2c接続が出来ているようです。