티스토리 뷰
퇴근하고 7시쯤 집에 들어왔는데, 아두이노 LED가 켜져있었다.
시간 계산을 잘 못 했는지 생각해봤으나 조금 애매한 타이밍이여서 '씻고 오면 꺼지겠지' 라는 생각으로 씻으러 갔다.
그리고 갔다 왔지만, 역시 켜져있었다.
원인은 여기저기서 사용되는 delay로 인해 분기에 들어올 때 3초정도 주기로 들어오는게 원인이였다.
덕분에 (s == 60)으로 분기해서 s(초)를 0으로, m(분)을 +1 하는 분기에 걸리지 않고 통과했는데,
그렇다고 이 주기에 맞춰 s에 +2~3을 하자니 펌프 가동할 때 돌아가는 delay 때문에 또 틀어질 것 같았다.
결국 분기에 들어올 때 60초 이상이면 s는 -60을 하고 m은 +1하는 로직을 작성했다.
이런 저런 방법을 생각하고, 시도했지만 결국 처음 생각했었고 가장 최후의 수단인 방법으로 했다. (불-만)
처음 시작할 때 현재 시간을 하드코딩한 h, m, s 변수와 아두이노 작동 후 기기가 카운팅하고 있는 타이머 시간(ss)을 각자 포맷에 맞게 변환해서 가지고 있는 hh, mm 변수를 작성했다.
그 후 h+hh, m+mm을 LCD에 출력하도록 했더니 잘 동작했다. m(분)만.
보아하니, m+mm이 60을 초과했을 때 h+hh에 +1을 해줘야되는데, 그걸 안하고 있었다.
그래서 최종적으로 시에 적용된 로직은 (h + hh + (m +mm)/60) % 24 이랬다. 아닌가?
m+mm이 60 이상일 때 +1 되고, 그렇게 다 더해진 시간(h+hh+n)을 24로 나눴을 때 나오는 나머지 값으로 0~24시간을 나타내게 했다.
그리고 결국 다음날 아침에 일어났을 때 타이머가 정상 동작하는 걸 확인했다. 퇴근 후에도 잘 돌고 있으면 좋겠는데..
ㅎㅎ 어림도 없지
'개발 일지' 카테고리의 다른 글
AWS RDS 연결 시 DB Name 입력 (2) | 2022.05.07 |
---|---|
핫스팟으로 인터넷 연결한 상황에서 ec2 에 ssh 접속하기 (0) | 2022.05.07 |
[mariaDB] 사용한 커맨드 정리 (1) | 2020.12.24 |
3일차 react-native 개발일지 (2) | 2020.10.28 |
1일차 react-native 개발일지 (0) | 2020.10.24 |