Intel Edisonで大量のサーボを動かすPCA9685を使う話
概要
I2Cを使って,1つのチップで16個のサーボを動かすことのできるサーボドライバを使う話.
使うのは,Adafruitのモジュール .
Arduino用のライブラリはあるんだけど,微妙に修正が必要.
このブログではこれまでEdisonならではのIoTという文脈で試してきましたが,ここではお手軽なArduinoIDEを使ってみます.
Pythonで使う方法は,公式でRaspberryPi用の説明があるみたいですけど,このままで動くのかな?どうなんでしょう.
Arduino用ライブラリの導入
Arduino用のライブラリはgithubにあります.
これを落としてきて,Galileo, Edison用のArduinoIDE向けのライブラリディレクトリへ配置します.Macの場合は以下.
/Applications/Arduino\ edison.app/Contents/Resources/Java/libraries
ライブラリの修正
以下のディレクトリにあるcppファイルを修正します.
/Adafruit_PWMServoDriver/Adafruit_PWMServoDriver.cpp
Adafruit_PWMServoDriver.cpp中で以下のようになっている箇所があります.
#if defined(__AVR__) #define WIRE Wire #elif defined(CORE_TEENSY) // Teensy boards #define WIRE Wire #else // Arduino Due #define WIRE Wire1 #endif
ここの部分を全部コメントして,以下の1文のみにします.
#define WIRE Wire
これで,問題なく動作するようになります.
配線,プログラム
これについては通常のArduinoと変わらないので,Adafruit公式のチュートリアルや,サンプルプログラムを参照してください.