코드 int seg[]={2,3,4,5,6,7,8,9}; byte digits[10][8]={ { 1,1,0,0,0,0,0,0 }, // 0 { 1,1,1,1,1,0,0,1 }, // 1 { 1,0,1,0,0,1,0,0 }, // 2 { 1,0,1,1,0,0,0,0 }, // 3 { 1,0,0,1,1,0,0,1 }, // 4 { 1,0,0,1,0,0,1,0 }, // 5 { 1,0,0,0,0,0,1,0 }, // 6 { 1,1,1,1,1,0,0,0 }, // 7 { 1,0,0,0,0,0,0,0 }, // 8 { 1,0,0,1,0,0,0,0 } // 9 }; void setup() { for (int i = 0; i < 8; i++) { pinMode(seg[i], OUTPUT); } } void loop() { for (int i = 0; i < 10; i++) { for (int j = 0; j < 8; j++) { digitalWrite(seg[j], digits[i][j]); } delay(1000); } } 사용한 FND는 5161BS 공통 애노드(+) 타입. 1자리 FND의 동작 예제는 하단의 관련포스트를 참조해주세요. 본 예제에서 사용하는 4자리 7세그먼트는 공통 캐소드 타입으로, 내부의 회로는 아래 그림과 같이 구성되어있습니다. 총 12개의 핀으로 구성되며 4개의 자리 수 선택 핀(Digit 1 ~ 4) 와 8개의 세그먼트 핀(A~G, DP)으로 구성됩니다. 4자리 FND는 아래 그림과 같이 Digit1~4 를 빠른 속도로 순차적으로 켜서 4자리 모두 불이 들어와 있는 것처럼 보이도록 코드가 작성되어야 합니다. 본 예제의 구성품은 아래와 같습니다. 타이머 인터럽트로 10ms 마다 인터럽트 서비스 루틴 호출하여 카운트한 값을 4-Digit 7-Segment 에 출력 하는 코드 입니다.
코드의 실행 결과는 아래 영상과 같습니다. |