2007年06月07日

Arduino

arduinoに数値を送る

Flash8のaction script2では、バイナリが使えず、文字しか送れないので、
数字を送れるか試してみた。

以下arduinoのソース
int sum;
const int KETAMAX = 4;        // 桁数
int keta;

void setup() {
  Serial.begin(9600);
  iniKeta();
}

void loop () {
  // データが来た
  if(Serial.available()>0){
    int val = Serial.read();
    if(val == 's'){          // データのはじめ
      iniKeta();
    }else{                  // 数値データ
      val -= 48;            // アスキー→数値に変換
      for(int i=1; i < keta; i++){  // 桁数を計算
        val *= 10;
      }
      sum += val;
      keta --;
      if(keta == 0){        // すべてのデータ受信終了
        Serial.println(sum);
      }
    }
  }
}

// 最初の桁に戻る
void iniKeta(){
  keta = KETAMAX;
  sum = 0;
}

動作はシリアルで確認、
sの文字の後、4桁の数字を返すのを確認
suuchi.jpg