読者です 読者をやめる 読者になる 読者になる

Lynx-EyEDの電音鍵盤 新館

広帯域制御屋の駄文とか

ArduinoインタプリタiArduinoのeXodusinoへの移植(その1)

LPCXpresso eXodusino

@nnmtng氏Arduino向けのインタプリタを作っておられることを聞いたので、使ってみた次第です。

iArduinoの本家さまに詳細があります

iArduino: Arduino上で動くインタプリタ言語

自分はAVRマイコンのオリジナルArduinoが手元にないので(ぉぃ)、eXodusinoでも少しの変更で動くのではないかと、移植をしてみたわけです。

変更する部分は以下の部分です

  • 算術関数
    • eXodusinoではコードサイズの肥大化を避けるべく、一部の算術関数の対応をしていません。乱数などは今のところ対応するつもりがないので、return 0にしてしまってます。
  • Arduino1.0特有の記述方法
    • Serial.printlnなど
  • EEPROMクラス
    • LPC1114F/301にはユーザ用EEPROMがありません。したがって、IAPをもちいてプログラムフラッシュ領域に記録するか、外部EEPROMに記録することになると思います。外部EEPROM必須だと、ハード構成に制約をかけてしまうことになります。一方、プログラムフラッシュ領域に記録する方法だと、プログラム領域が減ってしまいます。ここはまだ検討中です。

とりあえず、動くところまで、動かしてみたのが以下のスクリーンショット。先ほどの理由のため、EEPROMからのインタプリタ起動にはまだ対応してません。
f:id:Lynx-EyED:20120424004240p:image


ちゃんと、GPIOの設定もできています。

■なんでインタプリタなのか
統合開発環境として申し分のないLPCXpresso IDEが準備されているものの、これを使うにはEclipseを使った経験がある人でないと、使いづらいという面があると思います。とてもArduinoライクな開発はできません。また、Mac OSXには対応していません。
かといって、Arduino IDEをLPC1114向けに改良するのも時間がかかります。
というわけで、eXodusinoとシリアルコンソールで、限定的でもいいから簡単に開発できればと思っていたところ、このiArduinoを見つけた次第です。

■これから
中間言語を出力させる仕組みを確立し、OSX、Linuxといったデスクトップだけでなく、Android、WP7.5、iPhone用のeXodusino VM出力アプリを用意しようと思います。スマホで「digitalWrite(hoge,ababa)」と打つのは面倒なので、なにかうまい事考えないと。。。