| ここに記載した内容は、千秋さん、irukaさん、kumanさんと共同で取り組んでいるnutshellプロジェクトにより実現したものです。また、V-USB[1]をはじめとする多くの無償のツールと、たくさんの先人の努力の積み重ねにより実現したものです。心より感謝申し上げます。 |
ここで、「パソコン制御」は、スイッチやセンサやLEDなどの入出力素子をパソコンにUSB接続し、パソコン側のプログラムで制御する方法です。また、「マイコン制御」は、パソコンと切り離して、マイコン単独で入出力素子を制御する方法です。
パソコンとUSB接続したATtiny2313のIOレジスタを読み書きします。プログラムは、HTAファイルの中にJavascript言語で記述します。プログラミングが容易になるように、そしてArduino風のプログラミングができるように、ライブラリhidmon.jsを作成しました(表1)。この方法により、外部入出力を伴うパソコンのアプリケーションソフトを、ホームページ作成の延長線上で、比較的容易に作成することができます。
| 定数 | |
|---|---|
| 定数の名称 | 内容 |
| DDRB, PINB, PORTB, DDRD, PIND, PORTD | 外部入出力ポート |
| TCNT1H, TCNT1L, TCCR1A, TCCR1B, TCCR1C, OCR1AH, OCR1AL, OCR1BH, OCR1BL, ICR1H, ICR1L, TIMSK | タイマー関連レジスタ |
| UDR, UCSRA, UCSRB, UBRRH,UBRRL | シリアル通信関連レジスタ |
| HIGH, LOW, INPUT, OUTPUT | ピン入出力設定値 |
| PB0-7, PD0-6 | Arduinoのpin番号 |
| 関数 | |
| 関数の名称 | 内容 |
| poke(a,d) | アドレスaにデータdをセット |
| peek(a) | アドレスaの読み取り |
| sleep(t) | t(ms)スリープ(プロセスが残る) |
| delay(ms) | t(ms)スリープ(CPU負荷重い) |
| pinMode(pin, mode) | pin(8-16)をmode(INPUT/OUTPUT)に |
| digitalWrite(pin,val) | pin(8-16)をval(HIGH/LOW)に |
| digitalRead(pin) | pin(8-16)の値(HIGH/LOW)を読み取り |
| analogWrite(pin,val) | pin(12,13)をval(0〜255)に pin(8-11,14-16)はvalが0〜127でLOW、128〜でHIGH |
| analogRead(pin) | pin(10)の値(0〜1023)を読み取り |
| beginSerial(baud) | シリアル送信の速度をbaudに |
| serialWrite(val) | valをシリアル送信(ピンはD1(PD1)) |
| servoAttach(pin) | pin(12,13)をサーボモータに接続 |
| servoWrite(deg) | サーボモータの位置をdeg(0〜179)に |
| tone(pin, freq, ms) | pin(12,13)に周波数freq, 長さmsの矩形波出力 |
| $(id) | HTAオブジェクトのID参照(getElementByIdの短縮形) |
下のプログラム例では、パソコン側の表示も連動させているために、その分マイコン制御(Arduino)と比べて少し長めのプログラムになっています。オリジナルのArduinoでは、計測値をパソコン画面に表示させようとすると、Arduinoのプログラムとパソコン側のProcessingプログラムの両方を書かなければいけませんが、この方法ではひとつのプログラムで済ますことができます。
いくつかの問題があります。
ArduinoIDEでプログラムを作り、書き込みます。
(参考サイト)
[1] V-USB, http://www.obdev.at/products/vusb/
[2] hidmon-2010-0214, http://hp.vector.co.jp/authors/VA000177/html/A3C4A3EFA3F7A3EEA3CCA3EFA3E1A3E4.html
[3] WinAVR, http://sourceforge.net/projects/winavr/
[4] hidspx-2011-0324, http://www-ice.yamagata-cit.ac.jp/ken/senshu/sitedev/index.php?AVR%2FHIDaspx_news02
[5] SFCmini, http://kandk.cafe.coocan.jp/sfcmini/
[6] Arduino, http://www.switch-science.com/trac/wiki/Arduino-ja-jp
[7] dude-wrap, http://www-ice.yamagata-cit.ac.jp/ken/senshu/sitedev/index.php?AVR%2FHIDaspx_news02
[8] USB直結Arduino互換ボード, http://www.geocities.jp/arduino_diecimila/make/usbasp/
[9] シンプルなA-Dコンパータ, http://elm-chan.org/docs/avr/avradc_j.html
(技術情報)
* main2313.batはATtiny2313(12MHz Xtal)のhexファイル作成用のバッチファイルです。
** hidmon.dllは予めパスを設定したフォルダ(例えばC:\bin)に入れておきます。
*** (10)(11)のAD変換は[9]を参考にしました。D9ピンにコンデンサを接続する必要があります。また、コンデンサの値はパソコン制御では0.1μF、マイコン制御では0.01μFと異なりますので注意してください。パソコン制御では値が多少不安定ですので目安程度に留まります。また、パソコン制御ではTimer1を使用しているため、PWMを使用するanalogWrite()と同時に利用することはできません。
| 部品名・型番 | 数 | 備考(参考価格 他) |
|---|---|---|
| ヒダピオ学習回路 6530-700 | 1 | TopMan @1785 |
| ピンヘッダ(オスL型) 1×40(40P) | 1 | 秋月 @50 |
| ブレッドボード EIC-301 | 1 | 秋月 @150 |
| ジャンパワイヤ EIC-J-L | 1 | 秋月 @300 |
| ジャンパワイヤ 15cm(白) | 1 | 秋月 @300 |
| 電池ボックス(単3×2) BH-321-AS | 1 | 秋月 @60 |
| 電池(単3) | 2 | ダイソー @10×2 |
| AVRマイコン ATtiny2313V | 1 | 秋月 @100 |
| タクトスイッチ | 1 | 秋月 @10 |
| LED 5mmφ 赤 | 2 | @10×2 |
| LED 5mmφ 緑 | 2 | @10×2 |
| LED 5mmφ 黄 | 1 | @10 |
| 数字表示LED C551SR | 1 | 秋月 @100 |
| 圧電ブザー SPT08 | 1 | 秋月 @50(ただし2個単位) |
| カーボン抵抗 1kΩ(茶黒赤) | 2 | 秋月 @1×2(ただし100個単位) |
| カーボン抵抗 220Ω(赤赤茶) | 1 | 秋月 @1×1(ただし100個単位) |
| ボリューム 10kΩB | 1 | 秋月 @50 |
| ボリューム用ツマミ ABS-28 | 1 | 秋月 @20 |
| CDSセル 5mmφ | 1 | 秋月 @40 |
| サーボモータ GWS PICO/STD/F | 1 | 秋月 @800 |
| クリスタル 12MHz | 1 | 秋月 @50×1(ただし10個単位) |
| セラミックコンデンサ 22pF | 1 | 秋月 @5×2(ただし20個単位) |
| USB接続モジュール | 1 |
| パソコン制御(ヒダピオ) | パソコン制御(USBアダプタ) | マイコン制御 | ||||||
|---|---|---|---|---|---|---|---|---|
ヒダピオボードの準備
ブレッドボードの準備
|
USBアダプタの準備
下図は、USBアダプタの回路図と製作例です。この実装およびブレッドボードとの組み合わせについては[8]を参考にしました。
![]()
|
AVRマイコンATtiny2313の準備
ライタの準備 □ 専用ライタ HIDaspxライタを準備します。写真のライタは、配線を簡略化するためにICクリップを使っています。 ![]() □ ヒダピオライタ
![]() ![]() ![]() | ||||||
パソコンの準備
|
パソコンの準備
| |||||||
LEDを点滅させます。
| パソコン制御(ヒダピオ) | パソコン制御(USBアダプタ) | マイコン制御 | |
|---|---|---|---|
|
|
| |
[blink.hta]
|
ArduinoIDEを利用する場合は、Arduinoを起動し、blink.pdeを作成し、書き込み操作を行います。 ![]() ArduinoIDEを利用しない場合は、メモ帳でblink.pdeを作成し、そのファイルアイコンを予め作成したa2313.batのショートカットにドラッグ&ドロップします。 ![]()
| ||
LEDをだんだん明るくし、だんだん暗くし、これを繰り返します。
| パソコン制御(ヒダピオ) | パソコン制御(USBアダプタ) | マイコン制御 | |
|---|---|---|---|
|
|
| |
[fade.hta]
|
ArduinoIDEを利用する場合は、Arduinoを起動し、fade.pdeを作成し、書き込み操作を行います。 ![]() ArduinoIDEを利用しない場合は、メモ帳でfade.pdeを作成し、そのファイルアイコンを予め作成したa2313.batのショートカットにドラッグ&ドロップします。 | ||
| パソコン制御(ヒダピオ) | パソコン制御(USBアダプタ) | マイコン制御 | |
|---|---|---|---|
|
|
| |
[sw.hta]
|
ArduinoIDEを利用する場合は、Arduinoを起動し、sw.pdeを作成し、書き込み操作を行います。 ![]() ArduinoIDEを利用しない場合は、メモ帳でsw.pdeを作成し、そのファイルアイコンを予め作成したa2313.batのショートカットにドラッグ&ドロップします。 | ||
| パソコン制御(ヒダピオ) | パソコン制御(USBアダプタ) | マイコン制御 | |
|---|---|---|---|
|
|
| |
[playnote.hta]
|
ArduinoIDEを利用する場合は、Arduinoを起動し、playnote.pdeを作成し、書き込み操作を行います。 ![]() ArduinoIDEを利用しない場合は、メモ帳でplaynote.pdeを作成し、そのファイルアイコンを予め作成したa2313.batのショートカットにドラッグ&ドロップします。 | ||
スイッチを押すと音が出ます。ボリュームを回して音階を調整します。
| パソコン制御(ヒダピオ) | パソコン制御(USBアダプタ) | マイコン制御 | |
|---|---|---|---|
|
|
| |
[instrument.hta]
|
ArduinoIDEを利用する場合は、Arduinoを起動し、instrument.pdeを作成し、書き込み操作を行います。 ![]() 上記の方法ではanalogRead()をうまく呼び出せません(調査中)。以下の方法ではうまくいきます。 ArduinoIDEを利用しない場合は、メモ帳でinstrument.pdeを作成し、そのファイルアイコンを予め作成したa2313.batのショートカットにドラッグ&ドロップします。 | ||
LEDの数字表示をカウントアップさせます。パソコン制御では、パソコン画面にも数字を表示させます。LEDの数字表示プログラムはPORTBを直接操作するようになっていて、Arduino風ではありません。
| パソコン制御(ヒダピオ) | パソコン制御(USBアダプタ) | マイコン制御 | |
|---|---|---|---|
|
|
| |
[countup.hta]
|
ArduinoIDEを利用する場合は、Arduinoを起動し、countup.pdeを作成し、書き込み操作を行います。 ![]() ArduinoIDEを利用しない場合は、メモ帳でcountup.pdeを作成し、そのファイルアイコンを予め作成したa2313.batのショートカットにドラッグ&ドロップします。 | ||
| パソコン制御(ヒダピオ) | パソコン制御(USBアダプタ) | マイコン制御 | |
|---|---|---|---|
|
|
| |
[countupsw.hta]
|
ArduinoIDEを利用する場合は、Arduinoを起動し、countupsw.pdeを作成し、書き込み操作を行います。 ![]() ArduinoIDEを利用しない場合は、メモ帳でcountupsw.pdeを作成し、そのファイルアイコンを予め作成したa2313.batのショートカットにドラッグ&ドロップします。 | ||
| パソコン制御(ヒダピオ) | パソコン制御(USBアダプタ) | マイコン制御 | |
|---|---|---|---|
|
|
| |
変換値は多少不安定で、目安程度にとどまります。 |
ArduinoIDEを利用する場合は、Arduinoを起動し、adc.pdeを作成し、書き込み操作を行います。 ![]() 上記の方法ではanalogRead()をうまく呼び出せません(調査中)。以下の方法ではうまくいきます。 ArduinoIDEを利用しない場合は、メモ帳でadc.pdeを作成し、そのファイルアイコンを予め作成したa2313.batのショートカットにドラッグ&ドロップします。 | ||
| パソコン制御(ヒダピオ) | パソコン制御(USBアダプタ) | マイコン制御 | |
|---|---|---|---|
|
|
| |
変換値は多少不安定で、目安程度にとどまります。 |
ArduinoIDEを利用する場合は、Arduinoを起動し、adc.pdeを作成し、書き込み操作を行います。 ![]() 上記の方法ではanalogRead()をうまく呼び出せません(調査中)。以下の方法ではうまくいきます。 ArduinoIDEを利用しない場合は、メモ帳でadc.pdeを作成し、そのファイルアイコンを予め作成したa2313.batのショートカットにドラッグ&ドロップします。 | ||
サーボモータの位置を連続的に制御します。パソコン制御では、パソコン画面のバー表示も変化します。
| パソコン制御(ヒダピオ) | パソコン制御(USBアダプタ) | マイコン制御 | |
|---|---|---|---|
|
|
| |
[sweep.hta]
|
ArduinoIDEを利用する場合は、Arduinoを起動し、sweep.pdeを作成し、書き込み操作を行います。 ![]() ArduinoIDEを利用しない場合は、メモ帳でsweep.pdeを作成し、そのファイルアイコンを予め作成したa2313.batのショートカットにドラッグ&ドロップします。 | ||
| パソコン制御(ヒダピオ) | パソコン制御(USBアダプタ) | マイコン制御 | |
|---|---|---|---|
|
|
| |
[signal.hta]
|
ArduinoIDEを利用する場合は、Arduinoを起動し、signal.pdeを作成し、書き込み操作を行います。 ![]() ArduinoIDEを利用しない場合は、メモ帳でsignal.pdeを作成し、そのファイルアイコンを予め作成したa2313.batのショートカットにドラッグ&ドロップします。 | ||
押しボタン信号機の制御をします。パソコン制御では、パソコン画面の信号機表示が変化し、歩行者信号が青の時にパソコンから「カッコー」の音が出ます。マイコン制御では、歩行者信号が青の時に「カッコー」のブザー音が鳴ります。
| パソコン制御(ヒダピオ) | パソコン制御(USBアダプタ) | マイコン制御 | |||||
|---|---|---|---|---|---|---|---|
|
|
| |||||
[signalkakko.hta]
|
ArduinoIDEを利用する場合は、Arduinoを起動し、signalkakko.pdeを作成し、書き込み操作を行います。
ArduinoIDEを利用しない場合は、メモ帳でsignalkakko.pdeを作成し、そのファイルアイコンを予め作成したa2313.batのショートカットにドラッグ&ドロップします。 | ||||||
Midi楽器を制御します。マイコン制御の内容は「ジングルベル」のページと同じです(鈴付き!!)。
| パソコン制御(ヒダピオ) | パソコン制御(USBアダプタ) | マイコン制御 | |
|---|---|---|---|
|
|
| |
[midi.hta]
|
ArduinoIDEを利用する場合は、Arduinoを起動し、midi.pdeを作成し、書き込み操作を行います。 ![]() ArduinoIDEを利用しない場合は、メモ帳でmidi.pdeを作成し、そのファイルアイコンを予め作成したa2313.batのショートカットにドラッグ&ドロップします。 | ||
(6)にドラムを追加してみました。現在、マイコン制御のみです。構想は野尻抱介氏のリズムボット(Make, vol.06, p37)を参考にしました。レパートリーは「大きなたいこ」「ジングルベル」「大きな古時計」「ハッピーバースデー」「クリスタルチルドレン」「附属特別支援学校校歌」...。詳しくはミニドラム・ミニ鉄琴のページを参照してください。
| パソコン制御(ヒダピオ) | パソコン制御(USBアダプタ) | マイコン制御 |
|---|---|---|
| ||
|
ArduinoIDEを利用する場合は、Arduinoを起動し、drum.pdeを作成し、書き込み操作を行います。 ArduinoIDEを利用しない場合は、メモ帳でdrum.pdeを作成し、そのファイルアイコンを予め作成したa2313.batのショートカットにドラッグ&ドロップします。 | ||
おもちゃの鉄琴を演奏させてみました。現在、マイコン制御のみです。レパートリーは「ハッピーバースデー」...。詳しくはミニドラム・ミニ鉄琴のページを参照してください。
| パソコン制御(ヒダピオ) | パソコン制御(USBアダプタ) | マイコン制御 |
|---|---|---|
| ||
|
ArduinoIDEを利用する場合は、Arduinoを起動し、tekkin.pdeを作成し、書き込み操作を行います。 ArduinoIDEを利用しない場合は、メモ帳でtekkin.pdeを作成し、そのファイルアイコンを予め作成したa2313.batのショートカットにドラッグ&ドロップします。 | ||