제목: Color Mixing Lamp
참고: arduino.cc , <Arduino Projects Book>
실험 준비물 : LED with 4 legs, 220, 10k resistor, photoresistor
책자에는 45분짜리 라고 되어있는데 오랜만에 다시 실험을 하느라 한시간 넘짓 걸렸다. 이 실험은 다리가 4개인 LED를 사용하는 것으로 R,G,B 색 조합으로 어느 색상이든지 표현할 수 있다.
그림과 같이 회로는 구성할 수 있으며,
const int greenLEDPin = 9;
const int redLEDPin = 11;
const int blueLEDPin = 10;
const int redSensorPin = A0;
const int greenSensorPin = A1;
const int blueSensorPin = A2;
int redValue = 0;
int greenValue = 0;
int blueValue = 0;
int redSensorValue = 0;
int greenSensorValue = 0;
int blueSensorValue = 0;
void setup(){
Serial.begin(9600);
pinMode(greenLEDPin,OUTPUT);
pinMode(redLEDPin, OUTPUT);
pinMode(blueLEDPin, OUTPUT);
}
void loop(){
redSensorValue = analogRead(redSensorPin);
delay(5);
blueSensorValue = analogRead(greenSensorPin);
delay(5);
blueSensorValue = analogRead(blueSensorPin);
Serial.print("Raw Sensor Values \t Red: ");
Serial.print(redSensorValue);
Serial.print("\t Green: ");
Serial.print(greenSensorValue);
Serial.print("\t Blue: ");
Serial.print(blueSensorValue);
redValue = redSensorValue/4;
blueValue = blueSensorValue/4;
greenValue = greenSensorValue/4;
Serial.print("Mapped Sensor Values \t Red : ");
Serial.print(redValue);
Serial.print("\t Green: ");
Serial.print(greenValue);
Serial.print("\t Blue: ");
Serial.print(blueValue);
analogWrite(redLEDPin, redValue);
analogWrite(greenLEDPin, greenValue);
analogWrite(blueLEDPin, blueValue);
}
이것은 책을 보고 작성한 소스코드이다.
아두이노 문법은 함수를 만들어논 형태라서 함수가 어떤 기능을 하는지만 알고 있으면 쉽게 사용할 수 있다.
이대로 소스를 짜면 시리얼 모니터를 통해 볼 때 보기가 불편한데,
* 이유는 Serial.println을 사용하지 않아서이다. ln과 안붙은 것의 차이는 Print할때 한줄을 띄고 안띄고의 차이이다.
또한 실험중에 Photoresistor에 각각 R,G,B 색상의 셀로판지를 붙여서 그 빛의 양을 보는 것인데 파란색상이 없어서 그냥해서 정확히 결과를 보여주진 못했다. 손으로 가려도 일정 빛이상을 받아들이기에 두 색상을 가릴때 정확히 안가린 색상을 보여주는 결과는 나오지 않았다.
이 실험에 LED를 생각해보면 우리 스마트폰에도 있다. Samsung Galaxy S4에 상단에 LED가 바로 그것이다. 카카오톡 올때 노란색 문자올때 파란색 충전중일때 빨간색상이 들어오는 것 그것이 이 간단한 실험을 직접 적용한 것이라고 할 수 있다.
댓글 없음:
댓글 쓰기