ひとしれずひっそり

主にソフトに関することをメモしていきます。過程をそのまま書いていたりするので間違いが含まれます。鵜呑みしない様に。

M5StickCでM5UnifiedでIMU(6)

Ambientに送信して完成。 10分動いてなかったらPower offする機能も追加。

static void transfer_task(void*)
{
  Ambient ambient;
  unsigned long sent_at = millis();
  WiFiMulti wifiMulti;
  WiFiClient client;
  int power_off_count = 0;
  int power_off_min = 10;

  WiFi.disconnect();
  WiFi.softAPdisconnect(true);
  WiFi.mode(WIFI_STA);
  wifiMulti.addAP(WIFI_SSID, WIFI_PASSWORD);
#ifdef WIFI_SSID2
  wifiMulti.addAP(WIFI_SSID2, WIFI_PASSWORD2);
#endif
#ifdef WIFI_SSID3
  wifiMulti.addAP(WIFI_SSID3, WIFI_PASSWORD3);
#endif

  ambient.begin(AMBIENT_CHANNEL_ID, AMBIENT_WRITE_KEY, &client);

  while(true) {
    if (wifiMulti.run() == WL_CONNECTED) {
      unsigned long now = millis();
      if (now - sent_at >= 60000) {
        if (num_of_steps < 15) {
          if (++power_off_count >= power_off_min) {
            M5.Power.powerOff();
          }
        } else {
          power_off_count = 0;
        }

        ambient.set(1, num_of_steps);
        ambient.send();
        num_of_steps = 0;
        sent_at = now;
      }
    }
  }
}

雪寄せ時間を記録するためのM5StickCのプログラム · GitHub