2011年12月6日火曜日

【追記あり】DotsduinoをAndroidから操作してみた

この投稿へのリンク


Make: Tokyo Meeting 07に3日行ってきました。
そこで、以前からお世話になってるブログ(なんでも作っちゃう、かも。)の方が出展しており、 DotsduinotというArduino互換のオリジナル製品を売っていたので買っちゃいました。
それで、折角なのでAndroidからDotsduinoを制御できるようにしてみました。
正確に言うと、シリアル通信で、命令をDotsduinoが受け取り表示するといった流れなので、 そのままPCからも制御できちゃいます。

【追記】
動画をアップロードしました


  • Dotsduino側のソース

#include 

Dots myDots = Dots();

void setup()
{
  Serial.begin(9600);
  Serial.println("Start");
  myDots.begin();
}


void loop()
{ 
  int msg[4] = {0};
  int i    = 0;
  int flag = 0;
  
  // 3バイトを超えてバッファされないと処理しないようにする
  if (Serial.available() > 3) {
    i = 0;
    
    while(i < 4) {
      msg[i] = Serial.read();
      if (msg[i] < 0) {
        break;
      }
      i++;
    }

    // 念のためのデータチェック用
    if (msg[0] == '@') {
      myDots.write(msg[1], msg[2], msg[3]);
    }
  }
}

とりあえずこれだけで、PCからでも"@111"や"@250"といった形のデータを送れば付けたり消したり出来ます。
ただ、msg[1]〜msg[3]は数値である必要があるのでASCIIコードで送ると、49とか50といったデータが送られてくるので、次のように変更するといいかもしれません。
      myDots.write(msg[1] - '0', msg[2] - '0', msg[3] - '0');
ただ、これはPCからASCIIコードで送る場合の処置です
数値として送る場合には不要です。

Android側のソースは後日綺麗にしたらGithub上に上げておきます。
https://github.com/iwata-n



#以下アフィリエイト用の広告です