ソフトキーボード その4
ソフトキーボードを作ってみました。
今回は日本語の大文字入力を実装しました。
日本語入力
SDからiniファイルの読込み
今回はSDカードにiniファイルを作ってWifiのSSIDとパスワードを管理するようにしました。
起動時のsetup()でiniファイルのSSIDとパスワードを読込む処理を作りました。
読込むiniファイル
SDの中にsetフォルダを作ってconfig.iniファイルを格納します。
中身はこちらです。
########################### # Config.ini ########################### #SSID YOUR_SSID ← 変更箇所 #SSID_PASS YOUR_PASS ← 変更箇所
iniファイルの読込み処理
こちらがコードです。
#include <M5Stack.h> #include <WiFi.h> #include <string> void setup() { String config_ini; String ssid; String password; /* 初期化 */ M5.begin(); /* SD初期化 */ SD.begin(); /* 文字サイズを変更 */ M5.Lcd.setTextSize(1); /* ファイルオープン */ File datFile = SD.open("/set/config.ini"); if( datFile ) { M5.Lcd.println("File open successful"); /* サイズ分ループ */ while(datFile.available()) { config_ini = config_ini + datFile.readString(); } /* ファイルクローズ */ datFile.close(); } else { M5.Lcd.println("File open error hello.txt"); } /* SSID取得 */ config_ini = config_ini.substring(config_ini.indexOf("#SSID\r\n") + 7); ssid = config_ini.substring(0, config_ini.indexOf("\r\n")); /* パスワード取得 */ config_ini = config_ini.substring(config_ini.indexOf("#SSID_PASS\r\n") + 12); password = config_ini.substring(0, config_ini.indexOf("\r\n")); /* connect to WiFi */ M5.Lcd.print("Connecting to YOUR_SSID "); /* wifi初期化 */ WiFi.begin(ssid.c_str(), password.c_str()); while (WiFi.status() != WL_CONNECTED) { delay(500); M5.Lcd.print("."); } M5.Lcd.println(" CONNECTED"); /* disconnect WiFi as it's no longer needed */ WiFi.disconnect(true); WiFi.mode(WIFI_OFF); } void loop() { }
これでSSIDやパスワードが変わってもiniファイルを書き換えるだけで済みますね。
あとは毎回コードに書いたSSIDとパスワードを書き換えずにブログに載せれます(笑)
Yahoo!APIを使った雨雲レーダの表示
YahooのWebAPIを使って雨雲レーダの画像を表示してみました。
日本語表示
日本語表示に挑戦してみましょう。
フォントデータの作成
まずは日本語フォントのデータを作成します。
こちらのサイトを参考にして作りました。Processingなるツールを使って作るみたいです。
watako-lab.com
フォントデータのロード
作ったフォントデータをSDに格納してロードして使用します。
引数にファイルパスとファイルデバイスを指定します。
M5.Lcd.loadFont( FileName, SD );
使い終わったらアンロードして終了です。
M5.Lcd.unloadFont();
サンプルコード
#include <M5Stack.h> void setup() { String FileName; M5.begin(); // 初期化 M5.Lcd.clear(); // カーソル位置 M5.Lcd.setCursor(0, 0); // 文字色 M5.Lcd.setTextColor(WHITE); FileName = "font/ms_20"; // フォントデータ:ms_20.vlw // フォントロード M5.Lcd.loadFont( FileName, SD ); M5.Lcd.printf("フォントサイズ20\n"); M5.Lcd.printf("あいうえおかきくけこ\n"); // フォントアンロード M5.Lcd.unloadFont(); } void loop(){ delay(1); }
日本語いいですね~♪
ビットマップ画像の表示
ビットマップ画像の表示をしてみましょう。
ビットマップ画像とは
圧縮処理がされていない画像です。そのため、JPEGやPNGにくらべてサイズは大きいです。
BMP画像を表示する関数がこちらです。
引数にx、y座標、高さ、幅、データを指定します。
M5.Lcd.drawBitmap(0, 0, 320, 240, (uint16_t *)image_data_m5_logo_BMP);
サンプルコード
#include <M5Stack.h> extern const unsigned char image_data_m5_logo_BMP[]; void setup() { M5.begin(); } void loop(){ if(M5.BtnA.wasPressed()) { M5.Lcd.drawJpgFile(SD,"/img/m5_logo.jpg"); } if(M5.BtnC.wasPressed()) { M5.Lcd.drawBitmap(0, 0, 320, 240, (uint16_t *)image_data_m5_logo_BMP); } M5.update(); delay(1); }
今年もよろしくお願いします。
2020年もM5stackをいじり倒して遊びたいと思います。
ブログの更新頻度ももうちょっと頑張りたいです。
音声再生 - MP3再生
今回は音声再生をしてみたいと思います。
色々とあさってると、MP3での再生のほうが簡単みたいですね。
ライブラリの追加
今回はライブラリの追加が必要です。
追加するライブラリは二つです。
ESP8266Audio:https://github.com/earlephilhower/ESP8266Audio
ESP8266Spiram:https://github.com/Gianbacchio/ESP8266_Spiram
MP3再生
今回はこちらのソースを参考にして、MP3を再生しました。
ESP8266Audio/PlayMP3FromSPIFFS.ino at master · earlephilhower/ESP8266Audio · GitHub
www.youtube.com
音割れがすごいですね。。。。