본문 바로가기
아두이노

아두이노와 달력 - #13

by 오징어땅콩2 2020. 3. 7.
반응형

앞에서 여러번 언급해서 내용을 알고 있을것 같다.

오늘 마지막으로 하는것은 

현재시간에서 1년 2달 3일 4시간 5분 6초 후를 계산 할 것이다.

현재 시간이 변하고 있기 때문에 값도 바뀌게 되겠지만,

고정된 시간으로 계산해도 무방 하다.

예를 들어 

100일 이후를 계산한다 던지

7800초 이후라는 수식도 가능 하다..

 

조금, 설명을 더하면,

현재 시간이 cdt, 계산된 시간을  todt라고 변수를 정의 했다.

소스코드는 간단하니 어려울것은 없을것이다.

 

void loop() 
{
    get3231Date();
    Calendar cdt(2000+year, month, date, hours, minutes, seconds);  
    Calendar todt =  cdt +  Calendar(123456);
       
    Serial.print("-------");
    Serial.println();
    delay(1000);     
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

 

이것이 가능하게 만든 +  연산자의 정의를 참고 하자.

크게 어려운것은 없다. 그냥 날짜의 정의에 충실한것 뿐이다.

 

  Calendar  operator+ (const Calendar  &r)
  {
      int y,m,d, hr, mi, se;
      int months[] = {0312831303130313130313031};
 
      hr = hour;
      mi = minute;
      se = second; 
      
      d = day;
      m = month;
      y = year;
      
      if(((y% 4 == 0&& (y % 100 != 0)) || (y % 400 == 0)) months[2]=29;
      
      se += r.second;
      while(se >= 60
      {
        se -= 60;
        mi += 1
      }
      
      mi += r.minute;
      while(mi >= 60
      {
        mi -= 60;
        hr += 1
      }
          
      hr +=  r.hour;
      while(hr >= 24
      {
        hr -= 24;
        d += 1
      }
      
      d += r.day;
      while(d > months[m]) 
      {
        d -= months[m];
        m++;
        if(m >12)
        {
          m  = 1;
          y += 1;  
          if(((y% 4 == 0&& (y % 100 != 0)) || (y % 400 == 0)) months[2]=29;
          else  months[2]=28;
        }
      }
        
        m += r.month;
        while(m > 12
        {
          m -=12;
          y++;
        }
        y += r.year;      
 
        if(((y% 4 == 0&& (y % 100 != 0)) || (y % 400 == 0)) months[2]=29;
        else  months[2]=28;      
        if(d > months[m]) d = months[m];
    
        return Calendar(y,m,d, hr, mi, se);    
  };
 
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

 

 

'아두이노' 카테고리의 다른 글

아두이노와 7세그먼트(잡담)  (0) 2020.03.29
아두이노와 달력 - #최종  (0) 2020.03.07
아두이노와 달력 - #12  (0) 2020.03.07
아두이노와 달력 - #11  (0) 2020.03.07
아두이노와 달력 - #10  (0) 2020.03.05

댓글