てきとうなさいと べぇたばん

Arduinoでdelayを使って待つプログラムを書いたが他のプログラムを動かしたいときは

Arduinoで色々なタスクを行わせたい

これをまとめた動画を作った。

Arduinoのdelay

Arduinoのdelay関数は、引数にミリ秒単位で数値を入れてあげるとその秒数分待ってくれる関数。

delay(1000); // 1秒待つ

これが次のようなプログラムならdelayで作れる。

  • LEDをON
  • 1秒待つ
  • LEDをOFF
  • 1秒待つ

しかし、この間にシリアル通信したいとか、プログラムを追加したいとなるとおかしなことになってしまう。

これを解決する方法はどうしたら良いだろうか。

1つめ millis関数を使って比較する

millis関数は、起動してからの時間をミリ秒単位で返す関数。これを、止める瞬間の時間をmillisで取得して、loop関数ごとに今と止めた時間とを引き算することで経過した秒数を求める。

2つめ threadを使う

Arduinoにはthreadは存在しないけど、それを擬似的に再現しているライブラリがあるので、探してみて使えるライブラリを使う。

今回は、CopyThreadを使ってみた。

これを使うと、delayの使い方でいけるので、すごく便利。

ソースコードは以下。