« という事で電源供給用のボードを製作 | トップページ | 3軸加速度センサを使ったアプリケーションと言えば(その2) »

2008年10月29日 (水曜日)

3軸加速度センサを使ったアプリケーションと言えば

さて、実際に3軸加速度センサを使ったアプリケーションと言う事でまず思いついたのがこれ。

Thinkpadモーションコントロール動画

実際にアプリケーションを動かしている様子

できれば全く同じものを作ってみたいところですが、私はこういった物理シミュレーションのプログラムをほとんど書いたことがありません。まぁ、小さなところからコツコツと行く事にしましょう。

いずれにせよ、ColdFireマイコン基板から3軸分のデータが取れない事には何も始まりません。今回のマイコン基板にはすでにUDP電圧計と言うアプリケー ション用にX軸のデータのみをUDPで送信するプログラム(ファイル名ad)が入っているのでこれをtftpで取得してエディタで編集していきます。具体 的にはX軸のデータ取得処理をベースにY軸とZ軸のデータも取得して後はUDPで送信するデータ(文字列)のフォーマット(プロトコル)を決めるだけで OKです。

今回はとりあえず

X軸の数値:Y軸の数値:Z軸の数値

とコロン区切りのフォーマットにしました。さくっとソースを書いてtftpで転送して動作確認したのですが、起動してすぐにOKとプロンプトに戻ってきて しまいます。どこかマズイ部分があるようですが、全然分かりません。これはSilentCの弱点かも。インタプリタならせめてどの行がマズイくらいの エラーメッセージが欲しいところ。何度か試行錯誤して完成したソースコードはこんな感じ。冒頭のadinitとdispは不要ですね。

adinit(void){
    InitAd(0x70);
}
disp(char ch){
    PrNum(GetAd(ch));
}
udpsend(char *str){
    char *soc,*buf,*x,*y,*z;
    int buflen=40;
    long ip;
    ip=GetIP(str)
    if(ip==0)return;
    buf=MemoryAlloc(buflen);
    x=MemoryAlloc(10);
    y=MemoryAlloc(10);
    z=MemoryAlloc(10);
    soc=CreateSocket(0);
    InitAd(0x70);
#stop 0
    for(;;){
        GetDigit(GetAd(4),x);
        GetDigit(GetAd(5),y);
        GetDigit(GetAd(6),z);
        MemClear(buf,buflen);
        StrCat(buf,x);
        StrCat(buf,":");
        StrCat(buf,y);
        StrCat(buf,":");
        StrCat(buf,z);
        SendTo(soc,ip,30049,buf,StrLen(buf));
        if(Getc(0)=='q')break;
    }
    CloseSocket(soc);
    MemoryFree(buf);
}

続いてデータを受信して表示するUDP電圧計のプログラムソースを編集します。と言っても「:」で区切ってあげるだけですがね。

while (!stopflag) //データを受信する
{
    System.Net.IPEndPoint remoteEP = null;// 参照用のエンドポイントを作成
    byte[] rcvBytes = udp.Receive(ref remoteEP);    //UDPデータの到着を待つ
    s = Encoding.UTF8.GetString(rcvBytes);  // エンコードした文字列を得る
    Console.WriteLine(s);
    String[] accData = s.Split(':');
    udpval_x = int.Parse(accData[0]);  // 文字から数値に変換して格納
    udpval_y = int.Parse(accData[1]);  // 文字から数値に変換して格納
    udpval_z = int.Parse(accData[2]);  // 文字から数値に変換して格納
}//UDP接続を終了

さて、これで3軸分のデータを取得できるようになりました。続いてプログラム本体の部分に取り掛かっていきますが、今回はこの辺で。

|

« という事で電源供給用のボードを製作 | トップページ | 3軸加速度センサを使ったアプリケーションと言えば(その2) »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/2790/42936101

この記事へのトラックバック一覧です: 3軸加速度センサを使ったアプリケーションと言えば:

« という事で電源供給用のボードを製作 | トップページ | 3軸加速度センサを使ったアプリケーションと言えば(その2) »