7448 ic를 이용하면 포트를 7개에서 4개로 줄일 뿐더러 bcd 코드를 입력하면 자동으로 a,b,c,d,e,f,g 중 무엇을 켜야하는지 자동으로 출력해줌!!!!!
#include <Arduino.h>
int bcd_pins[4] = {8,9,10,11};
int digit_pins[4] = {4,5,6,7};
void display_number(int num){
switch(num){
case 0:
digitalWrite(bcd_pins[0] , 0);
digitalWrite(bcd_pins[1] , 0);
digitalWrite(bcd_pins[2] , 0);
digitalWrite(bcd_pins[3] , 0);
break;
case 1:
digitalWrite(bcd_pins[0] , 1);
digitalWrite(bcd_pins[1] , 0);
digitalWrite(bcd_pins[2] , 0);
digitalWrite(bcd_pins[3] , 0);
break;
case 2:
digitalWrite(bcd_pins[0] , 0);
digitalWrite(bcd_pins[1] , 1);
digitalWrite(bcd_pins[2] , 0);
digitalWrite(bcd_pins[3] , 0);
break;
case 3:
digitalWrite(bcd_pins[0] , 1);
digitalWrite(bcd_pins[1] , 1);
digitalWrite(bcd_pins[2] , 0);
digitalWrite(bcd_pins[3] , 0);
break;
case 4:
digitalWrite(bcd_pins[0] , 0);
digitalWrite(bcd_pins[1] , 0);
digitalWrite(bcd_pins[2] , 1);
digitalWrite(bcd_pins[3] , 0);
break;
case 5:
digitalWrite(bcd_pins[0] , 1);
digitalWrite(bcd_pins[1] , 0);
digitalWrite(bcd_pins[2] , 1);
digitalWrite(bcd_pins[3] , 0);
break;
case 6:
digitalWrite(bcd_pins[0] , 0);
digitalWrite(bcd_pins[1] , 1);
digitalWrite(bcd_pins[2] , 1);
digitalWrite(bcd_pins[3] , 0);
break;
case 7:
digitalWrite(bcd_pins[0] , 1);
digitalWrite(bcd_pins[1] , 1);
digitalWrite(bcd_pins[2] , 1);
digitalWrite(bcd_pins[3] , 0);
break;
case 8:
digitalWrite(bcd_pins[0] , 0);
digitalWrite(bcd_pins[1] , 0);
digitalWrite(bcd_pins[2] , 0);
digitalWrite(bcd_pins[3] , 1);
break;
case 9:
digitalWrite(bcd_pins[0] , 1);
digitalWrite(bcd_pins[1] , 0);
digitalWrite(bcd_pins[2] , 0);
digitalWrite(bcd_pins[3] , 1);
break;
default:
digitalWrite(bcd_pins[0] , 0);
digitalWrite(bcd_pins[1] , 0);
digitalWrite(bcd_pins[2] , 0);
digitalWrite(bcd_pins[3] , 0);
break;
}
}
void display7segments(unsigned int value) {
for(int i = 0; i < 100; i++) {
display_number(value);
delay(10);
}
}
void setup() {
for(int i = 0; i < 4; i++) {
pinMode(bcd_pins[i], OUTPUT);
pinMode(digit_pins[i] , OUTPUT);
}
}
void loop() {
display7segments(5);
}