「リモートメッセージディスプレイ」とりあえず完成
bluetoothで液晶を制御して描画できるデバイスです。
当初、液晶描画用コマンド、画面保存コマンドを考えていましたが、都度コマンドを作るのは面倒なので、プリミティブな処理関数とLispライクなスクリプトエンジン載せました。
bluetoothのシリアルポートターミナルでスクリプトコードを書いて実行や電源投入後自動的にSDカードに保存したスクリプトコードをロードして実行できます。
★ランダムに円を書くスクリプトを実行
スクリプトはこんな感じです。
( progn
( setq @c 2 )
( concurrent
( progn ( locate 0 0 ) ( puts ( timestamp ) ) ( if ( keyup ) ( setq @c ( clip ( getnumtp ) 1 30 ) ) ( nop ) ) )
( while 1 ( progna ( circle ( rands 240 ) ( rands 320 ) @c ( rand ) 0 ) ) )
)
)
★BMP選択メニューを表示して、BMP表示するスクリプトを実行
スクリプトはこんな感じになります。
( progn
( setq @b 0 )
( setq @c ( filelistbs "*.BMP" 16 ) )
( while ( progn ( clrscr 0xffff ) ( data 1 ) )
( switch
( menubox "↑" ( load @b ) ( load ( + @b 1 ) ) ( load ( + @b 2 ) ) ( load ( + @b 3 ) ) "↓" )
( if ( > @b 0 ) ( setq @b ( - @b 1 ) ) ( nop ) )
( progn ( loadbmp 0 0 ( load @b ) ) ( while ( == ( touchy ) -1 ) ( nop ) ) )
( progn ( loadbmp 0 0 ( load ( + @b 1 ) ) ) ( while ( == ( touchy ) -1 ) ( nop ) ) )
( progn ( loadbmp 0 0 ( load ( + @b 2 ) ) ) ( while ( == ( touchy ) -1 ) ( nop ) ) )
( progn ( loadbmp 0 0 ( load ( + @b 3 ) ) ) ( while ( == ( touchy ) -1 ) ( nop ) ) )
( if ( < @b ( - @c 4 ) ) ( setq @b ( + @b 1 ) ) ( nop ) )
( nop )
)
)
)
関数は119個あります。ファイル操作、演算、制御、メモリ管理等のPC環境でも実行できる汎用的な関数は84個、PIC24Fのハードウェアを制御する関数は35個。内部で関数コードを128個としているので、もうすぐ枯渇します。