フォト
2025年4月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30      
無料ブログはココログ

« 豊四季Tiny BASIC for ArduinoのSRAM消費軽減対応 | トップページ | Arduino Unoの内部EEPROMの利用(書込みの高速化)に関するメモ »

2018年2月15日 (木)

アクティブマトリクス蛍光表示管の実験用表示モジュールの試用 (2)

間が空きましたが、
アクティブマトリクス蛍光表示管(CL-VFD) MW25616L 実験用表示モジュールの試用の続きです。

VFD

前回の続きからは方向を変え、
「豊四季タイニーBASICを乗せて制御すれば面白いのでは?」と思い、やってみました。

モジュール的にはArduino互換なので、先日メモリー節約したバージョンに
micro:bit版の機能を一部を結合して実装しました。
micro:bit版の流用で2、3日くらいで実装できました。

下記のサイトにてとりあえず公開いたします。
興味のある方は参照願います。
・豊四季タイニーBASIC for MW25616L実験用表示モジュール
   https://github.com/Tamakichi/ttbasic_MW25616L

リファレンス・マニュアルも付けました。
文法やコマンド等の詳細については、リファレンス・マニュアルを参照して下さい。
 
作成には、豊四季タイニーBASICのオリジナル版を利用しています。
また、VFDの制御には、「VFDふぁん」さんが公開している参考プログラムを利用しています。

さて、このバージョンで、どんなことが出来るかというと、

シリアル接続して、直接コマンドを打って、
VFDにメッセージ文の表示が可能です。全角文字もそのまま入力出来ます。

02

コマンドで簡単に表示できるのは、やはり良いです!
従来(micro:bit版)のコマンドにVDF制御のために、以下の専用コマンドを用意しました。

専用コマンド一覧

VBRIGHT :輝度を0(0%)~255(100%)の範囲で設定します。
  例:VBRIGHT 100

VDISPLAY :表示のオン・オフを設定します。
  例:VDISPLAY OFF

VMSG :指定したメッセージ文を指定速度でスクロール表示します。 
   例:VMSG 10,"日本語のメッセージ表示テスト"

VSCROLL :指定長の空白を指定速度でスクロール表示します。
   例:VSCROLL 256,10

VPUT :表示バイトデータを指定速度で直接指定します。
  例:VPUT MEM,16,10

逆に、メモリ的制約からいくつかのコマンドを削除しています。

プログラム例

コマンドを使ったプログラム作成して、ちょっとした動きのある表示も出来ます。
プログラム作成はシリアル接続のスクリーンエディタにて入力出来ます。

10 'VDF表示サンプル
20 TONE 440,100:TONE 880,100
30 @(0)="熱いぞ!埼玉!"
40 @(1)="豊四季タイニーBASIC"
50 @(2)="VFD対応バージョン"
60 @(3)="只今開発中!"
70 @(4)="ちょっとメモリー的に厳しい.."
80 VBRIGHT 255
90 FOR S=0 TO 4
100 VCLS:VMSG 10,STR$(@(S))
110 FOR I=0 TO 255 STEP 15
120 VBRIGHT 255-I:WAIT 40
130 NEXT I
140 WAIT 500
150 VBRIGHT 255:WAIT 500
160 VSCROLL 256,3
170 WAIT 500
180 NEXT S
190 GOTO 80
I2C接続のRTCモジュールを使って時刻をリアルタイム更新表示するプログラム
(2018/08/06 修正:10行のVBRIGHT 100をVBRIGHT 255の修正)

03

10 VCLS:VBRIGHT 255
20 @(0)="時","分","秒"
30 M=ARRAY+6:POKE M,0
40 R=I2CR($68,M,1,M+1,7)
50 VMSG -1,"現在の時刻は"
60 FOR I=0 TO 2
70 VMSG -1,HEX$(PEEK(M+3-I),2);STR$(@(I))
80 NEXT I
90 VMSG 0,"です"
100 WAIT 1000
110 VSCROLL 256,-1
120 GOTO 40

スライド抵抗器でVFD上に表示しているバーをドット単位で左右に動かすプログラム

05

10 @(0)=$FFFF
20 A=ANA(20)>>2:IF A=0 A=1
30 VPUT ARRAY,2,-1
40 VSCROLL A,0
50 VSCROLL 256,-1
60 WAIT 20
70 GOTO 20

色々と機能てんこ盛りの結果、フラッシュメモリの利用率は99%!
メモリ容量的に、micro:bit版と比べると色々と制約が発生しました。
  ・プログラムサイズは 512バイトまで
  ・内部EEPROMに保存できるプログラムは2本まで

  ・変数はA~Z、配列変数 @(0)@(15)まで
  ・スクリーンエディタの画面サイズは 横48文字x縦8行 固定

他に色々と制約があります。

暫く、動作確認をして修正を行っていきます。
スケッチは一部を修正すれば、Arduino UNOでも利用出ます。

参考サイト
・VFDふぁん - MW25616L 実験用表示モジュールを使ってみる(2)


追記 2017/02/15(夜)

メモリーの制約からフルスクリーンエディタの画面サイズが横48文字x縦8行はとなり、
長い行のプログラムの作成においては、視野の狭い範囲でのスクロール編集となり、
ちょっと使いづらいです。

そこで、フルスクリーンエディタを有効・無効設定するコマンドを追加しました。

Photo

スクリーンエディタ機能を無効にすると、行単位での編集しか出来ないですが、
これはこれで良いかも。

無効にすると、逆スクロール編集、任意の位置にカーソルを移動しての編集、
画面制御を行うコマンド(LOCATE等)が機能しなくなりますが、
スクリーンエディタ機能を臨機応変に切り替えて利用することで、
とりあえずは実用としてしのげそうです。

« 豊四季Tiny BASIC for ArduinoのSRAM消費軽減対応 | トップページ | Arduino Unoの内部EEPROMの利用(書込みの高速化)に関するメモ »

arduino」カテゴリの記事

表示器制御関連」カテゴリの記事

VFDモジュール」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

« 豊四季Tiny BASIC for ArduinoのSRAM消費軽減対応 | トップページ | Arduino Unoの内部EEPROMの利用(書込みの高速化)に関するメモ »