카테고리 없음

예제 4.1 ~ 4.3

erase-jeong 2023. 10. 22. 01:26

[예제 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);

 

 

<코드 및 사진>