先週の土曜日に酔った勢いでポチした品物が、1週間経過した本日手元にやってきました。実際には月曜発送されて水曜に関西空港に着。そこから一般の宅配便で配達され、かつ不在だったので1週間かかったわけです。
今日は二日酔いで気分悪いのでこれはイジリません (^^;
このサイトは楠 昌浩が興味をもったことに対して広く浅くネタ集めしております。
ふと、最近電子工作キットもろくに作っていないという状況なので、少しリハビリということで
雷放電探知キットと、カメラのケーブルを購入。雷放電探知キットの写真は何日か前にもここにのせたような気はします。雷がなった時にAMラジオに雑音がはいるので雷来たなというのがわかりますが、このキットも雷放電のノイズを増幅して、LED点けてみたり今回であれば私はカメラのシャッターを切りたいので、カメラのケーブルと接続する。という工作をしたいなーと思ってるところでございます。
なので、工作的には一応フォトカプラで絶縁はしとこかなという程度で難易度は低いです。正直なところ、雷などはビデオカメラ回しとけばいいんですが、今回はこのキットを部品屋さんで見つけたのでちょっくらやってみましょうというところです。あとは、フォトトランジスタで光りを拾うのも思い付くところですが、こちらは実験ネタにするか決めかねてます。
ケーブルの先っぽがバナナプラグか…
スタートメニューから Xilinx ISE Design Suite 13.1 → アクセサリ → アップデートのチェック
を実行いたしますと、更新対象のプロダクトが表示されます。私の場合はJapanese Documentaion for 13.1 PlanAhead と 13.1 April 2011 Update is now avaliable の2つが表示されてました。で、まず 13.1 のアップデートをダウンロードします。
何故かWebブラウザが起動されてログインしないことにはダウンロード出来ません。仕方ないのでログインします。そうしたら Xilinx_ISE_DS_Update_13.1_O.40e.2.1.tar のダウンロードが始まりました。
ダウンロードするときのダイアログボックスに Launch when done のチェックボックスがあるのでチェックしときましょう。そうすればダウンロードした .tar の展開まではやってくれます。
あとは。 xsetup.exe を流せばOK
どうでもいいけど、ダウンロードの度にログインする仕組みはやめてくれ
function initializeVfd { $a = [byte]0x1b, [byte]0x40 $serialPort.write($a, 0 ,$a.Length) } function clearVfd { $serialPort.write( [char]0x0c ) } function displayCursorVfd { $a = [byte]0x1f, [byte]0x43, [byte]1 $serialPort.write($a,0,$a.Length) } function moveCursorVfd([int]$x, [int]$y) { $a = [byte]0x1f, [byte]0x24, [byte]5, [byte]0, [byte]1, [byte]0 $serialPort.write($a,0,$a.Length) } function drawBitmapVfd { $a = [byte]0x1f, [byte]0x28, [byte]0x66, [byte]0x11, [byte]128, [byte]0, [byte]8, [byte]0, [byte]1 $a.Length $serialPort.Write($a, 0, $a.Length) $serialPort.write($vfdimg, 0, $vfdimg.Length) } $serialPort = New-Object System.IO.Ports.SerialPort "COM1", 38400 $serialPort.Open() initializeVfd clearVfd displayCursorVfd #moveCursorVfd $img = [System.Drawing.Image]::FromFile("D:\mkusunoki\Documents\i-tron128X64.bmp") $vfdimg = New-Object byte[] ($img.Width * $img.Height / 8) for($i = 0; $i -lt $img.Width; $i++) { for($j = 0; $j -lt ($img.Height / 8); $j++) { $bb = 0 if($img.GetPixel($i, $j * 8).G -gt 127) { $bb = 1 } $bb += $bb if($img.GetPixel($i, $j * 8 + 1).G -gt 127) { $bb++ } $bb += $bb if($img.GetPixel($i, $j * 8 + 2).G -gt 127) { $bb++ } $bb += $bb if($img.GetPixel($i, $j * 8 + 3).G -gt 127) { $bb++ } $bb += $bb if($img.GetPixel($i, $j * 8 + 4).G -gt 127) { $bb++ } $bb += $bb if($img.GetPixel($i, $j * 8 + 5).G -gt 127) { $bb++ } $bb += $bb if($img.GetPixel($i, $j * 8 + 6).G -gt 127) { $bb++ } $bb += $bb if($img.GetPixel($i, $j * 8 + 7).G -gt 127) { $bb++ } $vfdimg[$i * ($img.Height / 8) + $j] = $bb } } drawBitmapVfd # $serialPort.Write("HHHHH") $serialPort.Close() $serialPort.Dispose()
ということで、128×64ドットのディスプレイになんか表示しましょうということです。とりあえず、付属のCDROM に入っていたサンプルに i-tron128X64.bmp というビットマップファイルがあったのでこれを表示させてみることにしました。
今回は Windows の PowerShell というやつを使いまして、ビットマップファイルをロードして、シリアルポートに投げるというものです。まだ試行錯誤中のアプリケーションノートからロジック丸パクしたソースは以下に掲載します。あとは、ビットマップオジェクトをいじれば漢字だろうが何だろうが描画出来るので少しだけ前に進んだかな?
何年も前に買って、ジャンクボックス入りしていたものです。経緯は覚えてませんが何故か2個あります。ひとつは 128×32 ドットのパネルでもうひとつは 128×64 ドットです。
で、壊れてないか動作確認ですが、壊れていないようです。かつ小さいほうは漢字フォントが搭載されてたのでこれは何かに使えそうです。
んで、もうひととつの大きいほうは残念ながら漢字フォントが搭載されていない機種だったので文字化けします。表示エリアが広いのでいろいろ使い出はありそうですが、手頃なアプリケーションが思いつきません。
どちらも、シリアルポートにコマンド流せば表示出来るので、どっちかというとプログラミングを楽しむためのオモチャというところでしょうか。
小さいほうなら漢字表示出来るので、webからhttpのテキスト拾ってきて、それをたれ流しするスクリプト実行しとくとか、大きいほうはどうでしょうか、バーグラフかなぁ、.net framework で各CPUの使用率とか拾えたっけ?なら Windows power shell さわったことないのでこれを機会にちょこっと組んでみたいです。
ニキシー管時計のキットです。なので、プリント基板に部品乗っけて半田付けするだけなので、間違えなければ組立られます。なお、このキットは nIxIe-tUbE.com の通販で買ったものです。
点灯確認で電圧かけただけなのでいきなり隣りの管にゴースト出てます。これはショートとかじゃなくて、たまった電荷のせいでボーっと光っているだけなのでちゃんと逃してやるとか光らない程度にバイアスかけるとかで防げます。
とりあえず、途中少しビデオカメラでも撮っているので余裕があればYoutubeかNicovideoにでもアップしたいと思いますが、いかんせケースを全然考えていないので、頓挫するかも知れません。が、とりあえず作業風景の動画はアップしました。
なんだかんだで半田付けは完了いたしました。DVテープ2本ぴったりだったので、上の写真状態までで2時間かかりました。
素材をカット アンド カットしまくって5分以内を目指しましたが編集は難しいです。とりあえずなんとかUPした動画は下のところを見てください。
[nicodo]sm14432258[/nicodo]
アクリル板が無いので、そこらへんにあったフニャフニャのプラ板に仮止めしてみてちょっと様子見てみることに。とりあえず、今の所順調に動いてます。