Arduino Uno 로 10Segment 를 사용하는 방법을 알아보고 CDS 조도센서를 사용해서
심플 라이트 메터 Simple Light Meter 를 만들어 보는 프로젝트 입니다
<10Segment 모듈 이미지>
10세그먼트 모듈은 10개의 LED를 하나의 하우징으로 구성해서 사용할수 있게끔 만든 모듈입니다
(적색, 파란색, 녹색, 노란색, 여러색상이 섞인 제품 등 다양한 모듈이 판매되고 있습니다)
10개의 LED를 바 그래프 처럼 활용해서 프로토타이핑 프로젝트등 여러가지로 활용이 가능합니다
사용된 부품
Arduino Uno R3 (Italy)
10세그먼트 LED 바 그래프 - 적색
CDS 조도센서
막대저항 220 Ohm - 10개
막대저항 10K Ohm - 1개
포텐셔미터(전위차계) 10K Ohm - 1개
미니브래드보드
점퍼케이블(숫놈-숫놈)
사용된 키트
아두이노 라이트 메터 키트
구성 배선도 - 10세그먼트 차례로 점등시켜 보기 & 점등속도 조정해 보기
구성 배선도 - 포텐셔미터를 이용해서 10세그먼트 차례로 점등시켜 보기
구성 배선도 - CDS 조도센서를 사용해서 간단한 Light Meter 만들어 보기
사용된 예제소스
테스트 방법
별도의 라이브러리를 사용하지 않으므로 테스트 방법은 간단합니다
위 첨부된 예제 소스를 다운로드 해서 업로드 해주고 테스트 하면 됩니다
먼저 10세그먼트 10segment 테스트 예제를 살펴보면
void setup() { // 초기화
for(int i = 2; i<12; i++) // 디지털2번핀부터 11번핀까지 출력설정
{
pinMode(i, OUTPUT);
}
2~11번 핀을 사용하는것을 확인할 수 있습니다
셋업에서 2~11번핀 출력세팅후 LOW에서 0.3초 간격으로 HIGH 로
2~11번 핀의 LED를 차례대로 점등시키는것을 루프에서 반복합니다
void loop() { // 무한루프
for(i = 2; i<12; i++) // 디지털2번~디지털11번핀까지 0.3초간격으로 ON
{
digitalWrite(i, HIGH);
delay(300);
}
아주 간단하며 위 첨부된 10세그먼트 10segment 테스트_활용 예제 는 ON/OFF 되는 시간과
딜레이 타임을 수정해서 조금더 빠르게 LED가 점등될수 있도록 수정하였습니다 (하단 동영상 참조)
10세그먼트 10segment 포텐셔미터 예제를 살펴보면
//declares all the pin connections to the arduino board
const int LED1= 11;
const int LED2= 10;
const int LED3= 9;
const int LED4= 8;
const int LED5= 7;
const int LED6= 6;
const int LED7= 5;
const int LED8= 4;
const int LED9= 3;
const int LED10= 2;
const int potentiometer= A0;
int value=0;
역시 2~11번 핀의 LED를 A0번 핀에 연결된 포텐셔미터의 아날로그 출력값의 변화에 따라서
제어할수 있도록 되어있습니다
void setup()
{
pinMode(LED1, OUTPUT);
pinMode(LED2, OUTPUT);
pinMode(LED3, OUTPUT);
pinMode(LED4, OUTPUT);
pinMode (LED5, OUTPUT);
pinMode (LED6, OUTPUT);
pinMode (LED7, OUTPUT);
pinMode (LED8, OUTPUT);
pinMode (LED9, OUTPUT);
pinMode (LED10, OUTPUT);
pinMode (potentiometer, INPUT);
Serial.begin(9600);
}
셋업에서 포텐셔미터의 아날로그 입력에 따라서 10개의 LED가 출력 되도록 설정합니다
void loop()
{
value= analogRead(potentiometer);
Serial.println(value);
//all LEDs are off
if (value == 0)
{
digitalWrite (LED1, LOW);
digitalWrite (LED2, LOW);
digitalWrite (LED3, LOW);
digitalWrite (LED4, LOW);
digitalWrite (LED5, LOW);
digitalWrite (LED6, LOW);
digitalWrite (LED7, LOW);
digitalWrite (LED8, LOW);
digitalWrite (LED9, LOW);
digitalWrite (LED10, LOW);
}
루프에서는 if문을 사용해서 아날로그 value 값에 따라서 10개의 LED가 처음엔 LOW 였다가
일정수치 이상이 되면 HIGH가 될수 있도록 세팅하고 이를 반복합니다
//lights up 1 LED
if ((value >0) && (value < 103))
/lights up 2 LEDs
if ((value >= 103) && (value < 205))
//lights up 3 LEDs
if ((value >= 206) && (value < 308))
.
.
.
//lights up 10 LEDs
if ((value >= 922) && (value < 1023))
포텐셔미터 아날로그 출력값에 맞춰야 하므로 Value는 0~1023범위 이어야 합니다
*구성배선도의 포텐셔미터의 VCC쪽과 GND쪽을 반대로 배선하면 LED를 역순으로 제어할 수 있습니다*
마지막으로 10세그먼트 10segment 조도센서 예제를 살펴보면
void setup ()
{
for (int i = 2; i <=11; i ++)
{
pinMode (i, OUTPUT);
}
}
셋업에서 역시 2~11번까지의 LED핀 출력할 수 있도록 세팅합니다
void loop ()
{
int ldrvalue = analogRead (A0);
int k = map (ldrvalue, 0, 1000, 2, 11);
for (int j = 3; j <14; j ++)
{
if (j <= k)
digitalWrite (j, HIGH);
else
digitalWrite (j, LOW);
}
}
루프에서 역시 아날로그 value K 값의 범위를 설정해서 if문을 사용해서 HIGH/LOW로 LED를 제어합니다
CDS 조도센서의 사양에 따라서 출력값이 약간씩 틀릴수 있으므로
배선과 예제코드 업로드 후 실내가 밝음에도 불구하고 점등되지 않은 LED가 있는경우
(ldrvalue, 0, 1000, 2, 11); 를 (ldrvalue, 0, 800, 2, 11); 으로 수정해 주고 재업로드 후 테스트해 봅니다
프로젝트 동영상 - 10세그먼트 차례로 점등시켜 보기
프로젝트 동영상 - 10세그먼트 차례로 점등시켜 보기 - 점등속도 조정해 보기
프로젝트 동영상 - 전위차계를 이용해서 10세그먼트 차례로 점등시켜 보기
프로젝트 동영상 - CDS 조도센서를 사용해서 간단한 Light Meter 만들어 보기
이렇게 다양한 방법으로 10세그먼트 모듈을 제어할수 있으며 CDS 조도센서 뿐만아니라
다른 아날로그 센서를 연결해서 프로젝트에 적용할 수도 있습니다
'Arduino(아두이노) 활용 강좌' 카테고리의 다른 글
Arduino Uno 로 KY-038 사운드 센서를 사용해서 심플 사운드 메터 만들어 보기 (0) | 2022.04.02 |
---|---|
Arduino Uno 로 MFRC-522 RC522 RFID 모듈과 서보모터를 사용해 도어락 만들어 보기 (2) | 2021.12.24 |
Arduino Uno 로 APDS-9960 제스쳐 센서를 사용해서 제스쳐 감지시 0.96 I2C OLED에 방향별 이미지 출력해 보기 (0) | 2021.12.10 |
Arduino Uno 로 TCS3200/230 컬러인식 센서 모듈을 사용해서 3색 RGB LED 제어해 보기 (0) | 2021.12.07 |
Arduino Uno 로 3색 RGB 모듈과 HC-06 블루투스 모듈을 사용해서 미니 스마트 무드등 만들어 보기 (0) | 2021.05.10 |
댓글