因みにArduinoIDEは保存名にせよプログラム中にせよ日本語アレルギーが有る様で一筋縄でカタカナは表示されませんでした
1. 接続
2. 普通にカタカナ出力・・・表示はエラー?
下記プログラムの様に普通にカタカナを出力した結果が図2です。
※ArduinoIDE 1.6.12を使用して文字化けしましたが、ArduinoIDEのバージョンによっては半角カナの文字コードがUTF-8から拡張ASCIIコードに変更され、文字化けしないものも有るようです。
//NOBのArduino日記!_AE-AQM1602Aの使い方_カタカナの表示1(20170323) #include <Wire.h>//関数読み込み String LCD_STRING; char s[16]; double SET; //変数の宣言 //コマンド書き込み void writeCommand(byte command) { Wire.beginTransmission(0x3E); Wire.write(0x00); Wire.write(command); Wire.endTransmission(); delay(10); } //データ書き込み void writeData(byte data) { Wire.beginTransmission(0x3E); Wire.write(0x40); Wire.write(data); Wire.endTransmission(); delay(1); } //LCDの1行目にデータ書き込み void LCD_DISP_16_1(void) { writeCommand(0x80);//DDRAMアドレスを1行目先頭にセット for (int i = 0; i < 16; i++) { writeData(LCD_STRING[i]); } } //LCDの2行目にデータ書き込み void LCD_DISP_16_2(void) { writeCommand(0x40 + 0x80); //DDRAMアドレスを2行目先頭にセット for (int i = 0; i < 16; i++) { writeData(LCD_STRING[i]); } } //液晶初期化 void setup() { Wire.begin(); delay(100); writeCommand(0x38); delay(20); writeCommand(0x39); delay(20); writeCommand(0x14); delay(20); writeCommand(0x7A); delay(20); //3.3V=0x73, 5V=0x7A writeCommand(0x54); delay(20); //3.3V=0x56, 5V=0x54 writeCommand(0x6C); delay(20); writeCommand(0x38); delay(20); writeCommand(0x01); delay(20); writeCommand(0x0C); delay(20); } //LCD上段に「アイウエオ」を書込む void loop() { LCD_STRING = "アイウエオ"; LCD_DISP_16_1(); }//「φスアφスイφスウφスエφスオ」?と表示
図1:プログラム例
図2:プログラム実行結果・・・!?
3. カタカナ表示!
//NOBのArduino日記!_AE-AQM1602Aの使い方_カタカナの表示2(20170323) #include <Wire.h>//関数読み込み String LCD_STRING; char s[16]; double SET; //変数の宣言 //コマンド書き込み void writeCommand(byte command) { Wire.beginTransmission(0x3E); Wire.write(0x00); Wire.write(command); Wire.endTransmission(); delay(10); } //データ書き込み void writeData(byte data) { Wire.beginTransmission(0x3E); Wire.write(0x40); Wire.write(data); Wire.endTransmission(); delay(1); } //LCDの1行目にデータ書き込み void LCD_DISP_16_1(void) { writeCommand(0x80);//DDRAMアドレスを1行目先頭にセット for (int i = 0; i < 16; i++) { writeData(LCD_STRING[i]); } } //LCDの2行目にデータ書き込み void LCD_DISP_16_2(void) { writeCommand(0x40 + 0x80); //DDRAMアドレスを2行目先頭にセット for (int i = 0; i < 16; i++) { writeData(LCD_STRING[i]); } } //液晶初期化 void setup() { Wire.begin(); delay(100); writeCommand(0x38); delay(20); writeCommand(0x39); delay(20); writeCommand(0x14); delay(20); writeCommand(0x7A); delay(20); //3.3V=0x73, 5V=0x7A writeCommand(0x54); delay(20); //3.3V=0x56, 5V=0x54 writeCommand(0x6C); delay(20); writeCommand(0x38); delay(20); writeCommand(0x01); delay(20); writeCommand(0x0C); delay(20); } //下段に「アイウエオ」を書込む void loop() { writeCommand(0xC0);//DDRAMアドレスをLCD下段先頭にセット for (int i = 0; i < 5; i++) { writeData(0xB1 + i); //「アイウエオ」と表示! } }
図1:プログラム例
図3:プログラム実行結果 成功!
4. まとめ
一応カタカナをLCDに表示出来ましたが、一文字づつCGRAMアドレスを調べなければならないので若干めんどくさいです
私の使っているArduinoIDEのバージョンは「1.6.12」ですが、ひょっとしたら最新のバージョンは対応しているかもしれないという事で、久しぶりにArduinoサイトを調べてみたら「ARDUINO WEB EDITOR」と言うなにやら凄そうな物を発見しました!
これでArduinoIDEをインストールしなくても常に最新版がWEBブラウザ上で使えます!
早速使って見ました!
図4:ARDUINO WEB EDITOR
ダメでした
励みになりますのでよければクリック下さい(^o^)/