M5Stack Serial LCDライブラリ
と
Kimwipe Stack
2020/07/14
@tomorrow56
Masawo Yamazaki
みんなのM5Stack自慢大会
Masawo Yamazaki (@tomorrow56)
- ハードウエア設計エンジニア
- 現在の仕事は半導体の評価
Facebook: Masawo Yamazaki Twitter: @tomorrow56
「ThousanDIY」という名前でM5Stackの自作モジュールを
スイッチサイエンスさんで委託販売してます
https://www.switch-science.com/catalog/list/1045/
M5Stack Serial LCDライブラリ
•概要
• M5StackをSerial2経由の外部ディスプレイとして使うArduinoIDE用ライブラリ
• M5StackのM5.Lcd系の描画コマンドの「主要なもの」をサポート
• 元々SPRESENSE用にM5StackのLCDが共用したい!というのが目的
• やっていることはシンプルなので他のボードでも動く(はず)
M5Stack Serial LCDライブラリ
•アピールポイント
•M5Stack(LCD)のスケッチとマイコン側の描画ライブラリのペア
•ライブラリの関数はTFT-eSPIと(出来るだけ)互換
•スケッチの最初の定義を書き換えればOK
#include "SerialTFT.h"
SerialTFT tft = SerialTFT();
void setup() {
tft.begin(921600);
tft.setRotation(1);
tft.fillScreen(TFT_BLACK);
M5Stack Serial LCDライブラリ
• サポートするコマンド(描画系1)
void drawPixel(int16_t x, int16_t y, uint16_t color);
void drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint16_t color);
void drawRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
void drawCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color);
void drawCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername,uint16_t color);
void drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color);
void drawRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t color);
void drawChar(uint16_t x, uint16_t y, char c, uint16_t color, uint16_t bg, uint8_t size);
void drawFastHLine(int32_t x, int32_t y, int32_t w, uint32_t color);
void drawFastVLine(int32_t x, int32_t y, int32_t h, uint32_t color);
M5Stack Serial LCDライブラリ
• サポートするコマンド(描画系2)
void fillRect(int16_t x, int16_t y, int16_t w, int16_t h, uint16_t color);
void fillScreen(uint16_t color);
void fillCircle(int16_t x0, int16_t y0, int16_t r, uint16_t color);
void fillCircleHelper(int16_t x0, int16_t y0, int16_t r, uint8_t cornername,int16_t delta, uint16_t color);
void fillTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint16_t color);
void fillRoundRect(int16_t x0, int16_t y0, int16_t w, int16_t h, int16_t radius, uint16_t color);
M5Stack Serial LCDライブラリ
• サポートするコマンド(テキスト系)
void setCursor(uint16_t x0, uint16_t y0);
void setTextColor(uint16_t color);
void setTextColor(uint16_t color, uint16_t backgroundcolor);
void setTextSize(uint8_t size);
void setTextWrap(boolean w);
void print(String text);
void println(String text);
void println();
void drawCentreString(String text, int dX, int poY, int font);
void drawRightString(String text, int dX, int poY, int font);
M5Stack Serial LCDライブラリ
•サポートするコマンド(設定・その他)
void begin(int baud);
void setBrightness(int8_t brightness);
void setRotation(int angle);
uint16_t color565(uint8_t r, uint8_t g, uint8_t b);
uint8_t color16to8(uint16_t c);
uint16_t color8to16(uint8_t color);
void progressBar(int x, int y, int w, int h, uint8_t val);
void qrcode(String text, uint16_t x, uint16_t y, uint8_t width, uint8_t version);
M5Stack Serial LCDライブラリ
•M5Stack(LCD側)でやっていること
void LcdString(String drawCommand){
String outChar = "";
if(drawCommand.startsWith("fillScreen(")){
uint16_t lcdColor = 0;
outChar = drawCommand.substring(10);
outChar = extractString(outChar);
M5.Lcd.fillScreen(String2Color(outChar));
}
if(Serial2.available()) {
int ch = Serial2.read();
if(ch == 0x0a){
}else{
readChar = readChar + (char)ch;
}
if(ch == 0x0d){
if(readChar.startsWith("M5.Lcd.")){
LcdString(readChar.substring(7));
}
readChar = "";
}
M5Stack Serial LCDライブラリ
• マイコン側のライブラリでやっていること
void SerialTFT::fillScreen(uint16_t color){
Serial2.println("M5.Lcd.fillScreen(" + String(color, HEX) + ")");
delay(comInterval);
}
M5Stack Serial LCDライブラリ
• SPRESENSEを内蔵するモジュールを作成して動作確認
M5Stack Serial LCDライブラリ
•動作デモ
https://youtu.be/9s_0lO3eZhU
M5Stack Serial LCDライブラリ
<ライブラリ>
https://github.com/tomorrow56/SerialTFT
<SPRESENSE用のブログ>
https://thousandiy.wordpress.com/…/spresense-to-m5stack-ad…/
Kimwipe Stack
最初に買ったM5Stackの本体が劣化して割れたので、キムワイプのシールで保護
えむふぁいぶ->きむわいぷ と何となく語呂もあっている
Kimwipe Stack
キムワイプの箱の展開図は以下にあります。怒られたら消します。
https://bit.ly/3eucfPA
Have a good time with M5Stack

みんなのM5Stack自慢大会_山崎