特殊工作室(2004/03/06) Javelin Stamp

BASIC Stampを作っているParallax社からJavelin Stampというものが出ていて、ちょっと興味があるので入手して遊んでみることにしました。

Javelin Stampの一番の特徴は、プログラムをBasicではなくJavaで書くというところでしょう。いや正確には、Javaによく似た言語ということになるのだと思います。BASIC StampのBasicだとライブラリ化する時によ〜く気をつける必要がある、といった点が改善しやすいのでしょうね。

この特徴を生かすべく、ライブラリを作成してみました、LEDの(^^:)。Javelin Stampも出力ピンのソース、シンク電流が十分とれるので、LEDを直接ドライブできます。そこで、次のようにLEDをどちら向けにつないでも、そのLEDに対応するオブジェクトのonメソッドを呼べば点灯し、offメソッドを呼べば消灯するようにしましょう。

作ったライブラリはこんなの。笑ってしまうくらい簡単です。

package com.yamamotoworks.javelin;

import stamp.core.*;

public class LED {
  private int portPin;
  private int activeState;

  public static final int ACTIVE_HIGH = 1;
  public static final int ACTIVE_LOW  = 2;

  public static final int ON  = 1;
  public static final int OFF = 2;

  public LED(int portPin, int activeState) {
    this.portPin = portPin;
    this.activeState = activeState;
  }

  public void on() {
    if (activeState == ACTIVE_HIGH) {
      CPU.writePin(portPin, true);
    } else {
      CPU.writePin(portPin, false);
    }
  }

  public void off() {
    if (activeState == ACTIVE_HIGH) {
      CPU.writePin(portPin, false);
    } else {
      CPU.writePin(portPin, true);
    }
  }
}

で、これを使うプログラムはこんなの。赤、黄、緑を順番に点灯します。

import stamp.core.CPU;
import com.yamamotoworks.javelin.LED;

public class LEDtest {
  public static void main() {
    LED red    = new LED(CPU.pin0, LED.ACTIVE_HIGH);
    LED yellow = new LED(CPU.pin1, LED.ACTIVE_LOW);
    LED green  = new LED(CPU.pin2, LED.ACTIVE_HIGH);

    red.off();
    yellow.off();
    green.off();

    for (;;) {
      red.on();
      yellow.off();
      green.off();

      CPU.delay(20000);

      red.off();
      yellow.on();
      green.off();

      CPU.delay(20000);

      red.off();
      yellow.off();
      green.on();

      CPU.delay(20000);
    }
  }
}

まあ、意図通りにできたということで。

雑感

このプログラムを作って、私にとっての最大の驚きは、CPU#delayの引数の単位が95.48uSというなんとも中途半端な値だったことです。引数に20000を指定すると、1.9秒強ですね。しかも引数の型はintですが、Javelin Stampのint型は16ビット!なので、あまり長い時間は指定できません。ちなみにchar型は8ビットというのも・・・

参考文献

  1. Javelin Stamp Manual Ver 1.0, Parallax

ホーム 特殊工作室