Shuichi Machida's Weblog

« [Sun SPOTを使ってロボットインセ... | メイン | [Sun SPOT で外付けLEDを点滅... »

http://blogs.sun.com/machida/date/20080306 2008年 3月 06日 木曜日

[Sun SPOT で外付けLEDを点滅させよう(3)] 回路とプログラムを組んで、実行する。

前回、Sun SPOTのI/Oコネクタの+5V電源をVHにつないで、H0ピンのソース電流を使ってLEDを点滅させるというところまで決めました。それでは早速、実際に簡単な電子回路とJavaプログラムを組んで外付けLEDを点滅させてみましょう。

と、その前にLEDと直列に接続する 抵抗Rの値を計算する必要がありますね。


この抵抗Rの出し方は色々な本やWebサイトで解説されていますが、素人の私が調べて理解した範囲では、

  • LEDはある程度の電圧がかかると光り出し、少しの電圧の変化で大量の電流が流れる
  • LEDは流れる電流が大きいほうが明るく光る
  • LEDは定格を超える電流を流すと壊れる。よって、抵抗を接続して流れる電流を制限する。回路全体で流れる大体の電流値は接続する抵抗で制御可能
  • LEDが光っているとき、LEDの両端にかかる電圧の値は大体、順電圧である

使用するLEDは順電圧3.3Vで定格電流が20mAです。

20mAの場合、通常余裕を持って5~10mAぐらいで光らせるらしいので、今回は5mAでチャレンジしてみます。抵抗には (5.0V-順電圧) の電圧がかかるので、オームの法則により

 R = V/I = (5.0-3.3)/0.005 = 340 Ω

では、ブレッドボードを使って電子回路を組んでみます。なお、今回は手元に100Ωの抵抗しかなかったので、これを3個直列につないで300Ωの抵抗としました。# 多少電流値が増えますが。

ブレッドボードは下図のように、赤線のラインが電気的につながっています。ライン間は、ジャンプワイヤーで結線します。

# ブレッドボード

 

抵抗とLEDの結線はこんな感じです。


Sun SPOTの出力ピンH0と接続して、回路は完成です!


プログラムは、「サーボモータを動かしてみる-その1」で書いた手順NetBeans IDEを使って開発します。

今回は、500ms間隔で点灯、消灯を繰り返すプログラムを作成します。

# プログラム

package org.sunspotworld;

import com.sun.spot.sensorboard.EDemoBoard;
import com.sun.spot.sensorboard.io.IOutputPin;
import com.sun.spot.util.*;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class StartApplication extends MIDlet {

    protected void startApp() throws MIDletStateChangeException {
        new BootloaderListener().start();

        // H0ピンを使う
        IOutputPin pinH0 = EDemoBoard.getInstance().
                getOutputPins()[EDemoBoard.H0];


        while (true) {
            pinH0.setHigh();      // 5V出力
            Utils.sleep(500L);
            pinH0.setLow();       // 0V出力
            Utils.sleep(500L);
        }
    }

    protected void pauseApp() {
    }

    protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
    }
}


とても単純です。Sun SPOTをPCのUSBにつないで、プログラムをインストールします。Sun SPOTをリセットすると。。

 

。。。

点滅しました ;-)



投稿されたコメント:

コメント
  • HTML文法 不許可

Valid HTML! Valid CSS!

This is a personal weblog, I do not speak for my employer.