AVRで「LS027B4DH01」を制御
今回は秋月電子通商で販売しているメモリ液晶をATMEGA88p-20AUで制御します。
回路に関して
大体はデータシートを読めばわかります。
ピンアサインは右側が1ピン(SCLK)です(ハマった
VCOMは焼きつき防止?等の反転入力
制御しなくても表示するだけなら差し支えないのですが、可能であれば適当な周期で反転させてあげましょう。
制御に関して
- 独自3線シリアルと書いてありますが、まぁSPIです
チップセレクトがHighで有効なだけでほかは相違ないです。クロック速度はMax2MHz
- データ形式がLSB First
マイコンの機能に頼りましょう
AVRの実装に関して
久しぶりに使ったのでメモ
SPIを使うには MOSI,SCK,SSを出力に設定する必要がある
SPCRレジスタのDORDでLSB Firstが設定可能
PROGMEMに格納したデータを読むときは
pgm_read_****
を使う必要あり
公開
- イメージデータ変換、雑すぎるものですがどうせですし公開しておきます
- ソース貼っておきます
Excelドット絵入門しませんでした
scalaでLSystem入門
植物成長シミュレーションで使われているという*1LSystemについて、実際に描画できるのかscalaでやってみます。
実は一年前に
ScalaでL-Systemをやってみた - AccessViolation Exception
やっているのですが、どうにも気に入らない部分が多いのできっちり作りなおしました。
まともになったこと
もともと以前のやつが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
とかも同様にして暗黙の変換ばっさばっさつかってます。これ自分ではいいんですけど他のライブラリとか使おうとするときに大変なんですよねぇ...