일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- http://jeonghwan-kim.github.io/dev/2019/06/25/react-ts.html
- 게시판
- https://velog.io/@velopert/create-typescript-react-component
- 출처 : https://webdir.tistory.com/506
- 출처 : https://joshua1988.github.io/web-development/javascript/promise-for-beginners/
- object
- toString
- Today
- Total
Back Ground
아두이노 - 7 세그먼트 사용하기 본문
1.7 세그먼트 사용하기
7세그먼트는 아노드, 캐소드 방식 두 종류로 구분됩니다. 아노드 방식은 그림 과 같이 되어 있습니다. 아노드 방식은 다음과 같이 사용합니다. 먼저 VCC에 전원을 연결합니다. 그런 다음 A~G, DP핀에 전압을 0V로 설정하면 LED가 켜지고, 5V로 설정하면 꺼집니다.
캐소드 방식은 VCC가 아닌 GND를 연결합니다. 그 다음 전압을 5V로 하면 켜지고, 0V로 하면 꺼집니다.
2. 7 세그먼트 사용하여 카운터 만들기
스케치
// 7세그먼트에 표시할 숫자를 배열로 준비해놓습니다.
// 0은 끄는 것이고, 1은 켜는 것입니다.
byte digits[10][7] =
{
{ 0,0,0,0,0,0,1 }, // 0
{ 1,0,0,1,1,1,1 }, // 1
{ 0,0,1,0,0,1,0 }, // 2
{ 0,0,0,0,1,1,0 }, // 3
{ 1,0,0,1,1,0,0 }, // 4
{ 0,1,0,0,1,0,0 }, // 5
{ 0,1,0,0,0,0,0 }, // 6
{ 0,0,0,1,1,1,1 }, // 7
{ 0,0,0,0,0,0,0 }, // 8
{ 0,0,0,1,1,0,0 } // 9
};
void setup() {
// 2~9번 핀들을 모두 출력 모드로 설정합니다.
for(int i=2;i<10;i++) {
pinMode(i, OUTPUT);
}
// DP, 바로 점에 해당하는 부분을 켜줍니다.
digitalWrite(9, HIGH);
}
void loop() {
// 10번 반복하는 반복문을 만듭니다.
// 0에서 9까지 반복합니다.
for(int i=0;i<10;i++) {
// 1초 멈춥니다.
delay(1000);
// 7세그먼트에 숫자를 표시합니다.
displayDigit(i);
}
}
// 숫자를 표시하기 위해 만든 함수입니다.
void displayDigit(int num) {
// 핀이 2번부터 시작하기 때문에
// 핀 번호를 맞춰주기 위해 2라는 값을 pin이란 변수를 선언했습니다.
int pin = 2;
for(int i=0;i<7;i++) {
// 앞서 준비한 배열에서 값을 불러와서
// 숫자를 7세그먼트에 표시합니다.
digitalWrite(pin+i, digits[num][i]);
}
}
함 수
3. 버튼을 누르면 1씩증가하고, 1씩감소하는 카운터 만들기
11, 12에 각각 버튼을 연결합니다. 7세그먼트는 앞에서와 동일하게 연결하면 됩니다.
스케치
// 버튼 연결 핀 번호를 매크로 상수로 지정합니다.
#define PLUS 11
#define MINUS 12
// 현재 숫자를 기록하는 변수를 선언합니다.
int digit = 0;
// 7세그먼트에 표시할 숫자를 배열로 준비해놓습니다.
// 0은 끄는 것이고, 1은 켜는 것입니다.
byte digits[10][7] =
{
{ 0,0,0,0,0,0,1 }, // 0
{ 1,0,0,1,1,1,1 }, // 1
{ 0,0,1,0,0,1,0 }, // 2
{ 0,0,0,0,1,1,0 }, // 3
{ 1,0,0,1,1,0,0 }, // 4
{ 0,1,0,0,1,0,0 }, // 5
{ 0,1,0,0,0,0,0 }, // 6
{ 0,0,0,1,1,1,1 }, // 7
{ 0,0,0,0,0,0,0 }, // 8
{ 0,0,0,1,1,0,0 } // 9
};
void setup() {
// 버튼 핀들을 입력 모드로 설정합니다.
pinMode(PLUS, INPUT);
pinMode(MINUS, INPUT);
// 2~9번 핀들을 모두 출력 모드로 설정합니다.
for(int i=2;i<10;i++) {
pinMode(i, OUTPUT);
}
// DP, 바로 점에 해당하는 부분을 켜줍니다.
digitalWrite(9, HIGH);
}
void loop() {
// 증가 버튼이 눌렸는지 확인합니다.
if(digitalRead(PLUS) == HIGH) {
//눌렸다면 digit을 증가시킵니다.
++digit;
// digit이 9를 넘었는지 확인하고 넘었으면 0으로 만듭니다.
if(digit>9) {
digit=0;
}
}
// 감소 버튼이 눌렸는지 확인합니다.
if(digitalRead(MINUS) == HIGH) {
// 눌렸다면 digit을 감소시킵니다.
--digit;
// digit이 0 밑으로 내려갔는지 확인하고 내려갔으면 9로 만듭니다.
if(digit<0) {
digit=9;
}
}
// digit을 displayDigit 함수를 이용해 7세그먼트에 표시합니다.
displayDigit(digit);
// 0.1초 멈춥니다.
delay(100);
}
// 숫자를 표시하기 위해 만든 함수입니다.
void displayDigit(int num) {
// 핀이 2번부터 시작하기 때문에
// 핀 번호를 맞춰주기 위해 2라는 값을 pin이란 변수를 선언했습니다.
int pin = 2;
for(int i=0;i<7;i++) {
// 앞서 준비한 배열에서 값을 불러와서
// 숫자를 7세그먼트에 표시합니다.
digitalWrite(pin+i, digits[num][i]);
}
}
두 버튼을 이용해 7세그먼트에 표시된 숫자를 증가시키거나 감소시킬 수 있습니다.
코드 수정
A / B / C / D/ E/ F / G / DP
10 / 9 / 8 / 5 / 4 / 2 / 3 / 7
점을 아래로 해 좌는 위부터1~5 우는 위부터 10 ~ 6입니다.
캐노스 타입
해당사항은
http://old.devicemart.co.kr/mart7/mall.php?cat=052013001&query=view&no=19631
에 나와 있습니다.
최대한 교재 소스를 이용하기위해
배열의 0과 1만 바꾸었습니다.
브레드판의 7세그먼트 발 Pin : 우노보드 디지털
1: 그라운드
2: 7
3: 8
4: 6
5: 5
10:2
9: 3
8: 4
7: 9
6: 그라운드에 꽂으면 됩니다.
소스
// 7세그먼트에 표시할 숫자를 배열로 준비해놓습니다.
// 0은 끄는 것이고, 1은 켜는 것입니다.
byte digits[10][7] =
{
{1, 1, 1, 1, 1, 1, 0}, //0
{0, 1, 1, 0, 0, 0, 0}, //1
{1, 1, 0, 1, 1, 0, 1}, //2
{1, 1, 1, 1, 0, 0, 1}, //3
{0, 1, 1, 0, 0, 1, 1}, //4
{1, 0, 1, 1, 0, 1, 1}, //5
{1, 0, 1, 1, 1, 1, 1}, //6
{1, 1, 1, 0, 0, 0, 0}, //7
{1, 1, 1, 1, 1, 1, 1}, //8
{1, 1, 1, 1, 0, 1, 1} //9
};
void setup() {
// 2~9번 핀들을 모두 출력 모드로 설정합니다.
for(int i=2;i<10;i++) {
pinMode(i, OUTPUT);
}
// DP, 바로 점에 해당하는 부분을 켜줍니다.
digitalWrite(9, HIGH);
}
void loop() {
// 10번 반복하는 반복문을 만듭니다.
// 0에서 9까지 반복합니다.
for(int i=0;i<10;i++) {
// 1초 멈춥니다.
delay(1000);
// 7세그먼트에 숫자를 표시합니다.
displayDigit(i);
}
}
// 숫자를 표시하기 위해 만든 함수입니다.
void displayDigit(int num) {
// 핀이 2번부터 시작하기 때문에
// 핀 번호를 맞춰주기 위해 2라는 값을 pin이란 변수를 선언했습니다.
int pin = 2;
for(int i=0;i<7;i++) {
// 앞서 준비한 배열에서 값을 불러와서
// 숫자를 7세그먼트에 표시합니다.
digitalWrite(pin+i, digits[num][i]);
}
}
-------------7세그먼트 소스 와 설명
A / B / C / D/ E/ F / G / DP
10 / 9 / 8 / 5 / 4 / 2 / 3 / 7
점을 아래로 해 좌는 위부터1~5 우는 위부터 10 ~ 6입니다.
캐노스 타입
해당사항은
http://old.devicemart.co.kr/mart7/mall.php?cat=052013001&query=view&no=19631
에 나와 있습니다.
최대한 교재 소스를 이용하기위해
배열의 0과 1만 바꾸었습니다.
브레드판의 7세그먼트 발 Pin : 우노보드 디지털
1: 그라운드
2: 7
3: 8
4: 6
5: 5
10:2
9: 3
8: 4
7: 9
6: 그라운드에 꽂으면 됩니다.
소스
// 7세그먼트에 표시할 숫자를 배열로 준비해놓습니다.
// 0은 끄는 것이고, 1은 켜는 것입니다.
byte digits[10][7] =
{
{1, 1, 1, 1, 1, 1, 0}, //0
{0, 1, 1, 0, 0, 0, 0}, //1
{1, 1, 0, 1, 1, 0, 1}, //2
{1, 1, 1, 1, 0, 0, 1}, //3
{0, 1, 1, 0, 0, 1, 1}, //4
{1, 0, 1, 1, 0, 1, 1}, //5
{1, 0, 1, 1, 1, 1, 1}, //6
{1, 1, 1, 0, 0, 0, 0}, //7
{1, 1, 1, 1, 1, 1, 1}, //8
{1, 1, 1, 1, 0, 1, 1} //9
};
void setup() {
// 2~9번 핀들을 모두 출력 모드로 설정합니다.
for(int i=2;i<10;i++) {
pinMode(i, OUTPUT);
}
// DP, 바로 점에 해당하는 부분을 켜줍니다.
digitalWrite(9, HIGH);
}
void loop() {
// 10번 반복하는 반복문을 만듭니다.
// 0에서 9까지 반복합니다.
for(int i=0;i<10;i++) {
// 1초 멈춥니다.
delay(1000);
// 7세그먼트에 숫자를 표시합니다.
displayDigit(i);
}
}
// 숫자를 표시하기 위해 만든 함수입니다.
void displayDigit(int num) {
// 핀이 2번부터 시작하기 때문에
// 핀 번호를 맞춰주기 위해 2라는 값을 pin이란 변수를 선언했습니다.
int pin = 2;
for(int i=0;i<7;i++) {
// 앞서 준비한 배열에서 값을 불러와서
// 숫자를 7세그먼트에 표시합니다.
digitalWrite(pin+i, digits[num][i]);
}
}
참고 : Arduino 7 Segment 4 Digit LED
http://www.instructables.com/id/Arduino-4-digit-7-segment-display/
http://www.electroschematics.com/10512/arduino-4-digit-7-segment-led-display/
http://www.learningaboutelectronics.com/Articles/4-digit-7-segment-LED-circuit-with-an-arduino.php
'아두이노' 카테고리의 다른 글
아두이노 - 온도센서 (0) | 2016.06.21 |
---|---|
아두이노 - 온습도센서 (0) | 2016.06.21 |
아두이노 - LCD 패널 사용하기 (0) | 2016.06.21 |
아두이노 - 초음파 센서 사용하기 (0) | 2016.06.21 |
아두이노 - 조도 센서 사용하기 (3) | 2016.06.21 |