「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ



Fritzing書籍について、簡単な紹介を追加。

http://picavr.uunyan.com/my_books.html

Fritzingでパーツを作りたいんだけど、SVGファイル
とか色々弄るのはよくわかんないんだよなぁ、という
方は、ぜひ眺めてみてください。





さて、来たよ、来た来た。こないだAliexで頼んでた
DigiSparkが届いた。待ってたよ!!

https://ja.aliexpress.com/item/1pcs-Digispark-kickstarter-development-board-ATTINY85-module-for-Arduino-usb/32584084654.html

早速、モバブーに繋いでみる。



ブートローダがちゃんと動いているっぽい。LEDが点滅。
ちなみに、上のLEDがパワー用、下のLEDがLEDチカチカ用。



さっそく、Arduino-IDEの環境を整理することに。

ちょっと調べてみた感じでは、IDEの設定画面で
jsonファイルを読み込みするように設定すると、DigiSpark
がボード一覧に載るらしいんだけど、Arduino-IDEを起動
してみると、設定画面にそれらしい項目が無い。

どうやら、IDEのバージョンが古いから、そういう画面が
まだ実装されてなかったみたい。以前の、

http://brown.ap.teacup.com/nekosan0/3043.html

このときにも触れたけど、ちょっと新しい環境では
コンパイルがちゃんと通らなくなっちゃってたので、
バージョンアップを先延ばししてたんだよな。

で、腹を決めて、あらためて新しいIDEをインストール
してみる。インストールといっても、例によって
zip版のほうをダウンロードして、解凍するだけ。
複数環境切り替えて使えるように。


最新版をダウンロードしたら、1.8.4になってた。
その前が、1.6.0だから、完全にウラシマ状態。

テキスト編集エリアの操作性も、ぐっと改善されてるのね。
以前は、最上段とか、最下段のあたりをマウスクリック
すると、なぜか勝手にスクロールしちゃう使いにくさが
あったけど、あの辺とかすっかり改善されてる。



で、設定画面開いて、DigiSparkの設定。

http://homemadegarbage.0t0.jp/digispark-1
http://digistump.com/wiki/digispark/tutorials/connecting

このあたりを参考にしました。

これらのページに従って操作すると、インストール作業が
しばらく動いて、ボード一覧に

   Digispark(Default - 16.5mhz)

っていうのが増えてるので、それをチョイス。
comポートは実装していないので、選ばなくてもよし。


んで、IDEのファイルメニュー「ファイル」→「スケッチ例」
に、DigiSparkのサンプルがたくさん登録されているので、
その中から、「Digispark_Examples」→「Start」と選ぶと、
いわゆるLEDチカチカのサンプルスケッチが開く。

このスケッチでは、D0、D1を使ってLEDを交合に光らせる
っていう内容になっているんだけど、どうやらこれは、
ファームウェアのバージョン(?)によって、
LEDが実装されているコネクタが異なるらしい。


いつものようにコンパイルして、正常にコンパイルが
できると、60秒以内にDigiSparkを繋ぐように表示される
ので、USBコネクタにプスッと。

初回は、DigiSparkのドライバが入って無いので、
ドライバを入れる必要あり。ドライバは、

http://qiita.com/mt08/items/df4ed8c659b205d1fa1e

ここを参考にして入れてみた。


ドライバが入ったら、あらためて書き込んでみる。

サンプルスケッチをちょこっと修正して、実験して
みると、今日届いたやつは、D1のほうにLEDが付いてた
みたい。

つづけて、PWMでLEDホワンホワンをやってみる。
簡単にサクッと光る。いいねぇ。いいねぇ。



じゃぁ、ってんで、シリアルモニタみたいなデバッグ環境
どうするの?と思って調べてみる。

一つには、ソフトウェアシリアルを使って、USBシリアル
変換ケーブルとかで繋ぐって方法があるみたい。
しかも、驚いたことに、TX/RXをそれぞれ確保するんでは
なくて、1ピンだけで送受信を切り替えて通信するらしい。

https://digistump.com/wiki/digispark/tutorials/debugging

ここにその配線が描かれてる。斬新な回路だなぁ。


もう一つは、DigiUSBっていうライブラリを使って、
HIDデバイスとして通信する方法。シリアル通信と
似たような機能で通信できて、かつ、USBケーブルだけ
で通信できるもの。

ただし、シリアルポートじゃなくて、HID通信なので、
標準のシリアルモニタでは通信できない。
なので、自前で通信プログラムを書くか、これ用の
モニタプログラムをもらってきて使うかする必要あり。


http://iot-dev.blogspot.jp/2016/09/digisparkpc.html

ここで触れられている

https://github.com/digistump/DigisparkExamplePrograms

このページで、モニタプログラムのソースとmakefile
が公開されているので、cygwinでmakeしてみた。

…なんかUSB関係のヘッダファイルが見つからないとかで
エラーになる。makeが通らない。

MinGWじゃないと駄目なのかな?と思って、MinGWを
入れてみる。makeをする。

…やっぱり同じエラーになっちゃう。

なにかをインストールしないと、コンパイルに必要な
ファイルがそろわないのかな?と思って、色々もがいて
みたものの、上手くいかなかった。

けど、色々調べてみると、さっきのgithubのページの、

https://github.com/digistump/DigisparkExamplePrograms

「Clone or download」っていう緑のボタンクリックして、
アーカイブ一式ダウンロードすると、階層の深いところ
に、コンパイル済みのexeファイルが入っているので、
それが使えるみたい。monitor.exeっていうファイル。

http://kghr.blog.fc2.com/blog-entry-89.html

ここに書いてあった。


で、これを使うスケッチをDigiSparkに書き込んでから、
このモニタプログラムを実行すると…

「No DigiUSB Device Detected」

って出てきちゃう。最初原因が分からず、色々と
調べまくったんだけど、なんとなく、ドライバが
ちゃんとあたって無いんじゃね?と思って、改めて
ドライバを入れなおす。

http://denshibu.blog.fc2.com/blog-entry-80.html

ここに書かれている。64ビット版なので、DPinst64.exe。


さて、あらためてモニタのプログラムを動かしてみる。
できた。このドライバでいいみたい。
(上記でインストールしたドライバではだめだった
のかなぁ?それとも両方必要ってことなのかなぁ?)


DigiUSBを使うスケッチを書き込んだDigiSparkを
USBコネクタに差し込んで認識させてから、モニタの
プログラムを実行すると、DigiSparkから送られてくる
文字列が、画面に表示されるという寸法。この辺は、
Arduinoのシリアルモニタとだいたい同じ。

ただ、なんか表示が少し遅いなぁ。少しもたつく感じ。
処理速度が遅いのかな?

DigiSpark基板側は、LEDが規則正しく光っている
ってところを見ると、ドライバか、このモニタプログラム
のどちらかで、処理がもたついているって考えるのが
ただしそう。

あと、USBコネクタに突っ込んでから、モニタプログラム
を起動するまでの通信内容の扱いが、ちょっと微妙だな。
その範囲の通信は、微妙にバッファリングされている
風なんだけど、読み出す(表示されれる)順序が
少しおかしい感じがする。

ある程度処理が進んで、バッファが掃けた後は、およそ
正しい表示が出てくるみたい。


なんにしても、Arduino-IDEのシリアルモニタに比べて、
機能が乏しいので、あくまでデバッグ用のちょっとした
通信に使うっていう感じになるなぁ。




とりあえず、DigiSparkが動くことが分かって、最低限
のデバッグ環境は手に入ったので、ちょっとずつ使って
行こう。

まずは、例のLEDホワンホワンの蝋燭だな。

http://brown.ap.teacup.com/nekosan0/2186.html

PWM出力は使えることが分かったんだけど、これ、
ハードウェアPWMなのか、それともソフトウェアPWM
なのかが判ってない。うわさによると、ハードウェア
PWMは1こだけで、残りはソフトウエアPWMらしいん
だよな。まぁ、PWMっぽくホワンホワンとしてくれれば
どっちでもいいんだけど。

あとは、HIDデバイスとして、キーボードとかの
エミュレーションしたりもできるらしいので、
そんなのも試したいところ。

それにしても、こんな色々遊べそうなものが100円
そこそこで手に入っちゃうのは、いいねぇ。

コネクタ、どうするかなぁ?Arduinoみたいに、ピンソケット
生やすのがいいのか、ピンヘッダ生やすのがいいのか…
複数買ったので、バリエーションあってもいいよな。

あと、HIDデバイスをゴニョゴニョするためのプログラム
が自由に書けるといいなぁ。面白そうなデバイス作れそう。


それにしても、せっかくMinGW入れたのに、コンパイルが
通らないの、ちょっと残念だな。コンパイル通ったら、
そのプログラムをゴニョゴニョして、DigiSparkと通信
するプログラムを書いてみたりしようと思ってた
のに。






https://www.youtube.com/watch?v=Jl9nAfqZKOQ

コジコジさんの、ジャンクショップで買ってきたドラム
マニアコントローラを改造して、MIDI化するっていう
お話。面白い。

中身とか制御方法とかは、まぁ、想像ができる範囲
だったんだけど、実際に加工して、スケッチ書いて、
演奏までやってみるのが面白かった。

やっぱ、PCにUSB-MIDで繋ぐと、レイテンシが大きい
のかな。PC繋いで鳴らしてるときは、すごい遅い。
もう、0.5秒くらいはある感じで、とても楽器として
成立して無い。
でも、音源繋いで(?)演奏してる様子をみるかぎり、
レイテンシは感じられないからなぁ。やっぱ、
音源次第なんだろうなぁ。
そういえば、以前、ArduinoをMIDIマスターに、PCを
MIDI音源に使ってみたときに、やっぱりPC音源では
すごいレイテンシが有って困った記憶があるけど、
やっぱ、PCをMIDI音源として使っちゃうのは、ちょっと
無理があるみたいだな。




コメント ( 0 )