パッケージタイプ | 24-ピン DIP module |
パッケージサイズ | 3.0x1.5x1.0 cm |
対応環境 | 0゜- 70゜C |
マイクロコントローラ | Ubicom SX48AC |
RAMサイズ | 32Kバイト |
EEPROM サイズ | 32Kバイト |
I/Oピン数 | 2つの専用RS-232を加えた16 |
電源電圧 | 6-24 VDC(非定電圧) 5VDC(定電圧) |
定電圧源の出力電流 | 0 < Iout < 180mA |
1つのI/O当たりのシンク/ソース電流 | 30 mA / 30 mA |
1つのmodule当たりのシンク/ソース電流 | 60 mA / 60 mA per 8 I/Oピン |
バンク当たりのシンク/ソース電流 pin(0-7)と(8-15) | 30 mA / 30 mA |
消費電流 | 60mA |
Windows テキストエディタ | JIDE |
注意:vista及びwindows7を使っている人でUACが有効になっている場合、間違えるとファイル操作がおかしくなりますので、インストールする前に無効にしてください。絶対に間違えないという勇気のある方は有効のままでどうぞお使いください。なお、インストール後に無効化しても無駄です。(無効化し、アンインストールしてから再度インストールする必要がある) 無効化の方法: コントロールパネル→ユーザーアカウント→ユーザーアカウント制御の有効化または無効化→「ユーザーアカウント制御(UAC)を使ってコンピュータの保護に役立たせる」のチェックを外す→OK→× |
「Hello World」を表示するプログラム |
---|
public class HelloWorld { public static void main() { System.out.println("Hello World!"); } } |
型 | 意味 |
boolean | True/False value |
char | 8-bit ASCII (Unicodeではない) character (‘\u00’ : ‘\uFF’) |
byte | 8-bit signed integer (127 : -128) |
short | 16-bit signed integer (32767 : -32768) |
int | 16-bit signed integer (32767 : -32768) |
抵抗のカラーコードの見かた
上の例:赤紫橙金・・・27kΩ±5% 他の例:茶緑橙銀・・・15kΩ±10% 赤赤茶金・・・220Ω±5%
LEDflush |
---|
import stamp.core.*; public class LEDflush { // 変数と定数を定義する final static int LED = CPU.pin0; // L.E.D.をコントロールするため final static boolean ONSTATE = true; // 光る final static boolean OFFSTATE = false; // 消える public static void main() { System.out.println("Begin"); CPU.writePin(LED,OFFSTATE); // LEDを消す while (true) { // 永久ループ CPU.writePin(LED,ONSTATE); // LEDを点ける CPU.delay(10000); // Wait (LEDが光っている間) CPU.writePin(LED,OFFSTATE); // LEDを消す CPU.delay(10000); } // end while } // end main } |
名前 | バックグラウンドの仮想周辺装置 |
---|---|
UART | バッファされたシリアルポート |
PWM | パルス幅変調 |
Timer | 32-bitタイマー |
DAC | 1-bit D/A コンバータ foregroundの仮想周辺装置 |
Pulse Count | パルスの数を数える |
Pulse Width | パルスの幅を測定する |
パルス発生 | 固定長のパルスの発生 |
Delta/Sigma ADC | A/Dコンバータ |
RCタイマー | RC放電率測定 |
SPI master | SPI(Serial peripheral interface) 通信リンク、マスターモード |
パッケージ |
---|
パッケージとはいくつかのクラスをまとめたものです。主に3つの目的で使われます。
(2)クラス名の衝突を防ぐ Java VMは名前をもとにしてクラスを読み込むため、同じ名前のクラスが複数存在すると、間違ったクラスを読み込んでしまい、エラーが起きる可能性があります。そのため、プログラマーは作成するクラスの名前がほかのクラスの名前と同じにならないように気を付けなければなりません。 しかし、クラスの名前が衝突しないようにするのは困難です。クラスの名前を長くすれば、衝突を防ぐことができるかもしれませんが、その代わりコーディング作業が面倒になります。そこで、プログラマー、特にクラスライブラリを作成するプログラマーは、クラスをパッケージとしてまとめます。そしてパッケージの名前がほかのパッケージの名前と異なるようにします。結局、名前が衝突しないように気を付けなければなりませんが、パッケージの名前はクラスの名前に比べればプログラム中に現れる回数は少ないので、パッケージ名を長くしてもプログラマーの負担は重くなりません。 (3)アクセス制御を行う パッケージを利用することで、同じパッケージ中のクラスからはアクセスできるが、ほかのパッケージ中のクラスからはアクセスできないようなメソッドやメンバ変数を定義したり、ほかのパッケージからアクセスできないようなクラスを作成したりすることができます。 パッケージの構造とディレクトリ パッケージの構造とディレクトリは一致させなければなりません。一致していない場合、Java VMはクラスを見つけることができず、エラーが起きます。 例えば、パッケージjp.tamagawa.ac中にクラスExampleを定義したときには、パッケージ名を、記号"."で区切られたディレクトリ階層であると見なして、クラスパスの通っているディレクトリ下のディレクトリjp\tamagawa\acにクラスファイルExample.classを置かなければなりません。仮にクラスパスをC:\classesと指定したならば、ディレクトリC:\classes\jp\tamagawa\ac\中にクラスファイルExample.classを置きます。 |
スピーカの線の一方を0VであるVssに接続します。もう一方をピン0に接続します。ピン0の出力が上下することにより音が発生します。出力がhigh(5V)の時スピーカを通して電流は流れません。聞くには短すぎるので、一つのパルスは大きな音を発生しません。大きな音を発生させるには多くのパルスが必要になる理由です。 |
![]() |
Freqout |
---|
package stamp.core; /** * パルス幅変調を基本とした周波数発生 */ public class Freqout extends PWM { /** * PWMを基本としたFreqoutオブジェクトを作る。 音は発生しない * * 入力:int pin: PWMを発生させるためのピン */ public Freqout(int pin) { super(pin); setFrequency(1) ; } /** * PWMを基本としたFreqoutオブジェクトを作る。 音は発生しない * * 入力:int pin: PWMを発生させるためのピン * int frequency: 10ヘルツ単位の周波数 (1 - 12k) */ public Freqout(int pin, int frequency) { super(pin); setFrequency(frequency); } /** * 出力周波数を設定する。正確さは8.68μsのタイムベースである。 * * 入力:int frequency: 10ヘルツ単位の周波数 (1 - 12k) */ public void setFrequency(int frequency) { if ( frequency < 1 ) { frequency = 1; } else if ( frequency > 5760 ) { frequency = 5760; } int halfCycleTime = 5760 / frequency; //使い方 update(int highTime, int lowTime); // duty cycle 50%だからhighTime=lowTime=halfCycleTime update(halfCycleTime, halfCycleTime); } /** * 決められた持続時間の間周波数を出力するように設定する * PWMを開始してから、停止する. * * 入力:int frequency: 10ヘルツ単位の周波数 (1 - 12k) * int time: CPU.delay()を単位とする時間量 */ public void waveOut(int frequency, int time) { setFrequency(frequency); waveOut(time); } /** * 決められた持続時間の間周波数を出力するように設定する * PWMを開始してから、停止する. * * 入力:int frequency: 10ヘルツ単位の周波数 (1 - 12k) * int time: CPU.delay()を単位とする時間量 */ public void waveOut(int time) { start(); CPU.delay(time); stop(); } } |
重要点 |
---|
先頭の行にpackageがある場合はライブラリとして登録するという意味ですから、mainメソッドはありません。このようなライブラリのソースプログラムはProjectsと同列のlibフォルダの下に入ります。stamp.coreの場合は、lib\stamp\coreの中にそのソースプログラムを入れるという意味です。また、Projectsフォルダの下にその指定のフォルダ名があればそこがユーザー用のライブラリとなります。後の実験ではJBotというフォルダを用います。 これらのライブラリを用いるには、import文を用います。例えば、 import stamp.core; とすれば、そこにあるライブラリが使われます。もし、間違えて異なったフォルダに入れてしまった場合には、ライブラリ異常になるので、そのファイルは消して下さい。間違ってコンパイルしてしまった場合は、classファイルね消去して下さい。これを行わないと謎なエラーメッセージに悩まされます。 |
サイクルタイム cycle time |
---|
繰り返し行われるプロセス(仕事、タスク、ジョブなど)で、その1回に要する時間。プロセスの頻度や周期の単位となるもの。 |
Freqout テストプログラム |
---|
import stamp.core.*; /** * Freqout テストプログラム * * Freqoutオブジェクトをどのように作りどのように用いるかを示す。 */ public class TestFreqout { public static void main() { Freqout freqout = new Freqout ( CPU.pin0 ) ; System.out.println ( "Playing tones" ) ; freqout.waveOut ( 100, 1000 ) ; // 1kHz, 100ms freqout.waveOut ( 200, 1000 ) ; // 2kHz, 100ms } } |