【 아두이노모듈#5】 TM1637 4Digit Display #2. Data shift 하기
【 아두이노모듈#5】 TM1637 4Digit Display #2. Data shift 하기
지난시간 TM1637 FND (4 Digit Display)를 이용해서 스톱워치 를 만들어 보았다. 이번에는 0에서 15까지의 숫자를 차례로 시프트 시켜 출력해보려 한다.
10 이상의 숫자는 FND Digit의 1자리로는 표시가 불가능하기 때문에,
16진법에서 표시하는 방식으로 나타내려 한다.
(10→A, 11→B, 12→C, 13→D, 14→E, 15→F )
▶ 선수 학습 :
1. (모듈#4) TM1637 4Digit Display #1 (TM1637 기본 참고)☜ 강좌클릭
▶ TM1637 세부 스팩
※ TM1637 모듈은, CATALEX 사, Grove 사, 두 회사제품이 판매되고 있고, 두 제품 상호간 라이브러리 코드 내용이 조금 다르기 때문에, 코드를 컴파일 할 때, 프로그램 내용에 따라 에러가 날 수 있다. 이때는 해당 제품에 사용되지 않는 명령어(함수)를 찾아 내어 수정하면 된다. (여기서는 CATALEX 사 제품을 이용하였다)
▶ 실습 목표 :
- 숫자 1~F 까지 4자리씩 끊어서 출력해보자.
▶ 실습 회로도면 :
(이미지 클릭하면 확대 가능)
▶ 실습 절차 :
※ 라이브러리 다운로드 방법 :
(※ 현재, 깃 허브에서는 TM1637Display.h 파일만 검색되니, 라이브러리 메니저 창을 이용하기 바람)
▶ 프로그램 코드 및 설명 :
/* TM1637 .h 라이브러리 테스트 해보기*/
/* 0~15 까지 시프트출력 반복 [ 10~15는 A~F로 출력*/
#include "TM1637.h“
#define CLK 8 // 클럭 포트
#define DIO 9 // 데이터 입력 포트
TM1637 tm1637(CLK,DIO);
void setup ( )
{
tm1637.init(); // 초기화
tm1637.set(BRIGHT_TYPICAL);
// 밝기는 0~7 까지 설정 가능,
// BRIGHT_TYPICAL(초기값은) 2로 설정 되어 있음
}
void loop ( ) {
int8_t NumTab[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
// 0~9,A,b,C,d,E,F
int8_t ListDisp[4]; // 4자리 FND digit 수 설정
unsigned char i = 0;
unsigned char count = 0;
delay(150);
while(1)
{
i = count;
count ++;
if(count == sizeof(NumTab)) count = 0; // 배열 갯 수만큼 카운트
for(unsigned char BitSelect = 0;BitSelect < 4;BitSelect ++)
{ //한 번에 배열의 4자리 Data값을 출력할Digit 자리에 저장
ListDisp[BitSelect] = NumTab[i];
i ++;
if(i == sizeof(NumTab)) i = 0;
}
tm1637.display(0,ListDisp[0]); // 우측부터 첫 째 자리 Digit
tm1637.display(1,ListDisp[1]); // 우측부터 둘 째 자리 Digit
tm1637.display(2,ListDisp[2]); // 우측부터 셋 째 자리 Digit
tm1637.display(3,ListDisp[3]); // 우측부터 넷 째 자리 Digit
delay(400); // 숫자가 시프트 되어 표시 되는 시간 설정
}
}
(전체화면 보기로 보세요)
▶ 아두이노 파일다운 :
(다운받아서 압축을 풀어 사용하세요)