質問: 40000; void setup() { pinMode(LED_SOCKET1, OUTPUT); } void loop() { digitalWrite(LED_SOCKET1, HIGH); delay(INTERVAL_ON); digitalWrite(LED_SOCKET1, LOW); delay(INTERVAL_OFF); } ### 試したこと INTERVAL_OFF を 30000、いわゆる30秒にすると狙い通り動きます。 delay関数に設定可能な上限があるのではと疑っています。 ### 補足情報(FW/ツールのバージョンなど) Arduino MEGA 2560
回答: > > int INTERVAL_OFF = 40000; > > > Arduinoの機種によりますが、int型は2バイト変数になってます。 ということで、int型で32767までしか表現できません。 ムリヤリ40000を代入すると、オーバフローしてマイナスの値になってしまいますね で、別回答にあるように、これらの変数をint ではなくてunsigned long型にすると解決しますね