BASIC4MCU | 질문게시판 | 아두이노 74138 시계 소스코드 여기까지 해봤는데..
페이지 정보
작성자 hktsakura 작성일2018-08-04 15:04 조회7,022회 댓글0건본문
#define PBA1 A0
#define PBA2 A1
#define PBA3 A2
#define PBA4 A3
#define SDA A4
#define SCL A5
#define PBS1 2 // 시간설정
#define PBS2 3 //
#define PBS3 4 //
#define PBS4 5 //
#define LED1 6 // RED_LED
#define LED2 7 // dp
const byte la_74138=8;
const byte lb_74138=9;
int pins[]={10,11,12,13};
int ON=HIGH,OFF=LOW;
int s1,s2,s3,s4,a1,a2,a3,a4;
int ms=0,s=0,m=0,h=0; // 시계
int ss=0,mms=0,mm=0; // 스톱워치
void setup() {
pinMode(PBS1,INPUT);
pinMode(PBS2,INPUT);
pinMode(PBS3,INPUT);
pinMode(PBS4,INPUT);
pinMode(PBA1,INPUT);
pinMode(PBA2,INPUT);
pinMode(PBA3,INPUT);
pinMode(PBA4,INPUT);
pinMode(LED1,OUTPUT);
pinMode(LED2,OUTPUT);
for(int i=0;i<4;i++){
pinMode(pins[i],OUTPUT);
}
pinMode(la_74138,OUTPUT);
pinMode(lb_74138,OUTPUT);
pinMode(SCL,OUTPUT);
pinMode(SDA,OUTPUT);
}
void loop(){
s1=digitalRead(PBS1);
s2=digitalRead(PBS2);
s3=digitalRead(PBS3);
s4=digitalRead(PBS4);
a1=digitalRead(PBA1);
a2=digitalRead(PBA2);
a3=digitalRead(PBA3);
a4=digitalRead(PBA4);
if(s1==HIGH&&s2==LOW){
digitalWrite(LED1,LOW);
if(s3==LOW&&s4==HIGH){
digitalWrite(LED2,HIGH);
}
if(s3==HIGH&&s4==LOW){
digitalWrite(LED2,LOW);
}
}
if(s1==LOW&&s2==HIGH){
digitalWrite(LED1,LOW);
}
if(s1==HIGH&&s2==HIGH){
ms++;
if(ms%20==0){
digitalWrite(LED1,!digitalRead(LED1));
}
if(ms>45){ ms=0; if(++s>59)s=0;m++;
}
if(ms^1){ // ms가 홀수면 초(sec) 일의 자리 출력
digitalWrite(la_74138,1);
digitalWrite(lb_74138,1); // 138 Y0 out
char t=s%10; // 초(sec) 일의 자리
for(int j=0;j<4;j++){
if(t&(1<<j))
digitalWrite(pins[j],1);
else digitalWrite(pins[j],0);
delay(1);
}
}
if(ms^10){ // ms가 짝수면 초(sec) 십의 자리 출력
digitalWrite(la_74138,0);
digitalWrite(lb_74138,1); // 138 Y1 out
char t=s/10; // 초(sec) 십의 자리
for(int j=0;j<4;j++){
if(t&(1<<j))
digitalWrite(pins[j],1);
else digitalWrite(pins[j],0);
delay(1);
}
}
if(m^1){ // 분 1의자리
digitalWrite(la_74138,1);
digitalWrite(lb_74138,0);
char t=m/60;
for(int j=0;j<4;j++){
if(t&(1<<j))
digitalWrite(pins[j],1);
else digitalWrite(pins[j],0);
delay(1);
}
}
if(m^10){ // 분 10의자리
digitalWrite(la_74138,0);
digitalWrite(lb_74138,0);
char t=h/10;
for(int j=0;j<4;j++){
if(t&(1<<j))
digitalWrite(pins[j],1);
else digitalWrite(pins[j],0);
delay(1);
}
}
delay(10);
}
}
일단 여기까지 코드를 짜봤는데 시계 동작이 이상해서...그리고 세그먼트 부분 밝기가 희미하게 나오더군여;;;
댓글 0
조회수 7,022등록된 댓글이 없습니다.