Arduino STM32でキャラクタ液晶ディスプレイを使う
現在ちびちびと Arduino STM32 リファレンス 日本語版 を整備しているにですが、
今回、標準ライブラリの LiquidCrystalライブラリの部分を追記しました。
このライブラリはHD44780コントローラ(互換品含む)を使った
キャラクタ液晶ディスプレイ用のライブラリです。
動作確認として、実際にBluePillボードで制御してみました。
利用したキャラクタ液晶ディスプレイ
・1602A-V2 (aitendoでも販売されています)
表示文字数 16桁×2行 、バックライト付きSTN液晶ディスプレイ
Aliexpressでは、2ドル以下で購入出来ます。
久しぶりに、パラレル接続のキャラクタ液晶ディスプレイを使いました。
色々と忘れていて、コントラスト調整に戸惑ってしまいました。
今回はとりあえず、4ビットモードで利用しました。
動作電源が5Vのため、BluePillボードの5Vで利用可能なピンを利用しました。
下記がその結線です。
結線表
1602A-V2端子 | 接続先 | 備考 |
VSS | BluePill - GND | |
VDD | BluePill - 5V | |
V0 | 20kΩ半固定抵抗(GND接続) | コントラスト調整用 |
RS | BluePill - PA8 | 5Vトレラントピン利用 |
RW | BluePill - GND | LOW(GND)でWモード固定 |
E | BluePill - PA9 | 5Vトレラントピン利用 |
D0 | (未接続) | |
D1 | (未接続) | |
D2 | (未接続) | |
D3 | (未接続) | |
D4 | BluePill - PB6 | 5Vトレラントピン利用 |
D5 | BluePill - PB7 | 5Vトレラントピン利用 |
D6 | BluePill - PB8 | 5Vトレラントピン利用 |
D7 | BluePill - PB9 | 5Vトレラントピン利用 |
A | BluePill - 5V | バックライトLED用 |
K | BluePill - GND | バックライトLED用 |
動作確認に利用したスケッチ
#include <LiquidCrystal.h> #define LCD_RS PA8 #define LCD_E PA9 #define LCD_D4 PB6 #define LCD_D5 PB7 #define LCD_D6 PB8 #define LCD_D7 PB9 uint8_t font[]= { 0b00001010, 0b00001110, 0b00011111, 0b00010101, 0b00011111, 0b00011111, 0b00001110, LiquidCrystal lcd(LCD_RS,LCD_E, LCD_D4, LCD_D5, LCD_D6, LCD_D7); void setup() { lcd.begin(16, 2); lcd.createChar(1,font); lcd.clear(); lcd.cursor(); lcd.blink(); lcd.setCursor(0, 0); lcd.print("Hello, world!"); lcd.setCursor(0, 1); lcd.print("\xc8\xba\x20\xc6\x20\xba\xdd\xca\xde\xdd\xdc\x01"); } void loop() { } |
スケッチは、LiquidCrystalクラスのインスタンス lcd をピン割り付けを指定して生成し、
begin()にて利用開始します。
4ビットモードだと結線数も少なく、割と簡単に制御出来ます。
LiquidCrystalライブラリ は、Printクラスの派生クラスのため、
Serialオブジェクトのような感じで、print()関数が利用出来ます。
数値等の出力も簡単に出来ます。
写真の 「ネコ ニ ホンバンワ」の半角カタカナ表示の部分は、
Arduino IDE環境の文字コードUTF-8コードのため、文字列をそのまま記述することはできません。
UTF-8で半角カタカナ1文字は、3バイトに置き換えられてしまい文字化けします。
ですので、文字コードを16進数表記で記述しています。
また、猫っぽいアイコンは、CGRAM領域にフォントデータを登録して表示しています。
CGRAM領域には、最大8文字(5x8ドット)登録することが出来ます。
lcd.createChar(1,font)にてその登録を行っています。
登録した文字は文字コード0~7にて指定出来ます。
(ただし、文字コード0は文字列終端子と被るのでwrite()で書く必要あり)
登録するフォントデータは8バイトですが、横5ドットは下位5ビットにて定義します。
縦は実際は7ドットのため、最後の8列目は0を設定します。
参考文献
・Adafruit Explore & Learn - Wiring a Character LCD
・HD44780U (LCD-II)
« Arduino STM32のWS2812Bライブラリ(NeoPixel制御ライブラリ) その1 | トップページ | 豊四季タイニーBASIC for Arduino機能拡張版の修正中 »
「arduino」カテゴリの記事
- Arduino IDE+Arduino STM32環境で指定と異なるgccが使われてしまう(2025.01.23)
- Zorin OSでArduino Uno互換機(CH340)が認識しない(2025.01.19)
- Arduino IDE 2.3.4でArduino STM32を利用する(2025.01.12)
- Arduino用 SKK日本語変換ライブラリの開発 その1(2024.12.28)
- NeoPixel(WS2812B)の制御 その5(2024.09.15)
「表示器制御関連」カテゴリの記事
- NeoPixel(WS2812B)の制御 その5(2024.09.15)
- Arduino用 美咲フォントライブラリを更新しました(2024.03.21)
- Raspberry Pi Pico(MicroPython)でLEDドットマトリックスを使ってみる(2024.03.14)
- Raspberry Pi Pico MicroPython用のマルチフォントライブラリ(2023.02.09)
- MicroPython(Raspberry Pi pico)で8x8ドットNeoPixcel文字表示(2023.02.08)
「STM32」カテゴリの記事
- Arduino IDE+Arduino STM32環境で指定と異なるgccが使われてしまう(2025.01.23)
- Arduino IDE 2.3.4でArduino STM32を利用する(2025.01.12)
- 「Arduino STM32 リファレンス 日本語版」が2万アクセス突破!(2021.03.26)
- SPI接続フラッシュメモリモジュールを入手しました(2020.05.13)
- Arduino STM32でキャラクタ液晶ディスプレイを使う(2019.06.01)
« Arduino STM32のWS2812Bライブラリ(NeoPixel制御ライブラリ) その1 | トップページ | 豊四季タイニーBASIC for Arduino機能拡張版の修正中 »
コメント