5. 컬러 LED바 이해하기

Download Report

Transcript 5. 컬러 LED바 이해하기

컬러 LED바 이해하기
목차
1.
재료준비 및 브레드 보드 배선 구성하기
2.
컬러 LED바 이해 및 프로그램 실습
3.
응용 작품 만들기
1
준비물
준비하기
1) 아두이노 보드 (SPL-Duino V2 초보자용 보드)
2) USB 케이블
3) 키패드센서, 컬러 Led바
4) 브레드보드 실습 키트
2
브레드보드 배선 구성하기
전원 연결
아래 그림과 같이 브레드 보드를 연결해줍니다.
3
브레드보드 배선 구성하기
디지털 센서
• 3핀 LED바 준비하기
센서 선(s)으로 센서의 데이터 값을
읽고 쓰고 합니다.
LED바의 경우 디지털 핀에 사용합니다.
빨간색 선은
V (Voltage)를 의미합니다.
검정색 선은
G (GND)를 의미합니다.
4
브레드보드 배선 구성하기
센서 연결
LED바를 아래 그림과 같이 연결해줍니다.
LED 소자 : D2번핀에 연결
흰색 – 초록색
빨간색 – 빨간색
검은색 – 검은색
5
for반복문 이해하기
for 반복문
for 반복문이란?
- 일정 횟수 동안 for문장 안에 있는 내용을 반복하는 명령문
- for문에 사용되는 명령어는 초기값, 종결값, 변화조건을 이용
for(i=0; i<=10; i++)
초기값
종결값
변화조건
- 지정변수의 초기값을 설정하고 반복을 멈출 곳을 설정(종결값)하여 변수의 증감을
- 지정변수의 값을 변화조건에 의해 증감을 시켜 종결값에 도달하게 되면 반복을 멈춤
6
for반복문 이해하기
for 반복문
for(i=0; i<=10; i++)
{
}
i는 0으로 초기값을 설정하고
i가 10보다 작거나 같을 때까지
i를 i+1를 해줍니다.
해당 명령이 실행될 때마다
{}안에 있는 문장을 실행합니다.
7
for반복문 이해하기
for 반복문
명령문_1;
for(i=0; i<=10; i++)
{
명령문_2;
명령문_3;
}
명령문_4;
명령문_1을 실행하고 for문에 들어갑니다.
i가 0이고 10보다 작거나
같으니 i++을 해줍니다.
이 동작을 할 때마다
명령문_2와 명령문_3이
실행됩니다.
i가 11이 되어 종결값의
조건에 부합하여
for문을 나가 명령문_4를
실행하게 됩니다.
8
for반복문 이해하기
for 반복문
for문의 사용법
단일 명령어를 수행할 경우
for(i=0; i<=10; i++) 명령문_1;
명령문_2
for문안에 명령문이 하나일 경우 for문 바로 다음에 있는
명령문 하나만 반복하게 됩니다.
for문이 실행되어 명령문_1;을 반복하고 명령문_2;를 실행하게 됩니다.
9
for반복문 이해하기
for 반복문
for문의 사용법
2개 이상의 명령어를 수행할 경우
for(i=0; i<=10; i++)
{
명령문_1;
명령문_2;
}
2개 이상의 명령문을 반복시키기 위해선 {}를 사용해줘야 합니다.
사용하지 않을 시 하나의 명령문만 반복되게 됩니다.
{}사용함으로써 {}안에 있는 모든 명령문이 반복하게 됩니다.
10
for반복문 이해하기
for 반복문
void setup()
{
Serial.begin(115200);
}
void loop()
{
for (int i = 1;i <= 10;i=i+1)
{
Serial.println(i);
delay(10000);
}
}
소스를 실행시켜 i의 변화되는
모습을 관찰할 수 있습니다.
for의 초기값이랑 조건을 변화 시켜
직접 확인 해보십시오.
11
라이브러리 추가하기
LED바
라이브러리 추가하기
http://nulsom.com/source/NS_Rainbow.zip
위 주소를 입력하여 파일을 다운받습니다.
12
라이브러리 추가하기
LED바
라이브러리 추가하기
C:\Users\”사용자이름”\Documents\Arduino\libraries
다운받은 압축파일을 풀어서 위 경로에 복사해줍니다.
일반적으로 문서의 위치에 있습니다.
“사용자이름”은 컴퓨터 로그인 네임입니다.
13
라이브러리 추가하기
LED바
라이브러리 추가하기
1
다음과 같이 예제를 확인하면
라이브러리가 추가된 것을 확인할 수 있습니다.
2
3
14
LED바 이해하기
디지털 센서
• 3핀 LED바 특징
-
컨트롤러 내장형 풀컬러 고휘도 LED(WS2812B) 사용
높은 광도로 주간에도 색상 식별이 가능
LED 내부 컨트롤러 포함으로 LED 드라이버 회로 구성없이 사용 가능
마이크로 컨트롤러 포트 하나로 LED 제어 가능
FULL COLOR 24bit RGB (16,777,216가지) 색상 표현 가능
LED바 이해하기
LED바
LED바 명령어 이해하기
#include <NS_Rainbow.h>
- LED바의 헤더 파일을 불러옵니다.
프로그램 가장 첫 줄에 써줍니다.
NS_Rainbow ns_stick = NS_Rainbow(N_CELL,PIN);
- LED바의 세팅 명령어 입니다.
N_CELL은 LED바의 사용할 LED의 개수(한 개의 LED바는 8개의 셀)
PIN은 사용할 디지털 핀 번호를 적습니다.
ns_stick.begin();
- LED바 시작 명령어입니다.
void setup()에서 써줍니다.
16
LED바 이해하기
LED바
LED바 명령어 이해하기
ns_stick.setColor(n, RED, GREEN, BLUE);
- LED바의 색상을 컨트롤 하는 명령어입니다.
전부 숫자값을 입력하는 곳입니다.
첫 번째에는 몇 번째의 LED바를 사용할지 지정해 줄 수 있습니다.
참고로 0번부터 시작하니 첫번째 LED바를 사용하기 위해선
1이 아닌 0을 입력해야 합니다.
RED는 빨간색의 색상값을 입력합니다.
입력값은 0~255입니다.
(0,255,0,0)를 입력하였다면 LED바의 첫 번째 LED가 빨간색으로 지정됩니다.
GREEN은 초록색의 색상값을 입력하는 곳입니다.
BLUE는 파란색의 색상값을 입력하는 곳입니다.
ns_stick.show();
- 위의 색상 명령어를 입력하고 바로 다음에 입력해줘야 하는 명령어입니다.
색상값을 세팅만 하면 표시가 되지 않습니다.
ns_stick.show();를 사용해야 세팅된 색상값이 실제 표시가 됩니다.
ns_stick.clear();
- LED바를 초기화 해주는 명령어입니다.
17
마찬가지로 이 명령어를 사용한 뒤 ns_stick.show();를 바로 써주어야 합니다.
LED바 이해하기
LED바
LED바 명령어 적용하기
#include <NS_Rainbow.h>
NS_Rainbow ns_stick = NS_Rainbow(8,2);
void setup() {
delay(100);
ns_stick.begin();
}
void loop() {
unsigned int
소스를 입력해서 LED바의 색상을
확인해봅니다.
LED바의 헤더파일을 불러와
2번 디지털핀에 설정하여
8개의 LED바를 사용합니다.
색상값을 바꾸어 여러 가지 색상을
확인해봅니다.
t = 500;
ns_stick.setColor(0, 255, 0, 0);
ns_stick.show();
delay(t);
ns_stick.setColor(1, 0, 255, 0);
ns_stick.setColor(2, 0, 0, 0);
ns_stick.show();
18
응용 작품 만들기
실습
• 미션) for문을 이용하여 led바가 순차적으로 켜지게 하고 전부 켜지면
led바를 전부 끄고 반복하는 문장을 만드시오
19
응용 작품 만들기
실습
• 코드 예시)
#include <NS_Rainbow.h>
NS_Rainbow ns_stick = NS_Rainbow(8,2);
void setup() {
delay(100);
ns_stick.begin();
}
void loop() {
unsigned int t = 1000;
for(int i=0; i<=7; i++)
{
ns_stick.setColor(0, 255, 0, 0);
ns_stick.show();
delay(t);
}
ns_stick.clear();
ns_stick.show();
delay(t);
}
20
응용 작품 만들기
실습
• 미션) 키패드 센서를 이용하여 LED바의 색상을 바꾸는 문장을 작성하시
오
21
응용 작품 만들기
실습
• 코드 예시)
#include <NS_Rainbow.h>
NS_Rainbow ns_stick = NS_Rainbow(8,2);
int
int
int
int
int
green = 0;
white = 143;
blue = 743;
yellow = 506;
red = 328;
void setup() {
delay(100);
ns_stick.begin();
}
void loop() {
unsigned int t = 1000;
int a = analogRead(0);
if (a == green)
{
ns_stick.clear();
ns_stick.show();
22