목차
5461AS
- 4 Digit 7-Segment
5461AS, 4 digit 제어
4자리 7세그먼트로 디스플레이하는 실험입니다.
부품 목록
부품명 | 아두이노 UNO R3 |
|
---|---|---|
기능 | 아두이노 모듈 | |
수량 | 1 | |
판매처 | https://kit128.com/goods/view?no=337 |
부품명 | 5461AS |
|
---|---|---|
기능 | 4 digit 7-segment | |
수량 | 1 | |
판매처 | https://kit128.com/goods/view?no=133 |
핀 연결
5461AS Pin | Arduino UNO R3 Pin | |
---|---|---|
Name | Number | |
DIG1 | 12 | 2 |
DIG2 | 9 | 5 |
DIG3 | 8 | 6 |
DIG4 | 6 | A0 |
A | 11 | 3 |
B | 7 | 7 |
C | 4 | A2 |
D | 2 | A4 |
E | 1 | A5 |
F | 10 | 4 |
G | 5 | A1 |
DP | 3 | A3 |
5461AS 핀 는 좌측 하단이 1번 이고, 좌측 상단이 16번 입니다.
소스코드
최신 소스코드는 [파일]=>[예제]=> [WhiteAT UNO]=>[Starter] =>[05_5461AS] 에 에 있으며
라이브러리는 아두이노 개발환경 을 참조하세요
/* 알찬 아두이노 세트(입문자용) 예제중 5461AS 4-Digit 7Segment FND 예제 입니다. 1234 등, 현재 타이머를 출력 하는 예제입니다. UNO R3 : https://kit128.com/goods/view?no=337 알찬 아두이노 세트(입문자용): https://kit128.com/goods/view?no=133 출처: http://whiteat.com/Arduino */ //Set anode interface int a = 3; int b = 7; int c = A2; int d = A4; int e = A5; int f = 4; int g = A1; int p = A3; //The decimal point //Set DIG1, DIG2, DIG3, DIG4 int d1 = 2; //Thousand int d2 = 5; //Hundred int d3 = 6; //Ten int d4 = A0;//One int val4 = 0; // DIG1 용 변수 int val3 = 0; // DIG2 용 변수 int val2 = 0; // DIG3 용 변수 int val1 = 0; // DIG4 용 변수 const int DELAY = 1000; // led display delay int val = 0; int digitpin[5] = { -1, d4, d3, d2, d1 }; #define _0 { HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, LOW} #define _1 { LOW, HIGH, HIGH, LOW, LOW, LOW, LOW} #define _2 { HIGH, HIGH, LOW, HIGH, HIGH, LOW, HIGH} #define _3 { HIGH, HIGH, HIGH, HIGH, LOW, LOW, HIGH} #define _4 { LOW, HIGH, HIGH, LOW, LOW, HIGH, HIGH} #define _5 { HIGH, LOW, HIGH, HIGH, LOW, HIGH, HIGH} #define _6 { HIGH, LOW, HIGH, HIGH, HIGH, HIGH, HIGH} #define _7 { HIGH, HIGH, HIGH, LOW, LOW, LOW, LOW} #define _8 { HIGH, HIGH, HIGH, HIGH, HIGH, HIGH, HIGH} #define _9 { HIGH, HIGH, HIGH, HIGH, LOW, HIGH, HIGH} int num_bit[10][7] = { _0, _1, _2, _3, _4, _5, _6, _7, _8, _9 }; void setup() { Serial.begin(115200); //Set baud rate 115200 pinMode(d1, OUTPUT); pinMode(d2, OUTPUT); pinMode(d3, OUTPUT); pinMode(d4, OUTPUT); pinMode(a, OUTPUT); pinMode(b, OUTPUT); pinMode(c, OUTPUT); pinMode(d, OUTPUT); pinMode(e, OUTPUT); pinMode(f, OUTPUT); pinMode(g, OUTPUT); pinMode(p, OUTPUT); } void loop() { val = millis() / 1000; val4 = (val / 1000) % 10; val3 = (val / 100) % 10; val2 = (val / 10) % 10; val1 = val % 10; if (val >= 1000) { clearLEDs(); pickDigit(4); pickNumber(val4); delayMicroseconds(DELAY); } if (val >= 100) { clearLEDs(); pickDigit(3); pickNumber(val3); delayMicroseconds(DELAY); } if (val >= 10) { clearLEDs(); pickDigit(2); pickNumber(val2); delayMicroseconds(DELAY); } if (val >= 0) { clearLEDs(); pickDigit(1); pickNumber(val1); delayMicroseconds(DELAY); } } void pickDigit(int x) { digitalWrite(d1, HIGH); digitalWrite(d2, HIGH); digitalWrite(d3, HIGH); digitalWrite(d4, HIGH); digitalWrite(digitpin[x], LOW); } void pickNumber(int n) { digitalWrite(a, num_bit[n][0]); digitalWrite(b, num_bit[n][1]); digitalWrite(c, num_bit[n][2]); digitalWrite(d, num_bit[n][3]); digitalWrite(e, num_bit[n][4]); digitalWrite(f, num_bit[n][5]); digitalWrite(g, num_bit[n][6]); } void clearLEDs() { digitalWrite(a, LOW); digitalWrite(b, LOW); digitalWrite(c, LOW); digitalWrite(d, LOW); digitalWrite(e, LOW); digitalWrite(f, LOW); digitalWrite(g, LOW); digitalWrite(p, LOW); } void dpoint() //Light the decimal point { digitalWrite(p, HIGH); }
결과
결과 동영상
제품 구매
알찬 아두이노 키트(초보자용) 은 https://kit128.com/goods/view?no=133 에서 구매하실 수 있습니다.
.