2011年8月23日火曜日

ポータブルシステム実装5-Arduino Pro Mini

新しいArduino Pro Mini 328 - 3.3V/8MHzが届いたので、Arduino Pro MiniをBufflaloIIに接続するため、仮組によりLCD16×2とロータリーエンコーダを接続し、Arduinoの基本的な使用方法を確認し、プログラムの修正を行いました。

ひとつは、オリジナルではLCDとして20×4のLCDを使用していますが、残念ながら大きくて積めませんので、16×2のLCDで表示できるようにプログラムを修正しました。



Opening画面 左:LCD20×2 右:LCD16×2

通常画面 左:LCD20×2 右:LCD16×2 


 表示内容

主な変更点
  1. オープニング表示を16×2領域に入るように変更
  2. 表示領域が半分以下になるため、ボリューム表示をオリジナルフォントによる1文字9キャラクタ表示領域使用から普通の1キャラクタ表示に変更。
  3. 表示項目部を省略し、パラメータのみに
  4. サンプルレート表示を6ケタから下位2ケタを省略した4ケタ表示に
上記により、なんとか16×2内に押し込みました。


変更時の変更項目選択表示
ボタンを押すたび"→"表示が黄色の部分を順次移動する



 設定変更時は、上手の黄色の部分をボタンを押すたび"→"カーソルが移動し、ロータリーエンコーダを回すことによりパラメータを変更できるようになっています。
今回その"→"を表示するエリアがないため、パラメータ表示の先頭文字、あるいは"・"キャラクタ表示の部分で"→"を表示させるようにしました。
そのままでは、パラメータ変更操作後、元の表示が消えてしまったため、再度表示できるように変更しました。


もう一つは、オリジナルはArduino UNOやDueminaloveなどの5V電源のマイクロコントローラを積んでいますが、今回、なるべく小さく、省電力であることを選定基準としてPro Mini 328 - 3.3V/8MHzを選択しました。
 Bufflalo IIとのI2Cの接続は3.3V同士でよいのですが、ロータリーエンコーダは、少し探した限りは5V電源のデバイス、5V電源での組み込み例ばかりで3.3V電源で動作させている例が見つけられません。
 ひとつだけ見つけましたが、回路図が不正確そうです。
 どうしようかと悩んでいましたが、twitterで、5V用のロータリーエンコーダでも3.3Vで動作させることができるとのアドバイスをもらい、実際試してみると問題なく動作するようです。
 
 今回ロータリーエンコーダはパナソニックのEVE-VCGJL016Bを使用しました。
 押しボタンスイッチ機能が付いているため、パラメータ変更時、押して設定項目を選び回してパラメータを選択するが、1つのスイッチでできるため、操作しやすく、またパネル装着部品が減らせて便利です。



 Arduino Pro Mini 328 と LCD16×2 、ロータリーエンコーダ


動作中のLCD表示(バックライト点灯させていないので見にくい)


ざっと見た限りは、LCD表示もボリューム操作も動いているようです。

サンプリング周波数が1763(176.3kHz)になっていますが、これは、FPGAで50MHzCXOから22.5792MHzが作れず、近似の22.57143MHzを作っているためです。これは仮実装です。

続いて、ArduinoでPLLクロックドライバCDCE925の設定ができるようにし、クロック系の動作確認を進める予定。

2 件のコメント:

  1. 当方、ロータリーエンコーダーの誤動作がひどく、
    固まったりボリューム数dB飛んだりが頻発したので
    Hifiduinoに書いてある様にローターリーエンコーダー端子にコンデンサを付けました。

    返信削除
  2. AKさん
     今のところ特に変な挙動はしていないように思います。3.3Vで動作させたほうが安定するのかもしれませんね。

    返信削除