>>407
まだArdruinoのC言語にさほど詳しくはないんだけど、

> if (i > 10 || data[i] == '\0') i = 0;

これだとdata[10]にまで書き込んじゃうのでは。

あと、配列dataを\0で初期化しなくていいの?
offの後にonを入れたら、onfになったりしてない?