non vorrei lavorare

昔はおもにプログラミングやガジェット系、今は?

ArduinoのLCDに¥ではなく\を表示するのは大変だった

この記事は、@kjunichiの2018年パーソナルアドベントカレンダーの23日目の記事です。

日本にいるから?

dev.to

の記事のBASICのコードをArduinoで実装しようとして、バックスラッシュのつもりで表示した \が¥マーク表示、ひょっとして、日本向けのArduinoなのか?と一瞬思ったが、いやいや、 英語マニュアルしかない製品だし、そんな訳ないかとなった。

独自ビットマップ文字を定義しないとダメみたい

どうやらバックスラッシュは英語圏だろうが、なんだろうがLCDに内蔵の文字パターンは¥マークが 割り当てられている模様。ちなみに、なぜか、カタカナもどこかのコードに割り当てられていた。

forum.arduino.cc

いくつか独自のキャラクタ定義が可能

lcd#createCharで、8個の独自の文字を定義できるので、これを利用することでバックスラッシュを 表示できるようにする。

uint8_t SpecialChar [8]= { 0x00, 0x10, 0x08, 0x04, 0x02, 0x01, 0x00, 0x00 };

void setup()
{
  lcd.begin(16,2);   // initialize the lcd for 16 chars 2 lines, turn on backlight 
  lcd.backlight(); // finish with backlight on 
  lcd.createChar(0, SpecialChar);
}

と、定義して、

void loop()
{
  lcd.write(0);
}

といった感じで、文字列に埋め込んではうまく表示できなかった。 char型の配列を作って原始的に以下のように自作のコードでは実装してみた。

 for(i=0;i<16;i++) {
    lcd.write(buf[i]);
}

関連資料

Arduino - LiquidCrystalCreateChar

関連記事

4年前の記事

3年前の記事

1年前の記事