M5StackからPCへの接続方法にはいろいろありますが、無線でなくても良い、つまりUSBで電源供給しているならばUSB経由のシリアルで接続するのが妥当そうです。
このときにシリアルポートを指定しないといけないですが、ポートをスキャンするサンプルがあったので使ってみました。
参考は、
https://garchiving.com/processing-auto-serial-port/
になります。
PC側はProcessingを使っていますが、12行目から21行目までがポート検出の該当スクリプトです。ポート指定方法としてnew Serialの第二引数に”/dev/tty.usbserial-54260147311″のように直接指定する方法もありますが、環境が変われば改めて設定しなければならないでしょうから、自動検出にはメリットがあります。
import processing.serial.*;
Serial myPort;
int x;
String[] comPort = myPort.list();
void setup(){
// 画面サイズ
size(256, 256);
int num = comPort.length;
for (int i=0; i<num; i++) {
try {
myPort = new Serial(this, comPort[i], 115200);
println(comPort[i]);
}
catch(Exception e) {
continue;
}
}
}
void draw(){
// 背景色を白に設定
background(255);
// XY座標を(x,100)に設定し、
// 幅50、高さ50の円を描画
ellipse(x,100,50,50);
}
void serialEvent(Serial p){
//変数xにシリアル通信で読み込んだ値を代入
x = p.read();
println(x);
}
M5Stack側は極めてシンプルなスクリプトで1秒ごとに異なる値を送るだけ。Processing側ではcircleの座標として扱っています。
#include
void setup(){
Serial.begin(115200);
}
void loop(){
Serial.write(100);
delay(1000);
Serial.write(200);
delay(1000);
}
admin