むしゃくしゃしていたので、単純なきょどうしかしないハードウェアを作りたい人には魅力的に見える DigiSpark という超小型 Arduino 互換機から始めてみました。
DigiSpark 超小型 Arduino 互換機事始め
とりあえず読んどけって資料
サンプルコード実行までに嵌ったこと
Wiki においてあるデバイスドライバインストーラではデバイスがちゃんと認識されない@Windows10
ネットで探したところ、すでに人柱がフォーラムで訴えており、ドライバが修正されている。
ドライバインストール後に Windows の管理ツール > 「システム情報」を実行し、ツリーの
というド直球な場所に何か USB デバイスがあった場合は、ドライバがちゃんとインストールされていないことを疑うとよい。
Arduino IDE からプログラムを実行する際の作法
DigiSpark は無駄を排除して小型化した結果、リセットボタンすら排除しております。そして PC 側からリセットすることができません。
Assertion failed: res >= 4, file library/micronucleus_lib.c, line 100
というエラーが表示される場合は、”適切なタイミングでリセットが出来ていないためにプログラムを実行できない” からです。
めんどくせぇと思わずに…
Plug in device now... (will timeout in 60 seconds)
と IDE が知らせてくれたらカードを挿入しましょう。
数時間でできたこと
- Lチカ (LED (発光ダイオード) をチカチカ点滅させる)
おそらく今後に悩むこと
- Arduino の開発全般に言えることだと思いますが、純粋な C/C++ じゃないし、リンクされるオブジェクトも (少なくともパッと見隠蔽されているので) わかりませんので省メモリがしづらいです。
- とりあえず、いまのところは問題なさそうだけど、フットプリントデカい…
- ただでさえ少ない pin は、それぞれ使える I/O モードが異なります。参考
- これをクセだと言えるハートの持ち主じゃないと色々厳しいですね。
現状の困ったこと
- 当然のように ICE などなく、JTAG デバッガもサポートされていない。
- print 出力が現状出来ていない。
- これは DigiSpark が USB-HID として認識されることに起因する問題で標準的な方法ではシリアル出力できない
- DigiCDC というライブラリでシリアル出力できるようなことが書かれているが、現状出来ていない
- Arduino IDE が JAVA というオラクル社の邪悪な仮想マシン上で動くプログラムであること
http://okajimania.or-hell.com/doityourself/%E6%95%A2%E3%81%88%E3%81%A6%E5%B0%8F%E5%9E%8B%20arduino%20%E4%BA%92%E6%8F%9B%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%81%A7%20ardu敢えて小型 Arduino 互換デバイスで Arduino デビューしてみる