Falconの思うままに

PASCAL好きが、気ままにマニアックなネタを

LDMicroでArduinoソフトを構築 コンパイルではまり

さて、LDMicroを度々話題にしていますが、Arduinoで動くラダーを動かす

ラダーロジックエディタです。

 

昔懐かしい、テキストベースでラダーを表現しています。

 

それでもマイコンでラダーロジックを簡単に動かせるので、大変便利です。

ロジック記述に関してはラダー言語はわかりやすいです。

LDMicroでの開発はもう1年以上経験があります。

我が家のArduinoのソフトはほとんどLDMicroでベースを書いて、

Arduinoのライブラリを合わせた複合技で開発できています。

 

チャタリング処理はとても簡単です。ですが、1日はまっていました。

LDMicroの問題ではなくArduino IDEです。

switch文が思ったように動かず、原因がまったくわかりませんでした。

コンパイルは通るが、動かない状態がずっと続いていました。

 

知らなかったのですがArduino言語でのswitch文はくせがあるようです。

Bugではないらしい。書き方で動かない場合があるみたい。

今回はmillis()関数を使っただけだったが、動かない。

dt=millis();

......

if(millis-dt>2000) { i++; }

のような記述をswitch文内のcase で書いたのですが、これコンパイル通ります。

問題ないのでは? と思ってしまうのですが(私は思っていた)

正解は

if(millis()-dt>200) { i++; }

でした。 カッコつけないと駄目なんです。

switch文が実行されていない感じでした。(シリアルデバッグすればよかった)

コンパイルエラーが出れば、直すのですが、通ってしまい、動きが

おかしいという膠着状態になりました。

LDMicroの変換ソースが悪いのか? などいろいろ考えました。

関数はちゃんと()つけなさいなんですが、はしょっては駄目です。

反省です。

 

ではでは。