BASIC4MCU | 질문게시판 | 아두이노 7세그먼트 시계 중간 점표시
페이지 정보
작성자 타부니 작성일2022-11-17 11:38 조회1,137회 댓글1건본문
안녕하세요
우노로 시계를 만들고 싶어 이렇게 코드를 짜보았습니다.
시계의 모습으로 확실하게 보이고 싶은데
제가 짠 코드에선 분.초 사이에 점이 세그먼트에 표시되어있지 않습니다
점을 나타내기 위해 어떤 코드를 추가하면 될까요?
감사합니다
byte patterns[]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE4,0xFE,0xE6};
int digit_select_pin[]={10,11,12,13};
int segment_pin[]={2,3,4,5,6,7,8,9};
int SEGMENT_DELAY=5;
int hour=59;
int minutes=55;
unsigned long time_previous, time_current;
void setup() {
for(int i=0; i<4; i++){
pinMode(digit_select_pin[i],OUTPUT);
}
for(int i=0; i<8; i++){
pinMode(segment_pin[i],OUTPUT);
}
time_previous=millis();
}
void show_digit(int pos, int number){
for(int i=0; i<4; i++){
if(i+1 ==pos)
digitalWrite(digit_select_pin[i],LOW);
else
digitalWrite(digit_select_pin[i],HIGH);
}
for(int i=0; i<8; i++){
boolean on_off=bitRead(patterns[number],7-i);
digitalWrite(segment_pin[i],on_off);
}
}
void show_4_digit(int number){
number=number%10000;
int thousands=number/1000;
number=number%1000;
int hundreds=number/100;
number=number%100;
int tens=number/10;
int ones=number%10;
show_digit(1, thousands);
delay(SEGMENT_DELAY);
show_digit(2, hundreds);
delay(SEGMENT_DELAY);
show_digit(3, tens);
delay(SEGMENT_DELAY);
show_digit(4, ones);
delay(SEGMENT_DELAY);
}
void loop() {
time_current=millis();
if(time_current - time_previous >= 1000){
time_previous = time_current;
seconds++;
if(seconds == 60){
seconds = 0;
minutes++;
if(minutes == 60){
minutes=0;
}
}
}
show_4_digit(minutes * 100 + seconds);
}
댓글 1
조회수 1,137master님의 댓글
master 작성일
show_digit(1, thousands); delay(SEGMENT_DELAY);
show_digit(2, hundreds); digitalWrite(segment_pin[9],1); delay(SEGMENT_DELAY); // <--- 9번핀 1 출력
show_digit(3, tens); delay(SEGMENT_DELAY);
show_digit(4, ones); delay(SEGMENT_DELAY);