今回は VSCode + PlatformIO IDE で Mbed の TextLCD を動かしてみました。
PC:Windows10 OS
Board: STM32Nucleo-F401RE
Visual Studio Code Version 1.47.2
PlatformIO IDE Version 1.10.0
概要
PlatformIOでは Mbedもサポートされているということで、Mbed の TextLCD を動かしてみました。
環境が構築できてさえいれば、確認作業にかかる時間はさほどでもありません。
環境構築がまだの方は STM32 PlatformIOでデバッグしてみる を参考にしてトライしてみてください。
プロジェクトを構築する
まず作業ディレクトリをつくります。
C:\の直下に pio というディレクトリを作成してください。
次に Visual Studio Code (VSCode) を起動します。
少し待つと PlatformIO も立ち上がってきます。
宇宙人きたぁ~
Quick Access の +New Project (赤枠部分)をクリックします。
Project Wizard で
Name : F401TextLCD
Board : ST Nucleo F401RE
Framework: Mbed
としてその下の Use default location のチェックをはずし、その下の赤枠部分を作業ディレクトリの C:/PIO に変更し、右下の Finishボタンを押します。
Wizardが完了するまで、少し時間がかかります。
TextLCDとは
Mbedでは、いろいろな方がプログラムをつくって公開しています。
TextLCDはキャラクタ表示タイプのLCDにアクセスするためのクラスです。
TextLCDに関するプログラムは、いろいろな方が公開されているようです。
今回は こちら からプログラムをダウンロードしてみました。
比較的最近のもので、ダウンロード数が多かったものに決めました。
Mbedを使ってプログラムすることを考えられている方は Mbedのコード の中を探索してみるのも楽しいと思います。
今回使うLCD
今回使ったLCDは こちら です。
バックライトの電流が多いので、Nucleoボードから供給するのは厳しいかも知れません。
今回は文字の表示が目的なので、バックライトは省略します。
接続
制御用にはGPIOの出力ピンが6本必要になります。
今回は下表のように接続してみました。
コーディングする
WORKSPACE の F401TextLCD >Src main.cpp をクリックし以下のコードを貼りつけます。
#include <mbed.h>
#include "TextLCD.h"
int main() {
// put your setup code here, to run once:
TextLCD lcd(PC_9, PC_8, PB_8, PC_6, PB_9, PC_5, TextLCD::LCD20x4);
lcd.locate(0, 0);
lcd.printf("Hello everyone.^^");
lcd.locate(0, 1);
lcd.printf("Welcome to the world of TextLCD.");
lcd.locate(0, 3);
lcd.printf("My board is F401RE.");
lcd.cls();
貼り付けた後に Ctrl + Sキーを押してファイルを保存しておきます。
Run – Start Debugging を選択し、ビルドします。
プログラムを実行する
Start Debugging を選択したことで、以下のツールバーが画面上に出てきました。
左から2番目の ▶ ボタンを押すか F5キーを押すとプログラムが走ります。
LCDに文字が表示されれば成功です。
コードと接続の概要
TextLCD.h を見て頂ければわかりますが、コンストラクタでピンの指定を行います。
引数の左から RS, E, DB4, DB5, DB6, DB7 につないだGPIOピンを指定します。
今回は20×4のLCDを使うので最後の引数には TextLCD::LCD20x4 を指定します。
LCDモジュールの 5番ピンは Read/Write 信号で Write時には L にします。説明書にはその論理が書かれていませんけど・・・
GNDにつないで Write専用にしています。
busyビットを読む場合に Read機能が必要になるのですが、時間待ちをすることでその処理を省略しています。
それから DB0-3 の4ビットはつながずに、4ビットのバス接続で使っています。
locate() は表示位置の設定で、引数は左から列、行です。
printf() は表示、cls() はクリアスクリーンです。
皆さまの環境では、うまく表示できましたか?
最後に表示した画像を貼っておきます。
お疲れさまでした。
コメントを書く