記事一覧

Raspberry Pi Zero WからI2C経由でArduino Nanoでサーボをコントロール

Raspberry Pi Zero WからI2C経由でArduino Nanoでサーボをコントロール



こんにちはRoboTakaoです。ようこそ「極力ローコスト ロボット製作 ブログ」にお越しくださいました。
最近ちょっと更新がサボり気味でした。

今回は以前書いた記事の続編として、Raspberry Pi Zero WとArduino NanoをI2Cで接続して、さらにサーボを動かしてみたいと思います。

RasArI2C15.png


I2Cでの接続については以前の記事を参考にしてください。

結線図
まずは結線ですが、以前に書いた記事にArduino Nanoからサーボを動かす回路を追加しています。単純です。

RasArI2C14.png

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が交互に表示され、それに合わせてサーボが回転します。

RasArI2C16.png

RasArI2C17.png




それでは今回はこの辺で失礼します!ありがとうございました。

コメント

コメントの投稿

非公開コメント

プロフィール

RoboTakao

Author:RoboTakao
みなさんご訪問ありがとうございます。ロボット作りたいけどお小遣いそんなにないし、簡単でローコストでロボットを作るための私のプロジェクトを紹介します。

ウェブサイトもありますのでそちらもよろしくお願いします。
http://robotakao.jp/