diff --git a/SampleSrc/TestBuild/TestBuild.ino b/SampleSrc/TestBuild/TestBuild.ino deleted file mode 100644 index 5135bc4..0000000 --- a/SampleSrc/TestBuild/TestBuild.ino +++ /dev/null @@ -1,17 +0,0 @@ -int num = 0; -void setup() { - Serial.begin(115200); // 通信速度をbpsで設定 - pinMode(10, OUTPUT); -} -void loop() { - Serial.printf("%d \n" , num); - num++; - if (num%5==1){ - digitalWrite(10, LOW ); // LED ON (LOW=0) - delay(1500); // 1500ミリ秒待つ - } else { - digitalWrite(10, HIGH ); // LED OFF (HIGH=1) - delay(500); // 500ミリ秒待つ - } -} - diff --git a/SampleSrc/serial01.ino b/SampleSrc/serial01.ino index 5135bc4..bc94cc1 100644 --- a/SampleSrc/serial01.ino +++ b/SampleSrc/serial01.ino @@ -7,11 +7,12 @@ Serial.printf("%d \n" , num); num++; if (num%5==1){ - digitalWrite(10, LOW ); // LED ON (LOW=0) + digitalWrite(10, LOW ); // LED ON (LOW=0) delay(1500); // 1500ミリ秒待つ } else { - digitalWrite(10, HIGH ); // LED OFF (HIGH=1) + digitalWrite(10, HIGH ); // LED OFF (HIGH=1) delay(500); // 500ミリ秒待つ } } + diff --git a/SampleSrc/serial02.ino b/SampleSrc/serial02.ino index 5ccd3cb..77ecbcb 100644 --- a/SampleSrc/serial02.ino +++ b/SampleSrc/serial02.ino @@ -1,29 +1,51 @@ -int num = 0; -char buf[100]; - -void setup() { - Serial.begin(115200); // 通信速度をbpsで設定 -} - -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); -} \ No newline at end of file +#include + +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 を切り替える + } +} + diff --git a/SampleSrc/serial03.ino b/SampleSrc/serial03.ino index f4cb992..a7300d1 100644 --- a/SampleSrc/serial03.ino +++ b/SampleSrc/serial03.ino @@ -11,6 +11,8 @@ #include +TaskHandle_t blinkTH; //LED点滅用 + int line = 0; // LCD画面から文字が見切れないように文字数が一定以上になったら画面を初期化する処理に使用 String text; // PCから送られてきたシリアル入力を格納する @@ -23,12 +25,14 @@ M5.Lcd.println("Serial Input Test"); M5.Lcd.println("--------------------------------------"); Serial.begin(115200); // シリアル通信を開始する + } void loop() { if(Serial.available()) // シリアルが使用可能なら { + xTaskCreatePinnedToCore(blinkTask , "blink", 1024, NULL, 1, &blinkTH, 1 );//LED点滅1回 text = Serial.readString(); // PCから送られてきたシリアル入力を text に格納する if (line >= 5) // LCD画面から文字が見切れないように文字数が一定以上になったら画面を初期化する { @@ -42,5 +46,17 @@ Serial.print("Recieved : " + text + "\0"); //送られてきた文字をPCのシリアルモニタにも出力 line++; } - delay(1); // delayをloop内につけることで負荷の軽減を図る + delay(30); // delayをloop内につけることで負荷の軽減を図る +} + +// LED点滅用 +void blinkTask(void *pvParam){ + portTickType lastTime; + int PIN = 10; + pinMode(PIN, OUTPUT); // PINのモード設定 + digitalWrite(PIN, 0); // HIGH = 1, LOW = 0 + lastTime = xTaskGetTickCount(); + vTaskDelayUntil(&lastTime, 2000 ); // 第2引数に、実行間隔ミリ秒を指定 + digitalWrite(PIN, 1); // HIGH = 1, LOW = 0 + vTaskDelete(NULL); // 自タスクを削除する }