코코아팹은 누구나 창의적 아이디어를 현실로 만들어 낼 수 있도록
만들고, 공유하고, 배울 수 있는 터전이
되고자 합니다.
아이디와 비밀번호를 잊으셨나요?아이디 / 비밀번호 찾기
코코아팹 회원이 아니신가요? 회원가입
2014-09-29 11:51:57
수은 기울기 센서와 LED를 가진 2쌍이 하나가 되는 매직 라이트컵 모듈이 잇습니다.
이 모듈 2개를 연결한 후 한쪽으로 기울이게 되면 기울인 쪽 방향의 LED로 빛이 이동이 되는 재미있는 모듈입니다.(동영상 참고)
이번 컨텐츠에서는 매직 라이트컵 모듈을 알아보고 직접 사용해 보겠습니다.
NO | 부품명 | 수량 | 상세설명 |
1 | 아두이노 우노 R3 | 1 | 아두이노 |
2 | 매직 라이트 컵 모듈 | 2 | 2개가 1쌍 |
3 | 브레드보드 | 1 | 브레드보드 |
4 | 점프케이블 | 8 | 점퍼케이블 |
부품명 | 오렌지보드 (또는 아두이노 우노 R3) | 매직 라이트 컵 모듈 | 브레드보드 | 점퍼케이블 |
파트 |
각 모듈 왼쪽 부터 G, +, S, L 입니다.(위 사진과 같은 방향일 경우)
1번 모듈
|
아두이노 핀
|
2번 모듈
|
아두이노 핀
|
G(GND)
|
GND
|
G(GND)
|
GND
|
+(VCC)
|
5V
|
+(VCC)
|
5V
|
S(SIGNAL)
|
D7
|
S(SIGNAL)
|
D4
|
L(LED)
|
D5
|
L(LED)
|
D6
|
// 1번 모듈에 연결된 핀 D5, D7과 2번 모듈에 연결된 핀 D6, D4번을 선언.
int LedPinA = 5;
int LedPinB = 6;
int SPinA = 7;
int SPinB = 4;
// 각 수은 스위치 상태를 저장하는 변수와 LED밝기를 저장하는 변수 선언.
int buttonStateA = 0;
int buttonStateB = 0;
int brightness = 0;
void setup() {
pinMode(LedPinA, OUTPUT);
pinMode(LedPinB, OUTPUT);
pinMode(SPinA, INPUT);
pinMode(SPinB, INPUT);
}
void loop() {
// 1번 센서의 수은 스위치 값을 받아옵니다.
buttonStateA = digitalRead(SPinA);
// 1번 모듈의 수은 스위치가 OFF이고 밝기가 최대치가 아니면 밝기를 늘려줍니다.
if (buttonStateA == HIGH && brightness != 255) {
brightness ++;
}
// 2번 센서의 수은 스위치 값을 받아옵니다.
buttonStateB = digitalRead(SPinB);
// 2번 모듈의 수은 스위치가 OFF이고 불이 꺼져있지 않으면 밝기를 낮춰줍니다.
if (buttonStateB == HIGH && brightness != 0) {
brightness -- ;
}
// 각 LED에 밝기값을 세팅해줍니다.(각각 반대로 되도록)
analogWrite(LedPinA, brightness);
analogWrite(LedPinB, 255 - brightness);
delay(25);
}
// 1번 센서의 수은 스위치 값을 받아옵니다.
buttonStateA = digitalRead(SPinA);
// 1번 모듈의 수은 스위치가 OFF이고 밝기가 최대치가 아니면 밝기를 늘려줍니다.
if (buttonStateA == HIGH && brightness != 255) {
brightness ++;
}
// 2번 센서의 수은 스위치 값을 받아옵니다.
buttonStateB = digitalRead(SPinB);
// 2번 모듈의 수은 스위치가 OFF이고 불이 꺼져있지 않으면 밝기를 낮춰줍니다.
if (buttonStateB == HIGH && brightness != 0) {
brightness -- ;
}
각 모듈의 수은 스위치의 값을 받아와서 수은 스위치의 상태에 따라 brightness 의 값을 조절하여 LED의 밝기를 제어 합니다.
Case 1
- 1번 모듈의 수은 스위치가 OFF이고 2번 모듈의 스위치가 ON일 때(수은 스위치 센서는 연결되지 않았을 때 1, 연결되었을 때 0을 출력합니다.)
brightness 의 값을 늘려줘서 1번 모듈의 LED값을 늘려 주고 2번 모듈의 LED값을 내려 줍니다.
Case 2
- 1번 모듈의 수은 스위치가 ON이고 2번 모듈의 스위치가 OFF일 때 brightness의 값을 낮쳐줘서 1번 모듈의 LED값을 낮추고 2번 모듈의 LED값을 늘려줍니다.
// 각 LED에 밝기값을 세팅해줍니다.(각각 반대로 되도록)
analogWrite(LedPinA, brightness);
analogWrite(LedPinB, 255 - brightness);
각 모듈 LED의 불을 키는 부분입니다. 하나의 LED에서 불이 밝아지면 다른쪽 LED에서는 불이 꺼지게 만들어 줍니다. 같은 기준으로 밝기를 조절하면(brightness) 하나가 켜질 때 같은 비율로 다른한쪽은 불이 꺼지게 됩니다.
이렇게 되서 기울이게 되면 불빛이 전달이 되는 매직 라이트 컵이 됩니다.
kocoafabeditor
항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!