SUPPORT
h_top1.jpg

GU-3000シリーズ(RS232 I/F対応モジュール)に表示させる

GU-3000シリーズ(RS232 I/F対応モジュール)に表示させる

 今回はGU256X64C-3900Bを使用します。 Arduinoに比べて大きめの表示器を使用したため別途配線しました。インターフェースはRS232を使用したため、レベル変換用にRS232トランシーバを間に入れてあります。 詳細は下記接続図をご覧ください。

 Arduinoのウェブサイトから統合開発環境をダウンロードして、ソフトウェアを作成します。 今回作成したのは"Hello world" "Hello world" "蛍光表示管"と3行に表示し、その後押したボタンの色を表示するものです。 使用した蛍光表示管はモジュールと言われる内部にコントローラを持っているもので、 更にFROM内に漢字フォントを持っているため、コマンドだけで中国語や韓国語、32ドットの日本語まで表示できます。 その他にプログラムマクロ機能など便利な機能が満載ですが、それは別途ご紹介します。 詳細は下記スケッチをご覧ください。

使用部品
  • 蛍光表示管モジュール
    GU256X64C-3900B
    RS232シリアル接続ができ、漢字フォントを搭載したグラフィック表示器。
  • Arduino本体
    Arduino Uno R3
    Arduino本体で、もっとも販売数が多いそうです。
  • RS232トランシーバ
    DS14C232CM
    同機能のICが多くありますが、どれでも使用可能です。今回ではこちらを使用しています。
  • セラミックコンデンサ
    上記RS232トランシーバに使用します。今回は上記ICに合わせて1.0μFを4つ使用しました。使用するICに合わせて用意してください。
  • 基板
    ユニバーサル基板でも結構ですが、今回は専用基板を作成しました。
    自作される場合は、EagleのCADデータを使用ください。
     EagleのCADデータをダウンロード
  • その他
    赤・青タクトスイッチ、ピンヘッダ・ソケット、半田・配線材料 等
    適切なものをご用意ください。表示器への接続はXHコネクタ XHP-7とコンタクトが必要です。
回路図
rs232_kairozu.gif
日本語が文字化けするときに(Unicode<>Shift-JIS変換ツール)

 PCの多くはUnicodeで動作していますが、VFDモジュールのフォントテーブルはShift-JISになっています。 文字コードが違うため、PCからモジュールに文字を書き込むと、文字化けすることがあります。

 そこで、クリップボードにコピーされているUnicodeのテキストを、Shift-JISの16進数列表記に変換するツールを用意しました。 ダウンロードしてご活用ください。
ツールのダウンロードはこちら

 また、Arduino上でShift-JISに変換するサンプルスケッチもございます。
スケッチのダウンロードはこちら

 

サンプルスケッチ(サンプルプログラム)

「スケッチ」とは、本開発環境でのプログラムを指します。下記はVFDモジュールを表示させるためのサンプルスケッチです。

 スケッチのダウンロードはこちら


/*
** VFDシールド スケッチ
**
** ノリタケ伊勢電子製 GU-3900シリーズモジュールを
** RS-232Cシリアル接続でつないでみました。
** 2012/8/23
*/
// ピン配置
//int vfd_RxD = 0;
//int vfd_TxD = 1;
int vfd_RTS = 2;
int vfd_CTS = 3;
int sw_blue = 12; // 青ボタン
int sw_red = 13; // 赤ボタン

// 作成した関数のプロトタイプ

void vfd_put(unsigned char onebyte);
void vfd_print(unsigned char message[], int L);
void vfd_crlf();
void vfd_kanjiOn();
void vfd_setCursor(int X, int Y);

// the setup routine runs once when you press reset:
// リセット後に1回だけ実行されるプログラム
void setup() {
    // initialize the digital pins
    pinMode(vfd_RTS, OUTPUT);
    pinMode(vfd_CTS, INPUT);
    pinMode(sw_blue, INPUT_PULLUP);
    pinMode(sw_red, INPUT_PULLUP);

    Serial.begin(38400);
    Serial.print("Hello world"); // 少しならそのまま書き込みできます。
    vfd_crlf(); //改行
    unsigned char message[12] = "Hello World";
    vfd_print(message, sizeof(message)-1);
    vfd_crlf(); //改行
    vfd_crlf(); //改行
    vfd_kanjiOn();
    unsigned char kanji_code[ 10 ] =
    { /*** 蛍 光 表 示 管 S-JIS code *****/
      0x8c, 0x75, 0x8c, 0xf5, 0x95, 0x5c, 0x8e, 0xa6, 0x8a, 0xc7, };
      vfd_print(kanji_code, 10);
}

// the loop routine runs over and over again forever:
// 繰り返し実行されるプログラム
void loop() {
    if(digitalRead(sw_red) == LOW) //赤ボタン
      { vfd_setCursor(100,1); // カーソル移動
      vfd_put(0x90); // "赤"
      vfd_put(0xd4);
      }
    if(digitalRead(sw_blue) == LOW) //青ボタン
      { vfd_setCursor(100,1); // カーソル移動
      vfd_put(0x90); // "青"
      vfd_put(0xc2);
      }
}
void vfd_put(unsigned char onebyte)
{
    while( digitalRead(vfd_CTS) == HIGH){}
    Serial.write( onebyte);
}
void vfd_print(unsigned char message[], int L)
{
int i;
for(i=0; i<L; i++)
    {
      vfd_put(message[i]);
    }
}
void vfd_crlf()
{
    vfd_put(0x0d);
    vfd_put(0x0a);
}
void vfd_kanjiOn()
{
    unsigned char data[15];
    data[0]=0x1f;
    data[1]=0x28;
    data[2]=0x67;
    data[3]=0x01;
    data[4]=0x02;
    data[5]=0x1f;
    data[6]=0x28;
    data[7]=0x67;
    data[8]=0x02;
    data[9]=0x01;
    data[10]=0x1f;
    data[11]=0x28;
    data[12]=0x67;
    data[13]=0x0f;
    data[14]=0x00;
    vfd_print(data,15);
}
void vfd_setCursor(int X, int Y)
{
    unsigned char data[6];
    data[0] = 0x1f;
    data[1] = 0x24;
    data[2] = X % 256;
    data[3] = X / 256;
    data[4] = Y % 256;
    data[5] = Y / 256;
    vfd_print(data,6);
}

 


当ウェブサイトでは、お客さまによりよいサービスをご提供するため、Cookieを使用しています。
Cookieを無効にする方法を含め、当社のCookieの使用については「個人情報保護方針」をお読みください。

OK