蛍光表示管(VFD)モジュール(CU20029-T3030C)
UNO R4 WiFi

概要

ノリタケ伊勢株式会社のCU20029-T303Cという20文字2行の蛍光表示管(VFD)モジュールを使った実験です。

Arduino UNO R4 WiFiから、日本語(UTF-8)を表示できるようにしてみました。下の写真は、RSSフィードを取得して、その内容を表示させてみたものです。とてもはっきりと表示されています。

データシート

データシートというよりは、コマンドの説明からの推測です。

基本的には、シリアル通信で表示したい文字列を送信すれば、その文字列が表示されます。また、日本語などの表示にも対応しています。

表示可能なコード

このモジュールは、英数字に加え、半角カタカナや漢字(日本語、簡体字、繁体字)、ハングル、を表示することができます。

漢字等の文字コードは以下の通りです。

種別 文字コード
日本語 Shift_JIS
簡体字 GB 2312-80
繁体字 Big5
ハングル KSC-5601-87

ピンの役割

各ピンの役割を以下に示します。

ピン番号 信号 説明
1 VCC 電源入力(DV5V)
2 VCC 電源入力(DV5V)
3 #RESET 「L」でモジュールリセット
4 RXD データ入力(UART)
5 BUSY 「L」のときデータ入力可
6 GND グラウンド
7 GND グラウンド

ディップスイッチの設定で、文字セットや通信速度、動作モードを設定します。

スイッチ番号 ON OFF
1 日本文字セット 欧州文字セット
4 テストモード 通常動作

ディップスイッチの2番と3番は、ボーレートの選択に使います。

SW2 SW3 ボーレート
OFF OFF 9600bps
ON OFF 38400bps
OFF ON 19200bps
ON ON 4800bps

今回は、日本語k文字セット、384000bps、通常動作を選択したので、以下のように設定しました。

スイッチ番号 ON/OFF
1 ON
2 ON
3 OFF
4 OFF

作成したライブラリも、上記の状態で動作させています。

モード

漢字表示に関するモードが存在します。以下の説明は、推測が入ります。

モード 意味
互換モード 半角文字のみ表示
漢字モード 半角文字以外も表示
2バイト文字無効 漢字モード時
2バイト文字有効 漢字モード時
日本語漢字表示モード 2バイト文字有効時
ハングル表示モード 2バイト文字有効時
簡体字表示モード 2バイト文字有効時
繁体字表示モード 2バイト文字有効時

図にすると以下のようになります。

stateDiagram-v2 互換モード --> 漢字モード 漢字モード --> 互換モード state 漢字モード { 2バイト文字無効 --> 2バイト文字有効 2バイト文字有効 --> 2バイト文字無効 } state 2バイト文字有効 { 日本語漢字表示モード ハングル表示モード 簡体字表示モード 繁体字表示モード }

Arduinoと蛍光表示管(VFD)モジュールとの接続

以下のように接続しました。

Arduino UNO R4 WiFi CU20029-T3030C
5V VCC
GND GND
1 RXD
8 #RESET
9 BUSY

VFDとの接続に利用するコネクタはPHコネクタです。コードは自分で作成しました。

ソースコード

以下にソースコードを配置しました。

作成したライブラリの仕様

Arduinoから利用するために、以下のようなライブラリを作成しました。

  • CU20029-T303C制御用ライブラリ
  • 文字コード変換ライブラリ
    • UTF-8→UTF-16
    • UTF-16→Shift_JIS

動作確認はArduino UNO R4 WiFiで行いました。他の機種での検証は行っていません。UTF-16をShift_JISに変換するのに変換テーブルを用いています。このテーブルが比較的大きいので、他の機種では動作しない可能性があります。PROGMEMを使えばいいのですが。

CU20029-T303C制御用ライブラリ

以下のAPIを実装しました。LiquidCrystalライブラリに似せて作りました。

garretlab_CU20029T303C

名称

garretlab_CU20029T303C()

説明

garretlab_CU20029T303Cのコンストラクタ。

書式

garretlab_CU20029T303C(HardwareSerial *serial, int resetPin, int busyPin);

引数

serialシリアル通信を行うオブジェクト。
resetPinリセットピン。
busyPinビジーピン。

戻り値

garretlab_CU20029T303Cオブジェクト。

begin()

名称

garretlab_CU20029T303C::begin()

説明

VFDを開始する。

書式

void garretlab_CU20029T303C::begin(int baudRate);

引数

baudRateシリアル通信のボーレート。

戻り値

なし。

clear()

名称

garretlab_CU20029T303C::clear()

説明

VFDの表示を消去しカーソルを1行1桁目に移動する。

書式

void garretlab_CU20029T303C::clear();

引数

なし

戻り値

なし。

home()

名称

garretlab_CU20029T303C::home()

説明

カーソルを1行1桁目に移動する。

書式

void garretlab_CU20029T303C::home();

引数

なし

戻り値

なし。

setCursor()

名称

garretlab_CU20029T303C::setCursor()

説明

カーソル位置を設定する。

書式

void garretlab_CU20029T303C::setCursor(int column, int row);

引数

column
row

戻り値

なし。

write()

名称

garretlab_CU20029T303C::write()

説明

VFDに文字を出力する。

書式

size_t garretlab_CU20029T303C::write(uint8_t c); size_t garretlab_CU20029T303C::write(uint16_t s);

引数

c出力する文字
s出力する文字

戻り値

書き込んだ文字数。

print()

名称

garretlab_CU20029T303C::print()

説明

VFDに文字を出力する。

表示モードが漢字モード、かつ、2バイトモードがtrue、かつ、スクリプトがjapaneseの場合は、UTF-8をShift_JISに変換して表示する。

書式

size_t garretlab_CU20029T303C::print(const char s[]);

引数

s出力する文字

戻り値

書き込んだ文字数。

cursor()

名称

garretlab_CU20029T303C::cursor()

説明

カーソルを表示する。

表示モードが漢字モード、かつ、2バイトモードがtrue、かつ、スクリプトがjapaneseの場合は、UTF-8をShift_JISに変換し手表示する。

書式

void garretlab_CU20029T303C::cursor(cursorShape_t type);

引数

typeカーソルの形状。

typeは以下の通り。

カーソルの形状
garretlab_CU20029T303C::underline 下線(デフォルト)
garretlab_CU20029T303C::block ブロック
garretlab_CU20029T303C::invert 反転タイプ

戻り値

書き込んだ文字数。

noCursor()

名称

garretlab_CU20029T303C::noCursor()

説明

カーソルを表示しない。

書式

void garretlab_CU20029T303C::noCursor();

引数

なし

戻り値

なし

blink()

名称

garretlab_CU20029T303C::blink()

説明

カーソルを点滅させる。

書式

void garretlab_CU20029T303C::blink();

引数

なし

戻り値

なし

display()

名称

garretlab_CU20029T303C::display()

説明

ディスプレイを点灯させる。

書式

void garretlab_CU20029T303C::display();

引数

なし

戻り値

なし

autoscroll()

名称

garretlab_CU20029T303C::autoscroll()

説明

右下端まで表示したら表示を左にずらす。

書式

void garretlab_CU20029T303C::autoscroll();

引数

なし

戻り値

なし

noDisplay()

名称

garretlab_CU20029T303C::noDisplay()

説明

ディスプレイを消灯させる。

書式

void garretlab_CU20029T303C::noDisplay();

引数

なし

戻り値

なし

noAutoscroll()

名称

garretlab_CU20029T303C::noAutoscroll()

説明

文字を右下端まで表示したら、左上端に移動する。

書式

void garretlab_CU20029T303C::noAutoscroll();

引数

なし

戻り値

なし

createChar()

名称

garretlab_CU20029T303C::createChar()

説明

ユーザー定義文字を作成する。

!
試験していません。

書式

void garretlab_CU20029T303C::createChar(uint8_t location, uint8_t charmap[]);

引数

location文字番号。0x20-0xff。
charmap7バイトのビットマップデータ。データは下位5ビットが有効。

戻り値

なし

createChar15x16()

名称

garretlab_CU20029T303C::createChar15x16()

説明

ユーザー定義文字を作成する。

!
試験していません。

書式

void garretlab_CU20029T303C::createChar15x16(uint8_t location, uint8_t charmap[]);

引数

location文字番号。0x20-0xff。
charmap32バイトのビットマップデータ。データは下位5ビットが有効。

戻り値

なし

hardReset()

名称

garretlab_CU20029T303C::hardReset()

説明

ディスプレイをソフトリセットする。

書式

void garretlab_CU20029T303C::hardReset();

引数

なし

戻り値

なし

setBrightness()

名称

garretlab_CU20029T303C::setBrightness()

説明

ディスプレイの輝度を設定する。

書式

void garretlab_CU20029T303C::setBrightness(uint8_t setBrightness);

引数

brightness輝度。設定可能な数値は、100、75、50、25。

戻り値

なし

softReset()

名称

garretlab_CU20029T303C::softReset()

説明

ディスプレイをソフトリセットする。

書式

void garretlab_CU20029T303C::softReset();

引数

なし

戻り値

なし

setCompatibleMode()

名称

garretlab_CU20029T303C::setCompatibleMode()

説明

互換モードにする。

書式

void garretlab_CU20029T303C::setCompatibleMode();

引数

なし

戻り値

なし

setKanjiMode()

名称

garretlab_CU20029T303C::setKanjiMode()

説明

漢字モードにする。

書式

void garretlab_CU20029T303C::setKanjiMode();

引数

なし

戻り値

なし

disable2ByteMode()

名称

garretlab_CU20029T303C::disable2ByteMode()

説明

2バイト文字を無効にする。

書式

void garretlab_CU20029T303C::disable2ByteMode();

引数

なし

戻り値

なし

enable2ByteMode()

名称

garretlab_CU20029T303C::enable2ByteMode()

説明

2バイト文字を有効にする。

書式

void garretlab_CU20029T303C::enable2ByteMode();

引数

なし

戻り値

なし

displayJapanese()

名称

garretlab_CU20029T303C::displayJapanese()

説明

日本語の漢字を表示する。

書式

void garretlab_CU20029T303C::displayJapanese();

引数

なし

戻り値

なし

displayHangeul()

名称

garretlab_CU20029T303C::displayHangeul()

説明

ハングルを表示する。

書式

void garretlab_CU20029T303C::displayHangeul();

引数

なし

戻り値

なし

displaySimplifiedChinese()

名称

garretlab_CU20029T303C::displaySimplifiedChinese()

説明

中国語の漢字(簡体字)を表示する。

書式

void garretlab_CU20029T303C::displaySimplifiedChinese();

引数

なし

戻り値

なし

displayTraditionalChinese()

名称

garretlab_CU20029T303C::displayTraditionalChinese()

説明

中国語の漢字(繁体字)を表示する。

書式

void garretlab_CU20029T303C::displayTraditionalChinese();

引数

なし

戻り値

なし

displayAsciiThin()

名称

garretlab_CU20029T303C::displayAsciiThin()

説明

漢字モード時のASCII文字を細字表示する。

書式

void garretlab_CU20029T303C::displayAsciiThin();

引数

なし

戻り値

なし

displayAsciiThick()

名称

garretlab_CU20029T303C::displayAsciiThick()

説明

漢字モード時のASCII文字を太字表示する。

書式

void garretlab_CU20029T303C::displayAsciiThick();

引数

なし

戻り値

なし

文字コード変換ライブラリ

以下のAPIを実装しました。

utf8ToUtf16()

名称

utf8ToUtf16()

説明

UTF8コードをUTF16コードに変換する。

書式

int utf8ToUtf16(const char *utf8, uint16_t *utf16);

引数

utf8UTF8文字コード
utf16UTF16文字コード

戻り値

変換したUTF8文字コードのバイト数。エラーの場合は0。

注意

4バイトの文字コードの場合は、0x25a1(□)を返す。

utf16ToSjis()

名称

utf16ToSjis()

説明

UTF16コードをShift_JISコードに変換する。

書式

int utf16ToSjis(uint16_t utf16, uint16_t *sjis);

引数

utf16UTF16文字コード
sjisShift_JIS文字コード

戻り値

変換に成功したら1、失敗したら0。

バージョン

Hardware:Arduino UNO R4 WiFi
Software:Arduino IDE 2.3.6/Arduino UNO R4 Boards 1.4.1

最終更新日

June 17, 2025

inserted by FC2 system