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



DigiSparkの環境周りが少し解って来たので、LEDの
光をゆるく瞬かせて、LEDっぽくする作戦を進めて
みた。


以前、Mega328用に作ったスケッチをほとんどそのまま
流用しつつ、ピン周りとか、タイマ割り込み関係とか
を見直しかけてみる。

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

基本はこの処理方法のまま。

せっかく、DigiUSBライブラリでシリアルデバッグ的な
ことができるので、いざということを考慮して、
DigiUSBライブラリを読み込んでおきたいところ。

USB周りの処理があるので、タイマ割り込みとの相性は
悪いだろうということと、そもそもMsTimer2ライブラリ
の割り込みは使えないはずなので、割り込みをやめて、
delayで時間調整する処理に変える。
ロウソクの炎の瞬きに、そんな正確な時間管理は不要
なので。


で、タイマー割り込みまわりと、PWM出力用のピンを
変更するだけで、とりあえずコンパイル。通った。
ちなみにPWM対応ピンは、

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

0、1、4の3本らしい。0と1に割り当てしてみた。


さて、書き込んでみる。ウチのDigiSparkは1番ピン
がオンボードLEDなので、これでホワンホワンするはず。

…しない。ほぼ点灯したまま。


うーーーん、正弦波テーブルがメモリ食いすぎてて、
メモリ破壊してるのかな?と思って、あらためて
メモリ量を見直す。
Tiny85って、SRAMは512Bなんだな。コンパイル後の
メモリ使用量をみると、600Bをちょっと超えてた。

とりあえず、正弦波テーブルを1個おきに間引いて、
半分サイズにする。

…400B台に入ったものの、動的メモリを食うことを
考えると、もうちょっと減らさないとだめか…


DigiUSBライブラリをやめて、時間稼ぎ処理は標準の
delay関数を使うように変えてみる。

…200B以下に収まった。なんか、DigiUSBライブラリ
って、すげぇSRAM食いなのなぁ…。
USB周りの処理もしてるし、Serial.printみたいな処理
も受け持ってるから、色々食うんだな。


ひとまずこれで動かしてみる。うん。動いた。オシロで
波形を見る限り、ちゃんと意図通りの波形が出てるみたい。

シャッタースピードを1~2秒くらいで撮影したのがこれ。









こんな風に、複数の正弦波を組み合わせて、時には
ホワンホワンとやわらかく、時にはパタパタと短く、
ロウソクっぽく瞬いているようにしてる。一見ランダム
のように瞬いて見えるけど、やわらかい瞬きなので、
不自然さは感じられないはず。

秋月で売ってる、LEDが瞬いてロウソクみたいに光るって
いうLEDドライバは、動かしてみたところ、ランダム値の
サンプルアンドホールドって感じで、不自然感があるん
だよな。

http://akizukidenshi.com/catalog/g/gI-08752/


んで、0番、1番の2つのピンから、それぞれ違う波形で
合成した結果を出力してて、それぞれ、炎の先っぽと
炎の根っこのイメージにしていて、根っこのほうは
一番暗くなるときの値が大きめ(あまり瞬かない)、
先っぽは小さめ(瞬きの振幅が大きい)という具合に
してある。
しかも、先っぽと根っこでは、合成している波形の
波長も全然ことなるので、全体としてゆらゆらと
炎がゆれているようにみえるかな、と。


とりあえず、電球色じゃなく、いつもの赤色LEDを
繋いで眺めてみる。



うん、うん。こういう感じ。


ちょっと、DigiSpark基板上のLEDが明るすぎて、
なんかちょっと邪魔なんだよな。


Tiny85に直接Hexを書き込んで、そっちで光らせて
みるほうがいいかなぁ。



そもそも、Tiny85の内部クロックとかのFuseって、どんな
設定になってるんだろう?回路図見る限り、外部の
クリスタルとか付けて無いから、内部クロックのはず
なんだけど、多分16.5MHzだよな。

http://www.instructables.com/id/Digispark-DIY-The-smallest-USB-Arduino/

Fuseビットはここに書いてあったけど、クロック周りの
ことはHex値で書かれてもよくわからん。

もしくは、DigiSparkじゃなく、シリアル接続のTiny85版
Arduinoとして、8MHzで動かしてもいいのかもしれん。

http://roshiago.blog.so-net.ne.jp/2012-01-28



DigiSpark自体をロウソクにしちまおうかと思っていた
んだけど、オンボードLEDを取っ払うほうが楽か、
Tiny85単体を使ったほうが楽なのか…


あと、できれば、加速度センサーとか、風センサー
(圧電素子?)とかで、瞬きパターンを少し変化できる
ようにしたら面白いんだろうけどな。DigiSparkだと、
ちょっと容量的に厳しいかな…



コメント ( 0 )
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする



« 9日目 モーションGIF... »
 
コメント
 
コメントはありません。
コメントを投稿する
 
名前
タイトル
URL
コメント
コメント利用規約に同意の上コメント投稿を行ってください。

数字4桁を入力し、投稿ボタンを押してください。