무드등을 만들어 보자

by 하민정 | 2017-01-10 16:02
iot 무드등만들기 쉽고 간편하게 스마트홈 아두이노 안전한집 예쁜

재료

  • LDR ( 빛 감지 센서 ) 1개
  • 점퍼 와이어 1개
  • 파란색 LED 1개
  • 브래드 보드 1개
  • RGB LED ( 선택 ) 1개
  • 초록색 LED 1개
  • 종이 1개
  • 아두이노 우노 1개
  • 빨간색 LED 1개


다양한 무드등을 인터넷을 통해 접할 수 있지만, 

워낙 여러가지 기술을 사용할 수 있기 때문에

생각보다 간단하고 쉽게 무드등 만드는 프로젝트를 접하기 어려웠습니다. 


아두이노를 이용한 정말 간!단!한! 무드등 만들기 프로젝트

instructables 에서 발견하여 소개합니다. 


Step 1. 준비물 


                  


- 아두이노 우노 

- 점퍼 와이어 

- 1 RGB LED 혹은 < 1 빨간색 LED , 1 초록색 LED, 1 파란색 LED > 

- LDR ( 빛 감지 센서 ) 

- 브래드 보드 

- 종이 


Step 2. 하드웨어 연결방법 


▶ 빨간색 LED, 초록색 LED, 파란색 LED 를 사용 하는 경우 



1) 브래드 보드에 아두이노를 + 버스와, - 버스에 연결합니다. 

2) 빨간색, 초록색, 파란색 LED 를 아두이노의 9,10,11번 핀과 연결합니다. 

3) LDR 를 아두이노의 아날로그 0번핀과 브래드 보드의 - 버스에 연결합니다. 


▶ RGB LED 를 사용하는 경우 


1) 브래드 보드에 아두이노를 + 버스와, - 버스에 연결합니다. 

2) RGB LED 를 아두이노의 9,10,11번 핀과 연결합니다. 

3) LDR 를 아두이노의 아날로그 0번핀과 브래드 보드의 - 버스에 연결합니다. 


Step 3. 코드 


1
2
3
4
5
6
float RGB[3];
int ldrPin = 0;     // LDR in Analog Input 0 to read the ambient light
int ambientLight;   // variable to store the value of the ambient light
int redLed   = 11;  // red LED in Digital Pin 11 (PWM)
int greenLed = 10;  // green LED in Digital Pin 10 (PWM)
int blueLed  = 9;   // blue LED in Digital Pin 9 (PWM)
cs


LDR 로 감지한 주변 환경의 조도를 아날로그 0번으로 입력합니다. 

빛 감지 센서를 통해 전달 받은 값을 ambienLight 라는 변수에 저장합니다. 

LED를 각각 아두이노의 11번핀, 10번핀,  9번핀과 연결합니다. 


1
2
3
4
5
6
7
8
9
10
void setup(){
  pinMode(redLed,OUTPUT);  // tell arduino it's an output
  pinMode(greenLed,OUTPUT);// tell arduino it's an output
  pinMode(blueLed,OUTPUT); // tell arduino it's an output
 
  // set all the outputs to low
  digitalWrite(redLed,LOW);
  digitalWrite(greenLed,LOW);
  digitalWrite(blueLed,LOW);
}
cs


출력으로 빨간색, 초록색, 파란색 LED 혹은 RGB LED 로 나오도록 연결합니다. 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
void loop(){
  for (float x=0;x<PI;x=x+0.00001){
    RGB[0]=255*abs(sin(x*(180/PI)));           // calculate the brightness for the red led
    RGB[1]=255*abs(sin((x+PI/3)*(180/PI)));    // calculate the brightness for the green led
    RGB[2]=255*abs(sin((x+(2*PI)/3)*(180/PI)));// calculate the brightness for the blue led
    ambientLight=analogRead(ldrPin); // read an store the ambient light
    if(ambientLight>600){ // start only if the ambient light is very low
      //  write the brightness on the leds
      analogWrite(redLed,RGB[0]);
      analogWrite(greenLed,RGB[1]);
      analogWrite(blueLed,RGB[2]);
    }
    else{
      digitalWrite(redLed,LOW);
      digitalWrite(greenLed,LOW);
      digitalWrite(blueLed,LOW);
    }
    for(int i=0;i<3;i++){
      if(RGB[i]<1){
        delay(100);
      }
      if(RGB[i]<5){
        delay(50);
      }
      if(RGB[i]<10){
        delay(10);
      }
      if(RGB[i]<100){
        delay(5);
      }
    }
    delay(1);
  }
}
cs


프로젝트의 목적인 Smooth 하게 색깔을 변환하는 무드등 만들기를 위하여, 

각 LED 가 갖게 될 다음 값을 매번 계산하여 넣어 주었습니다. 


0부터 PI 사이의 각도에서 빨간색의 경우 각도의 사인값을 갖게 되고,  Red = sin(x)

초록색의 경우 각도에 PI/3 을 더한 각도에 사인값을 갖게 되고, Green = sin(x + PI/3)

파란색의 경우 각도에 2 * PI/3 을 더한 각도에 사인값으로 갖게 해 주었습니다. 

 Blue = sin(x + 2PI/3)


이렇게 세개의 LED가 합쳐진 결과, 

우리가 원했던 간!단!한! 예쁜 무드등을 만들 수 있습니다. 


다음은 전체 코드입니다. 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// Smooth RGB mood lamp
// Changes an RGB LED's color smoothly that only turns on
// when it's dark around it.
// Author: Ricardo Ouvina
// Date: 19/07/2012
// Version: 2.0
// ---------------------------------------------------
// The brightness of the leds follows these equations:
// Red = sin(x)
// Green = sin(x + PI/3)
// Blue = sin(x + 2PI/3)
// for x from 0 to PI
// ---------------------------------------------------
 
float RGB[3];
int ldrPin = 0;     // LDR in Analog Input 0 to read the ambient light
int ambientLight;   // variable to store the value of the ambient light
int redLed   = 11;  // red LED in Digital Pin 11 (PWM)
int greenLed = 10;  // green LED in Digital Pin 10 (PWM)
int blueLed  = 9;   // blue LED in Digital Pin 9 (PWM)
 
void setup(){
  pinMode(redLed,OUTPUT);  // tell arduino it's an output
  pinMode(greenLed,OUTPUT);// tell arduino it's an output
  pinMode(blueLed,OUTPUT); // tell arduino it's an output
 
  // set all the outputs to low
  digitalWrite(redLed,LOW);
  digitalWrite(greenLed,LOW);
  digitalWrite(blueLed,LOW);
}
 
void loop(){
  for (float x=0;x<PI;x=x+0.00001){
    RGB[0]=255*abs(sin(x*(180/PI)));           // calculate the brightness for the red led
    RGB[1]=255*abs(sin((x+PI/3)*(180/PI)));    // calculate the brightness for the green led
    RGB[2]=255*abs(sin((x+(2*PI)/3)*(180/PI)));// calculate the brightness for the blue led
    ambientLight=analogRead(ldrPin); // read an store the ambient light
    if(ambientLight>600){ // start only if the ambient light is very low
      //  write the brightness on the leds
      analogWrite(redLed,RGB[0]);
      analogWrite(greenLed,RGB[1]);
      analogWrite(blueLed,RGB[2]);
    }
    else{
      digitalWrite(redLed,LOW);
      digitalWrite(greenLed,LOW);
      digitalWrite(blueLed,LOW);
    }
    for(int i=0;i<3;i++){
      if(RGB[i]<1){
        delay(100);
      }
      if(RGB[i]<5){
        delay(50);
      }
      if(RGB[i]<10){
        delay(10);
      }
      if(RGB[i]<100){
        delay(5);
      }
    }
    delay(1);
  }
}
 
cs


Step 4. 수행 결과 












댓글 1

MADE BY

무드등을 만들어 보자 현재글 가습기를 만들어 보자 이전글