I2C通信で、ラズパイからArduinoに0から180の数値を送り、サーボの角度制御をさせます。
前回はRaspberry Pi ArduinoをADコンバータとして使う(I2C)

回路

キャプチャ
I2C関連は
SDA -SDA
SCL - SCL
GND -GND
でつないでいく。

ラズパイとArduinoの電源は別にした。
ArduinoはPCからのUSB給電、サーボを動かすのでラズパイから5Vもらって動かすのは怖かった。

Arduino


ADコンバータとして動かした前回とは違い、シンプルになった。
今回は、 ラズパイから0~180の整数をもらって、その通りにサーボを動かすだけ。
複数のサーボを動かす方法は今後考える。

Raspberry Pi


今回は、一方的にコマンドを送り付けるだけなので、bus.read_byte()は必要ない。

13行目の、intはいらなかったかもしれない。
きちんと整数として入力されて欲しかったのでいれてみただけ。
if文で、0~180の間の整数であることを確認してから、コマンドを送信するようにした。
そうしないと、1byte以上の整数、つまり256以上の整数を送ってしまうと、意図していない角度にされてしまう。
(300だったら、300-256=44。つまり44が送信される)

とりあえず、プログラムを実行すると
IMG_3848
ラズパイ側で、0~180の整数を入力し
IMG_3847
Arduinoで受け取り、サーボの角度を変更する。

一応動かしている動画も撮ってみた


サーボ一個だけだと、今回のやり方でいいが、2個以上の場合はどうしたものか…。 

続きを書いた。
Raspberry Pi Arduinoをサーボドライバとして使う(I2C)その2


マイクロサーボ SG92R - Amazon