중급 예제

약간은 익숙하시거나 익숙해지셨나요? 그렇다면 조금더 깊이 다뤄볼까요?

매직 라이트 컵 모듈

2014-09-29 11:51:57

개요 및 부품 목록

수은 기울기 센서와 LED를 가진 2쌍이 하나가 되는 매직 라이트컵 모듈이 잇습니다.

이 모듈 2개를 연결한 후 한쪽으로 기울이게 되면 기울인 쪽 방향의 LED로 빛이 이동이 되는 재미있는 모듈입니다.(동영상 참고)


이번 컨텐츠에서는 매직 라이트컵 모듈을 알아보고 직접 사용해 보겠습니다.

 

 

미리 보기 동영상

 

 

 

 

부품 목록

 

NO 부품명 수량  상세설명
1 아두이노 우노 R3 1 아두이노
2 매직 라이트 컵 모듈 2 2개가 1쌍
3 브레드보드 1 브레드보드
4 점프케이블 8 점퍼케이블

 

 

부품명 오렌지보드 (또는 아두이노 우노 R3) 매직 라이트 컵 모듈 브레드보드 점퍼케이블
파트

 

 

하드웨어 Making 및 소프트웨어 Coding

회로도

 

브레드보드 레이아웃

 

연결 방법



각 모듈 왼쪽 부터 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

 

 

 

소프트웨어 Coding

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

항상 진취적이고, 새로운 것을 추구하는 코코아팹 에디터입니다!

매직 라이트 컵 모듈, 아두이노, 오렌지보드