아두이노2016. 12. 28. 16:44

해외 Maker 사이트인 Instructables 를 보다보니 3색 LED를 이용한 무드등 만들기가 올라와 있었다. 3색 LED가 서서히 색상이 변하고 섞이면서 신기한 색상의 변화를 즐길수 있는 무드등이다. 적당한 음악과 함께 켜 놓으면 연말연시 더욱 좋은 분위기를 낼 수 있을 것 같아서 따라해 보았다. 포토레지스터를 이용해서 주변이 밝으면 등이 꺼지고 어두워지면 등이 자동으로 켜지도록 되어 있다. 

아두이노 우노, 포토레지스터, 3색 RGB LED(또는 Red, Green, Blue 1개씩), 저항 1개(120킬로옴), A4용지 1장 정도 필요하다. 3색 LED에도 각 색상을 나타내는 단자마다 권장사항은 220옴 정도의 저항을 달아주는 것이 권장사항이긴 한데 이렇게하면 LED가 조금 어두워지는 경향이 있다. 내가 가진 LED를 저항 없이 연결해보니 12시간 이상 동작시켜도 이상이 없어서 처음에 저항을 연결했다가 나중에 빼버렸다. 그러나 자신이 가지고 있는 RGB LED 의 규격에 따라 아두이노나 LED가 맛이 갈 수 있으므로 저항의 연결은 개인의 선택에 맡긴다.


3색 RGB LED 는 위와 같은 구조를 가지고 있다. 각 4개의 핀이 있으며 각 핀의 길이에 따라 색상이 구분된다. 가장 긴 핀은 GND 단자이다. 연결시 참고해야 한다. 3색 LED 에 대해서 더 알고 싶다면 http://deneb21.tistory.com/210
포토레지스터에 대해서 알고 싶다면 http://deneb21.tistory.com/217


■ 연결

Mood_Lamp_RGB_LED.fzz

위의 연결은 3색 LED 하나를 이용할 경우의 연결이다.


Mood_Lamp_3_RGB_LED.fzz

위의 연결은 Red, Green, Blue 3개의 LED를 이용할 경우의 연결이다.


모두 연결한 모습이다. LED는 빛의 확산을 위해 A4용지로 감싸 주었다. 확산을 위한 다른 물체가 있다면 다른 것을 사용해도 된다. 하지만 A4용지로도 괜찮은 빛의 확산을 보여 주었다.

당연한 얘기지만 외부 빛의 감지를 위한 포토레지스터는 밖에 노출되어 있어야 한다. 그래야 어두우면 무드등이 켜지고 밝아지면 무드등이 켜지게 된다.


■ 소스

출처: http://www.instructables.com/id/Arduino-Mood-Lamp-1/

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
// ---------------------------------------------------
// 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

등이 어두워지면 켜지게 되어 있는데 어느정도 어두워졌을때 켜지는지의 설정은 소스 중 'if(ambientLight>600)' 의 600을 적절히 조절하면 된다. 값을 크게 할 수록 더욱 어두워져야 등이 켜진다.


위의 동영상과 같이 환상적인 색상의 변화를 볼 수 있는 무드등이 완성되었다.

반응형
Posted by 대네브 (deneb)

댓글을 달아 주세요

  1. 탐구생활

    마지막 동영상이 재생이 안되네요. 카카오TV 운영정책 위반으로 규제되었다고 나옵니다

    2017.06.14 01:00 [ ADDR : EDIT/ DEL : REPLY ]
    • 알려주셔서 감사합니다. 그런데 뭐가 잘못인거죠? 문제될게 없는데... 왜 잘린건지 궁금하네요;;;

      2017.06.14 21:44 신고 [ ADDR : EDIT/ DEL ]
  2. BICYCLE

    저 위에 아두이노 설계도는 어디서 그리거나 만드는 건가요? 아님 직접 그리시는 건가요??

    저두 그리고 시퍼여...ㅠㅠ 비번 1인뎅...ㅠ

    2017.07.17 22:39 [ ADDR : EDIT/ DEL : REPLY ]
  3. 정윤성

    혹시 제가 학교대회 아두이노 제작에 참고를 할건데용..아두이노 코드를 다 입력하고 실행을했더니 불은 잘 들어오는데 몇초있다가 서서이꺼지고 좀 오랜시간이 흐른후 다시 켜지고 점점불이 작아지다가 꺼지고 숨쉬기모드처럼 불이 작동하는데 중간에 불이꺼지고난 다음 딜레이를 어떻게 손보는지 알고 계신가요 ㅠ

    2019.11.17 20:41 [ ADDR : EDIT/ DEL : REPLY ]
  4. 정윤성

    영상에서는 보니까 빛이 꺼짐없이 계속 그라데이션이 반복되는데 저는 연결해보니 잘되다가 서서히 꺼지고 좀지나면 다시 켜지고 이러네요 ㅠ

    2019.11.17 20:51 [ ADDR : EDIT/ DEL : REPLY ]