Arduino IDEでArduinoを扱うように、Parallax社のPropellerマイコンを扱えたら楽しいかも?と先日プロペラブの@kama_AGEさんと話していて、これは是非やってみたいなーと思いまして、やってみることにしました。
名前ですが、Propeller版Arduinoということで、Propduinoかな?と考えました。
しかし、ググると既にArduinoライクなマイコンボードの名称に使われてましたので、Pellerduinoかな?とググると何もひかからなかったので、Pellerduino(ペラデュイーノ)という名称にしてみました。
以下のような事が出来ればいいな、ということを考えました。
(1)PropellerマイコンのIDEをArduino IDEベースで作る(Arduino IDEの知識だけでほぼ使える)
(2)コンパイラはPropeller gcc
(3)ArduinoのAPI相当品を用意する
(4)Arduinoライブラリをロードするようにcogに各種モジュール(例:USBホストとか、ビデオ出力とか)をArduinoライブラリと同じ手順でロード設定でき、即座に派手な動かし方ができる
(5)各cogに別々なCのソースを手軽にロードして並列動作させる
とか。
特に、プロペラの作法を勉強しなくても、手軽にArduino APIで既存のPropeller用の各種モジュールを手軽に使用出来る環境になったらいいな、という理想です。
というわけで、早速作り始めてみました。
まだまだ作りかけたばかりなのでろくにプロペラならではの事は出来ませんが...^^;
環境はひとまず手持ちのMacOSX向けですが、Arduino IDEのソースはマルチプラットフォームなので多少の手直しで各環境で動くのだろうと思います。
コンパイラは、Propeller gccです。
http://code.google.com/p/propgcc/
ボードはPropellerマイコンのQuickStartボードを持っていたのでそれ向けにしました。
画面はデザイン何も変更していません。。色は変えようかなと思っています。
例えば、PropellerのQuickStartボードの青色LED1個を点滅させる場合、以下のようなスケッチになります。
void setup()
{
pinMode(23,OUTPUT);
}
void loop()
{
digitalWrite(23,HIGH);
delay(1000);
digitalWrite(23,LOW);
delay(1000);
}
GPIO関連のAPI等はArduino APIもどきを作りましたので、感覚的にはArduinoスケッチっぽいです。
ボードのLEDが流れるような動きをするスケッチですと、こんな感じになります。PIN_LEDxは、QuickStartボード用のボードサポートファイルを用意し、そこで提供するようにしています。
const int pinTable[8] = {
PIN_LED0,
PIN_LED1,
PIN_LED2,
PIN_LED3,
PIN_LED4,
PIN_LED5,
PIN_LED6,
PIN_LED7
};
void setup()
{
int i;
for(i=0;i<8;i++){
pinMode(pinTable[i],OUTPUT);
}
}
void loop()
{
int i;
static int c = 0;
for(i=0;i<8;i++){
if(c % 8 == i){
digitalWrite(pinTable[i],HIGH);
} else {
digitalWrite(pinTable[i],LOW);
}
delay(10);
}
c++;
}
上記の2スケッチを動作させているところの動画を撮ってみました!
今回いじったおかげで、Arduino IDEのソースの理解を深められたかなーと思います。
もう少し完成度を高めて、公開させていただきたいなーーと思っています。
Vixen(ビクセン) (2011-04-11)
売り上げランキング: 32928