前回購入したI2CLCDをarduinoで動作確認したが、今度は別のデバイスで動かしてみる。いつもならPICマイコンで動かすのだが、それはもう色々とやっている。
なので、今回は最近触り始めたPICAXEを使って表示させることにした。8ピンのPICAXEでもI2Cが使えるので、08M2を使ってみる。
ブレッドボードで検証。I2Cの動作がどんな状態なのか確認したかったので、
以前購入したロジックアナライザを使ってデバッグしながら作業を進めていった。
BASICの資料を読んだり、ST7032のアクセス方法を確認したりと、結局は2日程時間を費やしたが、表示に成功した。
表示はこんな感じ。特に何をするわけでもなく、数字0~255を回して、それに対応するキャラクターを並べて表示するプログラムだが、まさにHello worldにふさわしい動作。
BASICコマンドはProgramming EditorのHelpからPDFを開くことが出来る。色々特別なコマンドやら、変数の扱いがb0、b1などと固定された変数を使うことや、計算順序が一般的な優先順位と違い、左から右へ行われるなど、色々な制約が多い。しかし、一回表示出来てしまえば次への応用が利くというものだ。
LCDの待ち制御は、ロジアナで確認したら、命令の間で0.4ms弱あったので、大抵の待ち時間である0.03msより十分だったので一部を除いて、pause命令は外した。
※商用問わず自由に使用可能(ストロベリーリナックス・秋月I2C LCD同時テスト可能)
という訳で、ソースコードは上のテキストボックスからコピーアンドペーストで利用可能。今回は秋月のI2C超小型のLCDを動かしたが、ST7032系が搭載されたLCDなら、そのまま利用できる。
ソースコードは全然最適化されてないので宜しく (・ω<)
気がついている人も多いと思いますが、PICAXEはPWM制御が簡単にできますね。
VRの電圧をADCで読んで、USB扇風機の回転数制御・(白色)LEDの調光というのが簡単にできます。(ADCの値は3回とか読んで平均化した方がVRのガリ、ノイズの点から安全。調光の場合はVRを(擬似)Aカーブにする。勿論、FETかTRを介して駆動。とかはありますが。)
私みたいな"基本的にはハード屋さん"がPWMをやりたいときにはとても便利です。