이번에 온습도 센서를 구현하다보니
SolarWeatherStation 과 같이 5분단위로
내부 온도를 수집하도록 스케치 코딩을 하다가 보니…
delay 이후로 loop를 돌지 않아서 심히 고생을했다…
구글 검색결과 로 delay is not working?! 이 보인다
Syntax: delay(ms)
Parameters: ms: the number of milliseconds to pause. Allowed data types: unsigned long.
delay(1000); 은 millisecond 로 1초를 1000으로 생각하면 되는데
문제는 delay(60 * 1000); // 1min
이후로 동작을 하지 않는다…
delay말고 millis() 를 사용해서 지연시키는 예제도 있긴 하지만
약 50일? 이후부터는 문제가 발생한다는 소리도 있고
굳이 5분단위로 다시 돌면 되는데 그렇게 까지 할 필요성을 못 느껴서
원인을 좀더 알아보기로 했다
결론적으로…
어처구니 없지만 문제는 parameter인 ms가 unsigned long 이기 때문에 발생했다
unsigned long delayTime = 60 * 1000;
void setup(){
Serial.begin(9600);
}
void loop(){
Serial.print(delayTime);
delay(delayTime);
}
을 해보면 알겠지만 결과값이 6000 이 아니다
이를 바로잡기 위해선
unsigned long delayTime = 60 * 1000L;
void setup(){
Serial.begin(9600);
}
void loop(){
Serial.print(delayTime);
delay(delayTime);
}
변한 부분은 unsigned long delayTime = 60 * 1000L;
1000L 로 사용해주면 된다…
5분단위 테스트를 해보니 적어도 하루 정도는 정상적으로 돌아가는걸 확인된다...
참고
https://www.arduino.cc/reference/ko/language/functions/time/delay/
https://www.arduino.cc/reference/en/language/functions/time/millis/
027. Arduino 아두이노 - Ethernet Shield Webclient parameter 변경하기 (2) | 2019.08.24 |
---|---|
026. Arduino 아두이노 - Ethernet Shield 사용하기 (0) | 2019.08.24 |
024. Arduino 아두이노 - bme280 / bmp280 센서모듈(Using bme280 / bmp 280 sensor module) (1) | 2019.08.16 |
023. Arduino 아두이노 - DH11 Sensor Module 온습도 센서 모듈 (0) | 2019.07.09 |
022. Arduino 아두이노 - Logic Level Converter Module test(Software Serial) (2) | 2018.01.23 |
댓글 영역