[알찬 아두이노] 5461AS, 4-Digit 7-Segment LED Display

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

 

.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다