AccessViolation Exception

仕事でもはんだづけ、家でもはんだづけ

AVRで「LS027B4DH01」を制御

f:id:kamiyaowl:20150616214913j:plain

今回は秋月電子通商で販売しているメモリ液晶をATMEGA88p-20AUで制御します。

akizukidenshi.com

回路に関して

  • 大体はデータシートを読めばわかります。

  • ピンアサインは右側が1ピン(SCLK)です(ハマった

  • VCOMは焼きつき防止?等の反転入力

制御しなくても表示するだけなら差し支えないのですが、可能であれば適当な周期で反転させてあげましょう。

制御に関して

  • 独自3線シリアルと書いてありますが、まぁSPIです

チップセレクトがHighで有効なだけでほかは相違ないです。クロック速度はMax2MHz

マイコンの機能に頼りましょう

AVRの実装に関して

久しぶりに使ったのでメモ

  • SPIを使うには MOSI,SCK,SSを出力に設定する必要がある

  • SPCRレジスタのDORDでLSB Firstが設定可能

  • PROGMEMに格納したデータを読むときはpgm_read_****を使う必要あり

公開

  • イメージデータ変換、雑すぎるものですがどうせですし公開しておきます

f:id:kamiyaowl:20150619235356p:plain

kamiyaowl/ImageToHex · GitHub

  • ソース貼っておきます

ATMEGA328p LS027B4DH01

Excelドット絵入門しませんでした

Excelだって縦横幅を同じにすればセルの色の塗り分けでドット絵が書けるっ

そう思っていたものの面倒くさくなったので自動化しました。

f:id:kamiyaowl:20150419162842p:plain

セルの色付けで絵を書いているのでもちろん

f:id:kamiyaowl:20150419162909p:plain

色を変えることもなんでもできます。

github.com

Excelブックの背後でc#を走らせられてかつVisualStudioでも開発ができる。ちょっとした用途に使えるかもしれない小ネタでした。

scalaでLSystem入門

植物成長シミュレーションで使われているという*1LSystemについて、実際に描画できるのかscalaでやってみます。

実は一年前に

ScalaでL-Systemをやってみた - AccessViolation Exception

やっているのですが、どうにも気に入らない部分が多いのできっちり作りなおしました。

kamiyaowl/lsystem · GitHub

f:id:kamiyaowl:20150311153125p:plainf:id:kamiyaowl:20150311153138p:plainf:id:kamiyaowl:20150311153139p:plainf:id:kamiyaowl:20150311153142p:plainf:id:kamiyaowl:20150311153146p:plain

まともになったこと

もともと以前のやつがscala入門がてら書いていて今見るとひどいですね...そもそもこれpush/popある図形かけるのだろうか...

  • mutableな変数を抹消したかった

  • LSystemの構文定義をかっこ良く書きたかった

val fractalPlant = new Grammar("X",List('X' -> "F-[[X]+X]+F[+FX]-X",'F' -> "FF")) with DrawParameter {
      override val options: List[DrawOption] = List('+' angle 25,'-' angle -25, '[' push,']' pop,'F' drawForward)
    }

'X' -> "F-[[X]+X]+F[+FX]-X" は(Char,Double)のimplicit conversionでRule('X',"F-[[X]+X]+F[+FX]-X")になったり、'+' angle 25とかも同様にして暗黙の変換ばっさばっさつかってます。これ自分ではいいんですけど他のライブラリとか使おうとするときに大変なんですよねぇ...

*1:Blenderの木生成プラグイン等に利用されてるらしい