IoT+WEBのためのホームサーバ計画の実装編14。M5StickCに情報を表示させる。

M5STACKでやってみたので次はM5StickCでやってみる

ということで、前回っていうか昨日、M5Stackでシリアル通信して、
情報を表示するってのをやりました。
本日午前中、ポチったM5StickCがきてたので、これでもやってみます。

環境の変更

環境の変更っていってもたいしたことは無いですね。
Arduino IDEにて、、ライブラリをincludeです。

ライブラリマネージャで『M5StickC』を指定して、そのままincludeしましょ。

そして、TOOLからボードの設定ですね。

あとは、シリアルポートを変更して、そんでOKでしょう。たぶん^^;

しかし、DeviceManagerで見ると、こんな雑な感じですが。。。。^^;

スケッチという名のプログラムの変更

前回使った、 ScrollTextWindowというのが動かないので、超安易に自分で作ります。

こんな感じで。

char tmpS[16][256];
int nowRow = 0;
//--------------------------------------
void M5Sprint(int row,char* p){
	char s[256];
	sprintf(s,"%s                            ",p);
	s[26] = 0;
	M5.Lcd.setCursor(0, row*8+8);
	M5.Lcd.print(s);
}
//--------------------------------------
void M5Sprint(char* p){
	char		tmpstr[256];
	strncpy(tmpstr,p,208);
	tmpstr[208]	= 0;	//	最大文字列。26x8行分
	int n		= (strlen(tmpstr)-1) / 26 + 1;	//	行数
	for(int w=0;w<n;w++){
		strncpy(tmpS[nowRow+w],&tmpstr[w*26],26);
		tmpS[nowRow+w][26] = 0;
	}
	int sa = 0;
	if(nowRow + n > 7){
		sa = nowRow + n - 7;	//	scroll量
	}
	if(sa){
		for(int w=0;w<8;w++){
			strcpy(tmpS[w],tmpS[w+sa]);
		}
	}
	nowRow += n;
	if(nowRow>7)	nowRow = 7;
	//26文字改行
	for(int w=0;w<8;w++){
		M5Sprint(w,tmpS[w]);
	}
}
//--------------------------------------

なんとなく配列に突っ込んで、あとは行数分表示っていう、無理やり感満載の感じで。
決して良いサンプルとは言えません^^;

あとは、、こんな感じです。

//--------------------------------------
void setup(void) {
	memset(&tmpS[0],0,256*16);//26文字まで
	M5.begin();
	M5.IMU.Init();
	Serial.begin(19200);
	M5.Lcd.setRotation(1);
	M5.Lcd.fillScreen(BLACK);
	M5.Lcd.setTextColor(WHITE);
	M5.Lcd.setTextColor(WHITE, NAVY);
	M5.Lcd.drawString("  *FINRED IoT Web world!  ",0,0);
	M5.Lcd.drawString("  by Hiraide              ", 0, 72);
	M5.Lcd.setTextColor(ORANGE, BLACK);
	M5.Lcd.setCursor(0, 8);  
	M5Sprint(0,"Ready.");
}

void loop() {
	if ( Serial.available() > 0 ) {
		try{
		    String str = Serial.readStringUntil('\n');
		    M5Sprint((char*)str.c_str());
		}catch(...){
		    M5Sprint("CATCH EXCEPTION!\r\n");
		}
	}
	delay(100);
}

Python側は、とりあえずサーチする部分を追加して見つけられるようにします。
前も書いた通り、ホントはこれだけじゃダメですよ。
通信して、何らかのサインを戻して確認するべきですよね。

			if str(com[1]).startswith("Silicon Labs CP210x USB to UART Bridge"):
				self.use_port	= com
				return	True
#以下を追加
			elif str(com[1]).startswith("USB Serial Port"):#M5StickCはこんなアバウトなやつやってん。^^;
				self.use_port	= com
				return	True

追記ですが、RaspberryPiでは、『USB Serial Port』ではなく、『M5Stack Intf』でした

結果(o^^o)

結果(o^^o)

で、結果です。

カッコイイっす(o^^o)

ちょっと見にくいけど、8行+ヘッダフッタ2行表示できるので、、結構イイ感じです。

おしまい。(o^^o)

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です