3. 어두울 때 켜지는 무드등

by 이서희 | 2017-07-04 13:59
character mp3 노래 만들기 무드등 빛센서 쉬운 아두이노 캐릭터

재료

  • 캐릭보드 싱글박스 1개

대화하는 캐릭터를 만들어보고 싶었으나 먼저 빛센서 조명과 알람기능을 만들어보기로 했습니다.

그래서 먼저 주변이 어두워지면 빛이 켜지고 밝아지면 빛이 꺼지는 무드등을 만들어보겠습니다.

이번 스토리는 매우 간단합니다.


준비물

캐릭보드, 아두이노 나노, 아두이노 나노 케이블, 빛센서, 네오픽셀, 스탠드, 캐릭터


1. 빛 센서 연결하기

네오픽셀이 연결되어 있는지 확인하고 빛센서를 연결해보겠습니다.

빛센서는 다음과 같이 생겼습니다. 오른쪽에 달린 저항처럼 생긴 친구가 조도(빛)를 감지하는 기능을 맡고 있는 것 같습니다. 


회로도를 살펴볼까요? 점퍼선이 어디에서 어디로 연결되는지 잘 확인해주세요.


연결을 완료한 모습입니다.


2. 아두이노 프로그램 실행

네오픽셀 라이브러리는 이미 설치되어 있겠지요? 코드를 바로 실행해봅시다.

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
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
 
#define PIN 6
#define lightSensorPin A0 
 
Adafruit_NeoPixel strip = Adafruit_NeoPixel(5, PIN, NEO_GRB + NEO_KHZ800);
 
int red = 0;
int green = 0;
int blue = 0;
 
int lightVal = 0;
 
void setup() {
  strip.begin();
  Serial.begin(9600);
}
 
void loop() {
  lightVal = analogRead(lightSensorPin); //빛센서값 읽어오기
  delay(100);
  Serial.println(lightVal); //빛센서값 시리얼 창에서 확인하기
  
  if (lightVal < 400) { //밝을 때 불 끄기
    red = 0;
    green = 0;
    blue = 0;
  } else { // 밝지 않을 때 불 켜기
    red = 255;
    green = 255;
    blue = 255;
  }
  for (int i = 0; i < 5; i++) {
    strip.setPixelColor(i, strip.Color(red, green, blue));
    strip.show();
  }
 
}
 
cs


매뉴얼에 있는 코드를 그래도 실행해보았습니다.


너무 밝은 대낮이라 실내 등을 꺼도 어두워지지 않아서 아쉬운대로 손으로 조도센서를 가려보았습니다. 다행히 문제없이 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
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h>
#endif
 
#define PIN 6
#define lightSensorPin A0 
 
Adafruit_NeoPixel strip = Adafruit_NeoPixel(5, PIN, NEO_GRB + NEO_KHZ800);
 
int red = 0;
int green = 0;
int blue = 0;
 
int lightVal = 0;
 
void setup() {
  strip.begin();
  Serial.begin(9600);
}
 
void loop() {
  int check;
  lightVal = analogRead(lightSensorPin); //빛센서값 읽어오기
  delay(100);
  Serial.println(lightVal); //빛센서값 시리얼 창에서 확인하기
  
  if (lightVal < 400) { //밝을 때 불 끄기
    red = 0;
    green = 0;
    blue = 0;
    check=0;
  } else { // 밝지 않을 때 불 켜기
    check=1;
  }
  for (int i = 0; i < 5; i++) {
    if(check==1){
      if(i<2){
        red=255; green=0; blue=255;
      }
      else{
        red=0; green=255; blue=255;
      }
      strip.setPixelColor(i, strip.Color(red, green, blue));
      strip.show();
    }
    else if (check==0){
      strip.setPixelColor(i, strip.Color(red, green, blue));
      strip.show();
    }
  }
 
}
cs



실행시켜보았습니다.




역시나 손으로 조도센서를 가려보니 제대로 실행이 되는 것 같습니다. 언젠가 저녁시간에 실내등을 꺼보면서 실험을 해보는 걸로 하고 빛센서 무드등은 이만 마무리하도록 하겠습니다.

다음은 알람기능입니다.



댓글 0

MADE BY