목차
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 에서 구매하실 수 있습니다.
.


