#include <M5StickCPlus.h>
TaskHandle_t blinkTH; //LED点滅用
int num = 0;
char buf[100];
void setup() {
Serial.begin(115200); // 通信速度をbpsで設定
xTaskCreatePinnedToCore(blinkTask , "blink", 1024, NULL, 1, &blinkTH, 1 );//LED点滅
}
void loop() {
int pos = 0;
while (Serial.available()) { //PCから送信された文字があるあいだ、くりかえす
char c = Serial.read(); // 1バイト読み取る
buf[pos] = c; // 配列buf に格納
pos++; // 格納位置をひとつ右へ
}
if (pos > 0) {
buf[pos] = 0; // さいごに Null (文字列の終端)を追加(これを忘れるとどうなる?)
Serial.print("> from pc: ");
Serial.print( buf ); // 格納しておいた文字列を表示
if (buf[0] == '0' && pos == 2) { // buf={ 48(='0'), 10(=改行) } のとき
num = 0; // num を 0 にする
Serial.println( "Reset num" );
}
delay(2000);
}
Serial.printf("%d \n" , num );
num++;
delay(500);
}
// LED点滅用
void blinkTask(void *pvParam){
portTickType lastTime;
int PIN = 10;
pinMode(PIN, OUTPUT); // PINのモード設定
int highOrLow = 0;
for (;;) {
/** loop をここに書く **/
lastTime = xTaskGetTickCount();
vTaskDelayUntil(&lastTime, num*10+100 ); // 第2引数に、実行間隔ミリ秒を指定
digitalWrite(PIN, highOrLow); // HIGH = 1, LOW = 0
highOrLow = 1 - highOrLow; // HIGH <=> LOW を切り替える
}
}