要するに、データをStringで定義すると、EEPROMの中のデータ長が不定になるため(恐らく0バイト指定)、メモリ破壊になるのだ。Stringで定義してはいけない。探した限りでは、これまでの情報にこの落とし穴の指摘はなかった。文字配列にして長さを指定しても、実はまだメモリ破壊が止まらなかった。これは今度はこちらのミスだった。要するに、文字列の最後の'\0'キャラクターを長さに入れていなかったためで、少し多めにデータ長を指定してOKとなる。このあと、待ち時間を入れないとおかしくなる(5ms以上必要)と聞いて、慌てて待ち時間を追加する。これでやっとのことで、画面で定義した新しいコマンドが電源を入り切りしても現れるようになる。このあたりも作りこめば、いろいろ工夫できるが、とりあえず、最後の受信部の書き直しに移る。ウェブサーバーに受信部を追加する。大幅書き直しでこいつも難航(6/12/2018)Arduinoのプログラムステップ数も500を越えて、そろそろ開発の限界に近付いてきた(ひとつのモジュールの開発規模が500ステップを越えると制御不能になりやすい)。いうことでもないが、気楽に、今までの受信部をとりあえず、全部取りこみ、タクトスイッチで受信を開始するロジックを加えたのだが、全体が全く動かなくなった。わかってみれば、単なる変数の初期化忘れが原因だったのだが、最初はなぜ動かなくなったのか全く見当がつかない。疑似コード作成をさぼって、適当にコードを追加した咎めである。なると、もう修復は難しい。0と#endifで全部元へ戻し、少しづつコードを足して、その度に動くことを確認しながら入れるコードを増やして行った。結局、バグは先に述べた通り、単なるレコード数変数の初期化忘れという初歩的ミスだった。何とか動くようになり、このソフトは、以下の手順で学習した赤外線データを送ることが出来る。タクトスイッチの押下で(準備OKのLEDが点灯)、赤外線リモコンの照射を待ち、正しく信号が入ると、LEDが点滅して無事受信されたことを知らせる。ここで、画面上の、「画面更新」というボタンを押すと、得られた赤外線コードが表示されるので、クリックすると、学習した赤外線コマンドが送信される。電源を切ってもデータを残すためには、この赤外線コードを、ブラウザーのコピー/ペーストで、コマンド新設の欄に入れて登録すれば電源を切っても残る。学習したコマンドを直接EEPROMに保存する機能はまだ未開発だが、これ以上、公開を遅らせたくないので、見切り発車で公開の準備に入った。ソースコードの独自開発をせっせと進める。ソースコードの公開(6/22/2018)そのうち、4年に一度のサッカーのワールドカップが始まった。PCに向かうより、TVの前で深夜過ごすことが多くなり、開発の速度はいやでも落ちる。勝てる見込みのなかったコロンビアに日本が見事な勝ち越しゴールで勝ったものだから、もう大変である。いうことで遅れに遅れていたが、やっとのことでソースコードを公開できるまでになった。未完成な所も多く、オリジナルのコードをすべて取り替えるところまで行っていない。プロの世界では、まずクロだが、まあ、お金をとるわけでもないので、とりあえず公開して様子をみることにする。以下に、赤外線リモコンサーバーのスケッチを公開いたします。フォルダーがzipファイルになっていますので解凍のあと、適当なArduinoの開発環境に入れてビルドしてください。WiFiのIDとパスコードを加えるだけで、上記の画面が、192.168.0.33/で見えるはずです。「sketch_IRserver.zip」をダウンロード注意:6/26以前にダウンロードした方は、もういちどダウンロードしなおし、前のものは廃棄してください。一部にバグがありました。