7. PWM 제어(1)

7.1 필요 부품

 

  • RGB LED 모듈 - 하나의 LED 안에 빨강, 초록, 파랑색 LED가 들어 있음.

 

  • 노란 버튼 모듈

 

7.2 배선

 

  • 아두이노 보드를 USB 케이블을 통하여 PC에 연결

 

  • LED R       ->  아두이노 DIGITAL PIN 5(빨강)

  • LED G       ->  아두이노 DIGITAL PIN 4(녹색)

  • LED B       ->  아두이노 DIGITAL PIN 3(파랑)

  • LED GND   ->  아두이노 GND(흑색)

 

  • 버튼 GND   ->  아두이노 GND(흑색)

  • 버튼 VCC    ->  아두이노 5V(백색)

  • 버튼 OUT    ->  아두이노 DIGITAL PIN 2(노랑)

 

 

7.3 프로그램 입력 및 실행

 

  • 아두이노 개발툴(IDE)을 실행

 

 

  • 다음과 같이 입력 또는 복사하기 -> 붙여넣기

 

//====================================================

 

int led_red=5;      // LED RED 핀 번호

int led_green=4;    // LED green 핀 번호

int led_blue=3;     // LED yellow 핀 번호

int sw=2;  // 스위치 핀 번호

volatile int delay_time = 10;

void sw_change() {

if ( digitalRead(sw) == HIGH)  delay_time = 1; else   delay_time = 10;

}

void setup()

{

  Serial.begin(9600);

 

  pinMode(led_red, OUTPUT);

  pinMode(led_green, OUTPUT);

  pinMode(led_blue, OUTPUT);

  pinMode(sw, INPUT);

  digitalWrite(led_red, LOW);

  digitalWrite(led_green, LOW);

  digitalWrite(led_blue, LOW);

  attachInterrupt(0, sw_change, CHANGE);

}

void loop()

{

int bright_R = 0;

int bright_G = 0;

int bright_B = 0;

for(bright_R = 0; bright_R < 256; bright_R++)

{

analogWrite(led_red, bright_R);

delay(delay_time);

}

for(bright_G = 0; bright_G < 256; bright_G++)

{

analogWrite(led_green, bright_G);

delay(delay_time);

}

for(bright_B = 0; bright_B < 256; bright_B++)

{

analogWrite(led_blue, bright_B);

delay(delay_time);

}

for(bright_R = 0; bright_R < 256; bright_R++)

{

analogWrite(led_red, 255-bright_R);

delay(delay_time);

}

for(bright_G = 0; bright_G < 256; bright_G++)

{

analogWrite(led_green, 255-bright_G);

delay(delay_time);

}

for(bright_B = 0; bright_B < 256; bright_B++)

{

analogWrite(led_blue, 255-bright_B);

delay(delay_time);

}

}

 

//====================================================

  • 프로그램 업로드 버튼 클릭

 

 

7.4 프로그램 동작

 

  • 프로그램이 시작되면 삼색 led가 순차적으로 점차 밝아지다가 점차 어두워지는 과정을 반복

  • 노란 버튼을 누르면 빠르게 진행함