예제 4.1 ~ 4.3
[예제 4.1] 변수 유형별 Arduino 에서 컴퓨터로 전송하기
<명령어>
<Sketch 구성>
<실습 결과>
(코드 x)
[예제 4.2] LED 밝기 조절
1. 밝기 조절 : 디밍 (Dimming)
1) LED에 입력되는 전력은 PWM(Pulse Width Modulation)을 이용하여 조절
2) PWM : 고속의 스위칭으로 High와 Low 신호의 비율을 조절하여 LED의 밝기, 모터의 회전 등을 조절하는 방법
3) Arduino 에서는 analogWrite( )명령어로 구현
4) Arduino UNO 의 경우 3, 5, 6, 8, 10, 11 번 핀이 PWM 을 지원한다.
(3, 5, 6, 8, 10, 11 ==> 아날로그 출력 가능)
<실습목표>
1.두개의LED의밝기를조절하자.
2.각각의LED가교차하며밝아졌다어두워졌다를 반복하도록 하자.
<H/W>
1.청색과적색LED의Anode핀을Arduino의 3번5번핀에연결한다. 2.Cathode핀에 330Ω저항을 연결하여저항의반대쪽은Arduino의GND에연결한다. 3.LED가 연결된핀에HIGH신호가출력될때LED가점등된다.
<회로도>
<명령어>
analogWrite(핀번호, 값)
- 정해진 핀에 아날로그 출력을 한다. 값에는 0 ~ 255 의 값을 넣는다.
<Sketch 구성>
1.LED의핀번호를설정한다.
2.setup()에서는 LED출력으로사용할핀을 출력핀으로 설정한다.
3.밝기를 저장할 변수를 설정한다.
4.하나의 LED가 밝아질 때 다른LED는 어두워져야 하므로 이를 조절할 변수를 설정한다.
5. loop()에서는 밝기와 밝기 변수 증감을 위한 변수를 조절하여 두개의 LED를 교차점멸시키는동작을반복한다
<실습 결과>
LED A와 B가 밝기가 변화하며 점멸한다
<코드>
/*예제 4.2
LED 밝기 조절
*/
const int ledA=3; //LED A를 3번 핀에 연결
const int ledB=5; //LED B를 5번 핀에 연결
int brightness=0; //밝기를 조절하기 위한 변수
int increment=1; //밝기 변수 증감을 위한 변수
void setup()
{
//analogWrite 핀에는 별도의 설정이 불필요하다.
}
void loop()
{
analogWrite(ledA, brightness); //LED A 밝기 조절
analogWrite(ledB, 255-brightness); //LED B 밝기 조절
brightness=brightness+increment; //밝기 조절
if((brightness>=255||(brightness<=0) increment=-increment; //밝기 변수 증감 방향 변경
delay(10); //0.01 초간 지연
}
[예제 4.3] RGB LED 로 색상 표현하기
RGB LED
1) 빛의 삼원색인 빨강, 초록, 파랑 빛을 조절하여 다양한 색을 표현하는 LED
2) 각각의 색이 0 ~ 255 단계로 조절됨
3) 간판, 조명기구 등에 사용
4) 모든 색이 출력될 떄 백색 빛을 출력
<실습 목표>
RGBLED를이용하여다양한색을표현해보자.
<H/W>
1.RGBLED는 Red,Green,Blue의 세 개의 Anode핀과 공통으로연결된캐소드핀으로구성 되어있다.
2.RGBLED단독으로연결하려면각Anode핀에330Ω의저항을연결해야한다.
3.저항이내장된RGBLED모듈을사용한다면별도의저항이필요없다.
4.Red,Green,Blue의 세 개의 Anode핀을 Arduino의 3,5,6번핀에 연결한다.
<Commands>
1) analogWrite(핀번호, 값)
정해진 핀에 아날로그 출력을 한다.
'값' 에는 0 ~ 255 의 값을 낳는다
•delay(지연시간)
지연시간에는잠시동작을지연시키기위한값을넣는다.
1/1000초단위로넣는다.
즉1초를지연시키기위해선1000의값을입력시킨다.
•for(변수=시작 값 ;조건;변수의증분){}
변수의시작값부터조건이만족하는경우'{}'내의명령을수행한다.
'변수의증분'에서는 1회명령이 수행될 때마다변수를 증가 혹은 감소시킨다
<Sketch 구성>
1.LED의핀번호를설정한다.
2.setup()에서는 LED출력으로사용할핀을출력핀으로설정한다.
3. ledOutput(int Red, int Green, int Blue)라는 함수를 만든다.
적색,녹색,청색 LED의 빛의세기를조합하여원하는색을출력하는함수이다.
4.적색,녹색,청색 LED의 세기를조절하면서LED에빛을출력시킨다
<실습 결과>
LED의 색상이 변화하면서 점등된다.
<코드>
const int RedLed=3; //3번핀에 연결
const int GreenLed=5; //LED B를 5번핀에 연결
const int BlueLEed=6;
void setup()
{
ledOutput(255,0,0);
delay(1000);
ledOutput(0,255,0);
delay(1000);
ledOutput(0,0,255);
delay(1000);
}
void loop()
{
for(int i=0;i<=255;++i){
ledOutput(255,i,0);
delay(10);
}
for(int i=0;i<=255,++i){
ledOutput(0,255,i);
delay(10);
}
for(int i=0;i<=255,++i){
ledOutput(i,0,255);
delay(10);
}
for(int i=0;i<=255,++i){
ledOutput(i,255,255);
delay(10);
}
for(int i=0;i<=255,++i){
ledOutput(255,i,255);
delay(10);
}
for(int i=0;i<=255,++i){
ledOutput(255,255,i);
delay(10);
}
}
void ledOutput(int Red, int Green, int Blue){
analogWrite(RedLed, Red);
analogWrite(GreenLed, Green);
analogWrite(BlueLed, Blue);
<코드 및 사진>