好きな色の点滅をWioLTEでやる

どうもくろにゃんこたんです。

前回カラーチャートからSORACOM色のLチカをやってみましたが、自分の好きな色の点滅や、都度色を変えたい(イルミネーションなど)にはとっても不便でした。
そこでちょっと思い立ってグラフを書いてみました。

あー意外とほぼ線形ですね。。。
これなら定量を増減させるだけでそれなりに行けそうです。

というわけでArduinoのスケッチを書いてみました!

#include <WioLTEforArduino.h>

#define INTERVAL  (10)

WioLTE Wio;
float r = 52, g = 205, b = 215; //RGB値を格納
int i = 0;
int s = 80; // 40→早め 80→ゆっくりめ

void setup() {
  delay(200);
  SerialUSB.println("");
  SerialUSB.println("--- START ---------------------------------------------------");
  SerialUSB.println("### I/O Initialize.");
  Wio.Init();
}

void loop() {
  Wio.LedSetRGB(calc(r, i) , calc(g, i)  , calc(b, i)  );
  i++;
  if (i > s) {
    i = 0;
    delay(INTERVAL * s);
  };
  delay(INTERVAL);
}

int calc(float t, int i) {
  if (i <= (s / 2)) {
    return round(t - (t / (s / 2) * i));
  } else {
    return round(0 + (t / (s / 2) * ((i - s / 2))));
  }
}


肝はcalc関数なのですが、単純に元の値を何分割かにして引くということをしています。
また、出来るだけloop()の中で完結させたかったので、インクリメントだけさせて半分以上だったら消灯に向かうように判定させています。

そして出来たのがこちら(・ω・)ノ

まぁ、普通にきれいに見えますね。
もうこれで泥臭くカラーチャートを書かなくても大丈夫\(^o^)/

ちなみにこちらを応用して、お正月っぽく紅白に点滅させてみた例がこちら。

あなたも自分のカラーを見つけてみてくださいね(・ω・)ノ