さて、LDMicroを度々話題にしていますが、Arduinoで動くラダーを動かす
ラダーロジックエディタです。
昔懐かしい、テキストベースでラダーを表現しています。
それでもマイコンでラダーロジックを簡単に動かせるので、大変便利です。
ロジック記述に関してはラダー言語はわかりやすいです。
LDMicroでの開発はもう1年以上経験があります。
我が家のArduinoのソフトはほとんどLDMicroでベースを書いて、
Arduinoのライブラリを合わせた複合技で開発できています。
チャタリング処理はとても簡単です。ですが、1日はまっていました。
switch文が思ったように動かず、原因がまったくわかりませんでした。
コンパイルは通るが、動かない状態がずっと続いていました。
知らなかったのですがArduino言語でのswitch文はくせがあるようです。
Bugではないらしい。書き方で動かない場合があるみたい。
今回はmillis()関数を使っただけだったが、動かない。
dt=millis();
......
if(millis-dt>2000) { i++; }
のような記述をswitch文内のcase で書いたのですが、これコンパイル通ります。
問題ないのでは? と思ってしまうのですが(私は思っていた)
正解は
if(millis()-dt>200) { i++; }
でした。 カッコつけないと駄目なんです。
switch文が実行されていない感じでした。(シリアルデバッグすればよかった)
コンパイルエラーが出れば、直すのですが、通ってしまい、動きが
おかしいという膠着状態になりました。
LDMicroの変換ソースが悪いのか? などいろいろ考えました。
関数はちゃんと()つけなさいなんですが、はしょっては駄目です。
反省です。
ではでは。