BASIC4MCU | 질문게시판 | 답변 : 타이머 관련 질문입니다.
페이지 정보
작성자 master 작성일2022-12-06 14:40 조회192회 댓글0건본문
#include <LiquidCrystal.h>
// 핀 번호 (RS,E,DB4,DB5,DB6,DB7)
LiquidCrystal lcd(44,45,46,47,48,49); // LCD 연결
//
char str[30];
int y=2022,m=12,d=06,ss=0,mm=0,hh=0;
long t_pre,t;
bool flag14=0,flag15=0,flag16=0,flag17=0,toggle=0;
//
void setup(){
lcd.begin(16,2); lcd.clear();
}
//
void button_date(){
if(digitalRead(14)){
if(flag14==0){ flag14=1; y++; }
}
else{ if(flag14)flag14=0; }
//-----------------------------------------
if(digitalRead(15)){
if(flag15==0){ flag15=1; if(++m>12)m=1; }
}
else{ if(flag15)flag15=0; }
//-----------------------------------------
if(digitalRead(16)){
if(flag16==0){ flag16=1; if(++d>30)d=1; }
}
else{ if(flag16)flag16=0; }
}
//
void button_time(){
if(digitalRead(14)){
if(flag14==0){ flag14=1; if(++hh>23)hh=0; }
}
else{ if(flag14)flag14=0; }
//-----------------------------------------
if(digitalRead(15)){
if(flag15==0){ flag15=1; if(++mm>59)mm=0; }
}
else{ if(flag15)flag15=0; }
//-----------------------------------------
if(digitalRead(16)){
if(flag16==0){ flag16=1; if(++ss>59)ss=0; }
}
else{ if(flag16)flag16=0; }
}
//
void loop(){
t=millis();
if(t-t_pre>=1000){ t_pre=t;
if(++ss>59){ ss=0;
if(++mm>59){ mm=0; if(++hh>24)hh=0; }
}
sprintf(str,"%04d/%02d/%02d", y, m, d); lcd.setCursor(2,0); lcd.print(str);
sprintf(str,"%02d:%02d:%02d",hh,mm,ss); lcd.setCursor(4,1); lcd.print(str);
//-----------------------------------------
if(digitalRead(17)){
if(flag17==0){ flag17=1; toggle^=1; }
}
else{ if(flag17)flag17=0; }
//-----------------------------------------
if(toggle)button_date();
else button_time();
}
}
댓글 0
조회수 192등록된 댓글이 없습니다.