質問: Arduinoのプログラムについて教えてください。whileループでリミットが押されたらbreakさせるという動作が基本なのですが、万が一トラブルでリミットが押されなかった場合、10秒間経つとリミットが押されたかどうか
回答: 言葉通りに、10秒経ったらループからbreakすれば特に問題はないのでは。 const unsigned int TOUT=10*1000; bool limitSw=false; unsigned ling t0=millis(); //millis()は起動からの時間をミリ秒単位で返す関数。ループに入る直前の時間を保持する while(!limitSw){ if(millis()-t0>TOUT) break; //現在の時間-ループに入った時間でループの滞在時間が求まる。それが既定値以上ならタイムアウト limitSw=(digitalRead(sw)==HIGH);//スイッチの極性によって適宜変更 } //ここに到達した時点でlimitSwがtrueになっていなければタイムアウト