Arduino Nano 2台でI2C通信してサーボを駆動
- 2017/09/03
- 12:52
Arduino Nano 2台でI2C通信してサーボを駆動
こんにちはRoboTakaoです。ようこそ「極力ローコスト ロボット製作 ブログ」にお越しくださいました。
Arduino Nanoでサーボを動かそうとした場合、通常は最大12個動かすことができます。
でも人型の二足歩行ロボットを作ろうとした場合はそれでは足りないことが多いです。
たとえは倍の24個動かしたいと思うことがあります。平行リンクを駆使する手もありますが
今回はArduino Nanoを2台使って最大24個動かすことを考えています。
そしてArduinoNano同士はI2C通信を使いたいと思います。シリアル通信を使い手もありますが
それだとBluetoothなどでシリアル通信を使えなくなってしまうので同時に使用できるI2Cを選択しました。
前回まではArduino IDEのサンプルスケッチでI2Cで通信ができることを確認しました。
今回はマスターのArduinoNanoからサーボの角度データを送信させてスレーブのArduinoNanoで受信してスレーブのArduinoNanoがサーボを動かします。
構成と接続は下記のようになっています。


スケッチはこんな感じです。
スレーブ側

#include
#include
Servo myservo2;
int ang[]={0,0};
void setup()
{
myservo2.attach(2);
Wire.begin(8);
Wire.onReceive(receiveEvent);
}
void loop()
{
myservo2.write(ang[0]);
delay(1000);
myservo2.write(ang[1]);
delay(1000);
}
void receiveEvent(int howMany)
{
ang[0]=Wire.read();
ang[1]=Wire.read();
}
マスター側

#include
void setup()
{
Wire.begin();
}
void loop() jj
{
Wire.beginTransmission(8);
Wire.write(0);
Wire.write(90);
Wire.endTransmission();
delay(1000);
}
それぞれコンパイルしてArduino Nanoに入れると動き出します。
無事、0°から90°でサーボを回転させることができました。
そのうちにRaspberryPiからI2C接続でサーボコントロールしようと思っています。
それでは今回はこの辺で失礼します!ありがとうございました。
Thank you for your visiting!
こんにちはRoboTakaoです。ようこそ「極力ローコスト ロボット製作 ブログ」にお越しくださいました。
Arduino Nanoでサーボを動かそうとした場合、通常は最大12個動かすことができます。
でも人型の二足歩行ロボットを作ろうとした場合はそれでは足りないことが多いです。
たとえは倍の24個動かしたいと思うことがあります。平行リンクを駆使する手もありますが
今回はArduino Nanoを2台使って最大24個動かすことを考えています。
そしてArduinoNano同士はI2C通信を使いたいと思います。シリアル通信を使い手もありますが
それだとBluetoothなどでシリアル通信を使えなくなってしまうので同時に使用できるI2Cを選択しました。
前回まではArduino IDEのサンプルスケッチでI2Cで通信ができることを確認しました。
今回はマスターのArduinoNanoからサーボの角度データを送信させてスレーブのArduinoNanoで受信してスレーブのArduinoNanoがサーボを動かします。
構成と接続は下記のようになっています。


スケッチはこんな感じです。
スレーブ側

#include
#include
Servo myservo2;
int ang[]={0,0};
void setup()
{
myservo2.attach(2);
Wire.begin(8);
Wire.onReceive(receiveEvent);
}
void loop()
{
myservo2.write(ang[0]);
delay(1000);
myservo2.write(ang[1]);
delay(1000);
}
void receiveEvent(int howMany)
{
ang[0]=Wire.read();
ang[1]=Wire.read();
}
マスター側

#include
void setup()
{
Wire.begin();
}
void loop() jj
{
Wire.beginTransmission(8);
Wire.write(0);
Wire.write(90);
Wire.endTransmission();
delay(1000);
}
それぞれコンパイルしてArduino Nanoに入れると動き出します。
無事、0°から90°でサーボを回転させることができました。
そのうちにRaspberryPiからI2C接続でサーボコントロールしようと思っています。
それでは今回はこの辺で失礼します!ありがとうございました。
Thank you for your visiting!
スポンサードリンク