2009年3月
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

最近のトラックバック

俺リスト

  • はてなスター
  • ソーシャルブックマーク
    はてなブックマーク
    livedoor clip
  • FireFoxとか
    Mozilla Firefox ブラウザ無料ダウンロード

« Sun SPOT ManagerとSDKのインストール | トップページ | タチコマが出勤しました »

2008年6月13日 (金)

Sun SPOTアプリケーションを作ってみる(スタンドアローンアプリ編)

Sun SPOTのSDKはインストールできたので、SPOTアプリケーションをつくってみます。
とりあえず、通信しないスタンドアローンアプリで。

今回、センサーとLEDを使ってみたいので、温度計を作ってみました。

これが、エミュで実行した所です。(実機で実行したい所ですが・・・実機が早く欲しい!)

SPOT内の温度センサーから現在の温度を取得して、それに合わせた色と位置のLEDが点滅するアプリを作ってみました。

NetBeansでBuild(構築)して、SPOTWorldから、Virtual SPOTを作成して、「Specify Application jar file...」で「プロジェクトディレクトリ/suite/」にあるjarファイルを読み込みます。これでDeployされるので、「Run MIDLet」で、実行できます。

エミュで実行すると、スライダの温度に合わせてちゃんとエミュのLED表示も点滅します。よくできたエミュレーターです。温度と表示が合ってないように見えますが、スライダの温度は華氏(F)表示なので、これでOKです。

2008y06m12d_053750171


コードです。簡単です。
----

public class StartApplication extends MIDlet {
    //LEDインスタンス配列     private ITriColorLED [] leds = EDemoBoard.getInstance().getLEDs();
   
    //OFF時のLEDカラー配列(R,G,B)     private static int LEDsDefaultColor1[][] = { {0,50,100}, {0,50,100}, {0,100,100}, {0,100,100}, {0,100,0}, {0,100,0}, {100,0,0}, {100,0,0} };
    //ON時のLEDカラー配列(R,G,B)     private static int LEDsDefaultColor2[][] = { {0,255,255}, {0,255,255}, {0,255,255}, {0,255,255}, {0,255,0}, {0,255,0}, {255,0,0}, {255,0,0} };

    protected void startApp() throws MIDletStateChangeException {
        new BootloaderListener().start();   // monitor the USB (if connected) and recognize commands from host         //温度センサーのインスタンスを取得。         ITemperatureInput temperature = EDemoBoard.getInstance().getADCTemperature();         //スイッチのインスタンスを取得         ISwitch sw1 = EDemoBoard.getInstance().getSwitches()[EDemoBoard.SW1];                 //LED表示を初期化         for( int i=0 ; i<8 ; i++ ) {
            leds[i].setRGB( LEDsDefaultColor1[i][0],LEDsDefaultColor1[i][1],LEDsDefaultColor1[i][2]);
            leds[i].setOn();
        }
       
        int ledpos = 1;     //LEDの位置         int blinker = 0;    //点滅用カウンタ変数         double tempC = 0;   //取得した温度         boolean isGetTemp = false;  //温度取得フラグ。取得できなければfalse         while (sw1.isOpen()) {      //スイッチが押されていない間はループ             isGetTemp = false;      //温度取得フラグを未取得にセット                          //温度の取得             try {
                tempC = temperature.getCelsius();   //温度を取得                 isGetTemp = true;   //取得できたので、取得済みにセット             } catch (IOException ex) {
                ex.printStackTrace();
            }
            System.out.println( "Temp = " + tempC );
            
            //温度の表示             if( isGetTemp == true ) {
                //温度に合わせて、LEDの位置を決定する                 if( tempC < 0 ) { ledpos = 0; }
                else if0 <= tempC && tempC < 10 ) { ledpos = 1; }
                else if( 10 <= tempC && tempC < 15 ) { ledpos = 2; }
                else if( 15 <= tempC && tempC < 20 ) { ledpos = 3; }
                else if( 20 <= tempC && tempC < 25 ) { ledpos = 4; }
                else if( 25 <= tempC && tempC < 30 ) { ledpos = 5; }
                else if( 30 <= tempC && tempC < 35 ) { ledpos = 6; }
                else if( 35 <= tempC ) { ledpos = 7; }
               
                //LED位置に合わせてLED色をセットする                 for( int i=0 ; i<8 ; i++ ){
                    if( (i == ledpos) && (blinker % 2 == 0) ) { //現在の温度位置のLED                         leds[i].setRGB( LEDsDefaultColor2[i][0],LEDsDefaultColor2[i][1],LEDsDefaultColor2[i][2]);
                    } else { //現在の位置でないLED                         leds[i].setRGB( LEDsDefaultColor1[i][0],LEDsDefaultColor1[i][1],LEDsDefaultColor1[i][2]);
                    }
                }
            }
            
            blinker++;          //ブリンク用変数カウントアップ             Utils.sleep(500);   //500mSec待つ         }         notifyDestroyed();                      // cause the MIDlet to exit     }     protected void pauseApp() {
    }
   
    protected void destroyApp(boolean unconditional) throws MIDletStateChangeException {
        for (int i = 0; i < 8; i++) {
            leds[i].setOff();
        }
    }
}

----

« Sun SPOT ManagerとSDKのインストール | トップページ | タチコマが出勤しました »

Sun SPOT」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

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

トラックバック

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

この記事へのトラックバック一覧です: Sun SPOTアプリケーションを作ってみる(スタンドアローンアプリ編):

« Sun SPOT ManagerとSDKのインストール | トップページ | タチコマが出勤しました »