SUPPORT
h_top1.jpg

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

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

 今回はSWITCH SCIENCE社製バニラシールドと呼ばれるArduino専用の両面スルーホールのユニバーサル基板を使用しました。 こちらにVFDモジュールとスイッチ、ピンヘッダを取り付け、Arduinoへ繋ぐコネクタ部へ配線するだけです。 詳細は下記接続図をご覧ください。

 Arduinoのウェブサイトから統合開発環境をダウンロードして、ソフトウェアを作成します。 今回作成したのは"Hello world 蛍光表示管"と表示しその後押したボタンの色を表示するものです。 使用した蛍光表示管はモジュールと言われる内部にコントローラを持っているもので、 更にFROM内に漢字フォントを持っているため、コマンドだけで日本語や中国語、韓国語まで表示できます。 もちろん英語や各種欧州フォントも搭載しており、グラフィックタイプなので画像表示もできます。 詳細は下記スケッチをご覧ください。

使用部品
  • 蛍光表示管モジュール
    GU140X32F-7903
    CMOSシリアル接続ができ、漢字フォントを搭載したグラフィック表示器。
  • Arduino本体
    Arduino Uno R3
    Arduino本体で、もっとも販売数が多いそうです。
  • バニラシールド
    SSCI-Vanilla-Shield-Black
    Arduino本体と同じサイズのユニバーサル基板。試作・開発に最適です。 この記事で使用しているArduino本体もこちらで販売しています。
  • その他
    赤・青タクトスイッチ、ピンヘッダ・ソケット、半田・配線材料 等
    適切なものをご用意ください。
回路図
cmos_kairozu.gif
日本語が文字化けするときに(Unicode<>Shift-JIS変換ツール)

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

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

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

 

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

li_nomal.gif(116 byte) スケッチのダウンロードはこちら


/*
** VFDシールド プログラム
**
** ノリタケ伊勢電子製 GU-7903シリーズを同期式シリアル接続で
** つないでみました。
**
** GU-7903モジュールのジャンパー設定(J2ショート)が必要です。
**
*/

// ピン配置

int vfd_reset = 8; // VFDコネクタ 6番ピン
int vfd_si = 9; // VFDコネクタ 2番ピン
int vfd_sbusy = 10; // VFDコネクタ 4番ピン
int vfd_clk = 11; // VFDコネクタ 5番ピン
int sw_blue = 12; // 青ボタン
int sw_red = 13; // 赤ボタン

// 作成した関数のプロトタイプ
void vfd_print(unsigned char message[],int L);
void vfd_put(unsigned char unebyte);
void vfd_kanjiOn();
void vfd_crlf();
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_reset, OUTPUT);
   pinMode(vfd_clk, OUTPUT);
   pinMode(vfd_si, OUTPUT);
   pinMode(vfd_sbusy, INPUT);
   pinMode(sw_blue, INPUT_PULLUP);
   pinMode(sw_red, INPUT_PULLUP);

   digitalWrite(vfd_reset, LOW);
   delay(1);
   digitalWrite(vfd_reset, HIGH);

   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_print(unsigned char message[], int L)
{
int i;
for(i=0; i<L; i++)
{
      vfd_put(message[i]);
}
}

void vfd_put(unsigned char onebyte)
{
while( digitalRead(vfd_sbusy) == HIGH){}
shiftOut(vfd_si, vfd_clk, LSBFIRST, onebyte);
}
void vfd_crlf()
{
   shiftOut(vfd_si, vfd_clk, LSBFIRST, 0x0d);
   shiftOut(vfd_si, vfd_clk, LSBFIRST, 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