概要
ポーランドのALFAZETAという会社が製造・販売しているXY5というフリップドットディスプレイをArduinoから制御するための実験です。
以前、Arduino Project Hubで紹介されていたFlip-Dot-Clockで利用されているデバイスが面白そうだったので調べていたところ、作者の方がこちらのページに入手方法等を書かれていたので、参考にして入手しました。
フリップドットディスプレイを使ったデジタル時計はこちら。
データシート
概要
フリップドットディスプレイは、裏と表で色の違う小さいディスクを電磁石の力を利用して回転させ、情報を表示させます。いろいろなサイズのものがありますが、今回私が入手したディスプレイは、縦7ドット、横28ドットのディスプレイです。それでも、横幅は30cm弱あります。ディスクが回転する際、カシャカシャと音を立てます。また、ディスクそのものは光りません。
デモモードも用意されていて、その場合は、電源を接続するだけで、ディスプレイにいろいろ表示されます。
電圧と電流、制御方法は以下の通りです。
項目 | 内容 |
---|---|
電源電圧 | 24V |
最大消費電流(ただしサイズは14x28のもの) | 680mA |
制御方法 | RS-485 |
RS-485を利用して、制御します。Arduinoでは、RS-485を扱うことはできないので、LTC485CN8というRS-485トランシーバを利用しました。
インタフェース
コマンド
以下の順序で、RS-485を通じて、コマンドを送信すると、ディスクが回転し、情報が表示されます。ディスプレイからは何も送信されません。
データ | 名前 | 説明 |
---|---|---|
0x80 | ヘッダ | 制御開始 |
0x83 | コマンド | 表示コマンド |
アドレス | アドレス | ディスプレイのアドレス。アドレスはDIPスイッチを使って設定します。 |
データ | データ | 28バイト分のデータ。各データは、0x00から0x7f |
0x8f | エンドバイト | 制御終了。 |
実験
XY5とLTC485CN8、Arduinoとの接続
XY5とLTC485CN8、Arduinoは以下のように接続しました。
XY5 | LTC485CN8のピン番号 | Arduinoのピン番号 |
---|---|---|
VCC(24V) | - | - |
GND | - | - |
- | 8(VCC) | 5V |
- | 5(GND) | GND |
+485 | 6(A) | - |
-485 | 7(B) | - |
- | 4(DI) | 1(TX) |
- | 2(RE) | 5V |
- | 3(DE) | 5V |
XY5からデータを受信する必要がないので、Arduinoの0番とLTC485CN8の1番は使用せず、LTC485CNの2番(RE)と3番(DE)は5V固定にしています。
Arduinoプログラミング
ディスプレイよりは大きめのデータ用のバッファを作成し、ディスプレイのサイズのウインドウを切り出して表示するようにしてみました。また、任意のドットの表示・非表示、文字の表示をできるようにしました。フォントは、7x4のサイズで作成しました。とても小さいフォントなので、うまく読めない文字もあります。英小文字はあきらめました。
全体としては、LiquidCrystal ライブラリっぽくしてみました。
実行の様子
スクロールする前の様子です。HELLO WORLDと表示していますが、WORLDの部分はまだ見えていません。
スケッチ
「HELLO WORLD」と表示し、左にスクロールするプログラムです。いつものようにエラー処理はほとんど入っていません。
GitHubにコードを置いてあります。
バージョン
Hardware: | Arduino UNO R3 |
Software: | Arduino IDE 1.8.1 |
最終更新日
July 14, 2024