non vorrei lavorare

2020年度からの小学校プログラミング教育の必修化を親として迎えるブロガーの書く、子供との日常

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年前の記事