8MHz駆動になったmega168で、UARTエコー。
シリアルコンソールで送信した値がそのまま帰ってくる。
ATMega8の時とは違って、受信割り込みに反応して返すのではなくmain()の中のループで受け取って返している。というか受信割り込みから復帰できないので。
今晩中に解決できるといいな…
8MHz駆動になったmega168で、UARTエコー。
シリアルコンソールで送信した値がそのまま帰ってくる。
ATMega8の時とは違って、受信割り込みに反応して返すのではなくmain()の中のループで受け取って返している。というか受信割り込みから復帰できないので。
今晩中に解決できるといいな…
技術のエクササイズ、テクササイズの第9回課題でArduinoボードを作った。テクササイズのサイトはパスワードかかってますが。
Arduinoは何度も書いてるけど、Atmel ATmega8/ATmega168を使いやすくする開発環境で、基盤の仕様やブートローダーも全部オープンソースになっているプロジェクトです。
なのでArduinoボードを購入せずに、部品買ってきてゼロから自分で作る事もできる。
オープンっていうか、RS232C-UART変換と16MHzの発振子を使うことを守れば、基本的に何でも良い。Arduinoのサイトにパーツリストや回路図があるが、今回は日本で入手しやすいパーツ(秋月や千石など。DigiKeyは小ロットだと高いので使わない)で作った。
先週マルツで買ったATmega168というAtmel社のAVRマイコンを、動作チェックした。
ここね。秋月の通り。棚に在庫無かったので、言ったら他店舗から取り寄せてくれた。
■ATmega8→ATmega168
ATmega168はATmega8系統のピンコンパチ(28pin)の上位版。ATmega8->ATmega48->ATmega88->ATmega168という順列。
HERO’S Downloadのデータシート翻訳版をざっと見た違いは以下の通り。
・Flashメモリの容量が2倍
・全てのピンに外部入力割り込みが付いた
・PWMが6つある
・いくつかのレジスタの名前が変わった
28ピンというサイズとその機能が俺らの用途に絶妙なので、AT90S4433の頃からずっと使っている。最近のArduinoもATmega168用のブートローダがある。
「全てのピンに外部入力割り込みが付いた」は、ピンへの電気の入力ON/OFFをイベントで通知してくれるという事。ATmega8までは基本的には(INT0, INT1以外のピンは)ループの中で監視するしかなく、重たい他の処理中は信号を見ることができなかった。PCの様な高機能なマルチスレッドが無いマイコンで複雑な事をするにはとても重要な機能だ。
■動作チェック
今までATmega8を動かしていた回路にそのまま入れ替えてみた。
晩ご飯が遅くて目が冴えてしまったので、ノリで「TagTube」というのを作った。
サービスとしては動いてませんが、ソースコード公開しておきます。
YouTubeのflvファイルのURIは動的に変わるので、以前がんばって取得するcgiをperlで作ったのだけどまたYouTubeの仕様が変わったのでしばらくやってなかった。
んで、昨日の夜に和田さんが、「WebService::YouTube::UtilでflvのURI取れるよ」と言ってたので、朝2時に始めて4時にとりあえず完成した。たくさんのflvを再生したらどれぐらい重くなるかとか、YouTubeとのやりとりの速度が大体わかってきた。
まずインストール
cpan> install WebService::YouTube
そしてYouTubeのDeveloper IDも取っておく
せっかくだからタグ検索して、20個のflvを同時に(重いので順番に、になってしまったが)並べて再生するFlashを作ってみた。
つうか、みんなの叫びすぎ
■技術的なこと
まずFlashにMiniPlayerというクラスを20個敷き詰める。そして、”oklab”や”shokai”でYouTubeのREST-APIをタグ検索して、サムネイル(jpg)とvideo_idを取ってくる。サムネイルだけとりあえずMiniPlayerの中のLoaderに表示する。
最後にCGIにvideo_idを渡すと、flvのURLが返ってくるのでMiniPlayerの中のMediaDisplayに表示する。
おわり。もう一回やる時は再起動してください。
■コード
SourceCode – .fla, .swf, .as (Flash8 ActionScript2.0)
あとXPath4AS2を使ってます。→使い方