Irukaさん[1]やsehshuさん[2]が開発されたHIDmonをJAさん[3]が中学校技術科の制御教材に活用されているのを大変興味深く思い、HTAで利用できないものかと試してみました。試行錯誤中ですが、とりあえずご紹介まで。
プログラムはWindowsに実装されているmshtaで解釈されるので、特別なソフトをインストールする必要がなく、すぐに実行できます。ただしhidmon2.js(tiny2313用)とhidmon88.js(mega328用)はSFC miniをインストールする必要があります。一方、hidmon1.js(tiny2313用)の場合、プログラム中のExecで黒い画面が表示されてしまいます。
回路図は下記。tiny2313では、ファームウェアは[5]のmain-12.hex、パソコン側の制御プログラムは[6]のhidmon.dllを使用しました。mega328では、ファームウェアは[8]をベースに作成し、パソコン側の制御プログラムhidmon88.dllは[6][7]をベースに作成しました。(hidmon88.zip)
dude-wrap[9]でbootloadHIDを利用できるようにしたところ、Arduinoからアップロードできるようになりました。
写真右のブレッドボードは、[10]の実装を参考にしました。
| ↓ tiny2313使用 | ↓ mega328使用 | ↓ mega328(ブレッドボード) |
|---|
hidmon1.jsは、hidmon.exeを呼び出して入出力を行っています。また、hidmon2.jsは、SFC miniを使ってhidmon.dllを直接利用しています。(SFC miniについてはirukaさんから教えていただきました。)
| ポートの変数定義 | ... DDRB, PORTB, PINB, DDRD, PORTD, PIND, TCCR0A, TCCR0B, OCR0A, TCCR1A, TCCR1B, OCR1AH, OCR1AL |
| (hidmon88.jsのみ)→ | ADMUX, ADCSRA, ADCL, ADCH, ADCSRB, DIDR0 |
| poke(a,d) | ... アドレスaにデータdをセット |
| peek(PIND) | ... PINDの入力 |
| sleep(t) | ... t(ms)スリープ |
※ 以下のプログラムhidtest1.hta〜hidtest3.htaで、hidmon1.jsまたはhidmon88.jsを使う場合には次の箇所を変更してください。
「点灯」「消灯」「点滅」「カウントアップ」をクリックすると、7セグメントLEDの表示がそれぞれ変化します。

基板上のスイッチ操作(「カウントアップ」と「カウントダウン」)に応じて、基板上のLEDと画面にカウントを表示します。

「ドレミー」をクリックすると「ドレミー」が、「下の楽譜を演奏」をクリックするとテキスト欄の任意の楽譜を演奏します。

hidtest4.htaは基板上のボリュームを回すと、基板上のLEDと画面の数字が変化します。
pong.htaはPONGゲームです。ボリュームを回してラケットを上端に移動するとゲーム開始です。


blink.hta:



blink.c:
(参考サイト)
[1] AVR_Monit, http://hp.vector.co.jp/authors/VA000177/html/AVR_Monit.html
[2] HIDmon掲示板, http://www-ice.yamagata-cit.ac.jp/ken/senshu/sitedev/index.php?AVR%2FHIDmon00
[3] JA制御 ヒダピオシステム, http://www.ne.jp/asahi/ja/asd/gijutu/HIDapio/
[4] SFC mini, http://kandk.cafe.coocan.jp/sfcmini/
[5] hidspx-2010-0413, http://hp.vector.co.jp/authors/VA000177/html/A3C4A3EFA3F7A3EEA3CCA3EFA3E1A3E4.html
[6] hidmon-2010-0214, http://hp.vector.co.jp/authors/VA000177/html/A3C4A3EFA3F7A3EEA3CCA3EFA3E1A3E4.html
[7] hidmon-Mega88-1002, http://hp.vector.co.jp/authors/VA000177/html/A3C4A3EFA3F7A3EEA3CCA3EFA3E1A3E4.html
[8] bootmon-ws172-bcc55, http://hp.vector.co.jp/authors/VA000177/html/A3C4A3EFA3F7A3EEA3CCA3EFA3E1A3E4.html
[9] dude-wrap-2010-0517, http://hp.vector.co.jp/authors/VA000177/html/A3C4A3EFA3F7A3EEA3CCA3EFA3E1A3E4.html
[10] USB直結Arduino互換ボード, http://www.geocities.jp/arduino_diecimila/make/usbasp/