회로구성
• 2개의 7세그먼트 회로
동작
• 2개의 7세그먼트를 이용하여 1~99까지 카운트 할 수 있는 카운터
• 00 → 01 → 02 → … → 98 → 99 → 00 → 01 → 02 → …
• 최초 아두이노에 전원이 인가되면 00이 표시된다.
Tinkercad 구현
코드설명
전체코드
int btn = 19; // pin A5 == 19
int cur_btn_state = 0; // 현재 버튼 상태
int pre_btn_state = 0; // 이전 버튼 상태
int num1 = 0, num2 = 0; // num1 = 1의 자리 수, num2 = 10의 자리 수
int FND1[7] = {2,3,4,5,6,7,8}; //abcedfg
int FND2[7] = {9,10,11,12,13,14,15}; //abcedfg
int FND_data[10] = {0xC0, 0xF9, 0xA4, 0xB0,
0x99, 0x92, 0x82, 0xF8,
0x80, 0x90};
int get_btn_state()
{
while(1)
{
if(!digitalRead(btn)) // 버튼이 눌러진 상태 == LOW
{
while(!digitalRead(btn))
{ // 버튼이 눌러진 동안 아무것도 하지 않는다.
}
return !cur_btn_state;
}
}
}
void setup()
{
pinMode(btn, INPUT_PULLUP);
for(int i=0; i<7; i++)
{
// FND1 - 1의 자리 수
pinMode(FND1[i], OUTPUT);
digitalWrite(FND1[i], bitRead(FND_data[0], i));
// FND2 - 10의 자리 수
pinMode(FND2[i], OUTPUT);
digitalWrite(FND2[i], bitRead(FND_data[0], i));
}
}
void loop()
{
cur_btn_state = get_btn_state();
if((pre_btn_state == 0 && cur_btn_state == 1)||
(pre_btn_state == 1 && cur_btn_state == 0))
{
if(num1 == 0)
{
for(int i=0; i<7; i++)
digitalWrite(FND2[i], bitRead(FND_data[num2], i));
num2++;
if(num2>=10)
num2 = num2%10;
}
for(int i=0; i<7; i++)
digitalWrite(FND1[i], bitRead(FND_data[num1], i));
num1++;
if(num1>=10)
num1 = num1%10;
}
pre_btn_state = cur_btn_state;
}
Tinkercad 시뮬레이션 결과
'아두이노' 카테고리의 다른 글
아두이노 절전모드 (sleep mode (0) | 2021.05.17 |
---|---|
아두이노를 이용한 자동차 후방 센서 구현 : 초음파 거리센서+LED+피에조 (0) | 2021.05.16 |
아두이노와 7세그먼트를 이용한 16진수 카운터 (0) | 2021.05.16 |
아두이노에서 버튼으로 LED 제어하기 2 (0) | 2021.05.16 |
아두이노를 이용한 2개의 LED 제어 (0) | 2021.05.16 |