Raspberry Pi Zero WからI2C経由でArduino Nanoでサーボをコントロール
- 2017/12/26
- 00:45
Raspberry Pi Zero WからI2C経由でArduino Nanoでサーボをコントロール
こんにちはRoboTakaoです。ようこそ「極力ローコスト ロボット製作 ブログ」にお越しくださいました。
最近ちょっと更新がサボり気味でした。
今回は以前書いた記事の続編として、Raspberry Pi Zero WとArduino NanoをI2Cで接続して、さらにサーボを動かしてみたいと思います。

I2Cでの接続については以前の記事を参考にしてください。
結線図
まずは結線ですが、以前に書いた記事にArduino Nanoからサーボを動かす回路を追加しています。単純です。

pythonのコード
import smbus
import time
ANGLE0 = 0
ANGLE1 = 180
bus = smbus.SMBus(1)
SLAVE_ADDRESS = 0x08
while True:
bus.write_byte(SLAVE_ADDRESS, ANGLE0)
print(ANGLE0)
time.sleep(2)
bus.write_byte(SLAVE_ADDRESS, ANGLE1)
print(ANGLE1)
time.sleep(2)
Arduinoのアドレスを0x08に指定して、
角度0度→180度を交互に送信します。
このコードの場合、1バイトだけ送ります。
1バイトは0から255までですが、サーボは0から180度なら問題ありません。
Arduinoのスケッチ
#include
#include
Servo myservo2;
int ang=0;
void setup()
{
myservo2.attach(2);
Wire.begin(8);
Wire.onReceive(receiveEvent);
Serial.begin(9600);
}
void loop()
{
myservo2.write(ang);
delay(100);
}
void receiveEvent(int howMany)
{
ang=Wire.read();
Serial.print("ang:");
Serial.println(ang);
}
結果
Raspberry Pi側で0,180が交互に表示されると、Arduino側でも0,180が交互に表示され、それに合わせてサーボが回転します。


それでは今回はこの辺で失礼します!ありがとうございました。
スポンサードリンク