728x90
반응형
아두이노 프로젝트북 예제 4장
Color Mixing Lamp
목표 : 포토레지스터와 RGB LED를 통해서 PWM을 이해
사용한 부품 : 아두이노 UNO , 포토레지스터, RGB LED , 10K 저항 3개, 220ohm 3개
1. PWM 이란
Pulse width modulation은 펄스의 폭을 컨트롤하는 주기 제어방법 입니다
“On”되는 시간에 따라 그 주기가 달라집니다. 주기가 낮다면 그에 따라 전압이 약해집니다.
왜냐하면 전압이 꺼지는 시간이 대부분이기 때문입니다
PWM의 사용 용도 :
LED 흐리게 하기
아날로그 출력하기 출력하기
오디오 신호 만들기
모터 공급용 속도조절하기 속도조절하기
2. 포토레지스터(photoresistors)
글자 그대로 저항을 의미합니다. 하지만 약간 특이한 특성을 갖는데 빛의 세기에 따라서 그 값이 변합니다
3. RGB LED
일반적인 LED와 달리 4개의 다리를 가지고 있으며 전력의 양에 따라 각각 RGB 각각의 색상 밝기가 달라지고
가장긴다리가 - 극을 가집니다
회로도
코드
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 | const int gLedPin = 9; //제어할 핀번호 부여 const int rLedPin = 11; const int bLedPin = 10; const int rSensorPin = A0; //아날로그 포토센서 핀번호 const int gSensorPin = A1; const int bSensorPin = A2; int rVal = 0; // 색상별 각각 초기값 0 int gVal = 0; int bVal = 0; int rSensorVal = 0; // 센서초기값 0 int gSensorVal = 0; int bSensorVal = 0; void setup() { // put your setup code here, to run once: Serial.begin(9600); //전송속도 pinMode(gLedPin,OUTPUT); //해당핀번호에 출력 pinMode(rLedPin,OUTPUT); pinMode(bLedPin,OUTPUT); } void loop() { // put your main code here, to run repeatedly: rSensorVal = analogRead(rSensorPin); //각각 센서 연결된 핀의 값을 받아서 저장 delay(5); gSensorVal = analogRead(gSensorPin); delay(5); bSensorVal = analogRead(bSensorPin); delay(5); Serial.print("Raw Sensor Values /t RED : "); //저장된값 콘솔 출력 Serial.print(rSensorVal); Serial.print("/t GREEN : "); Serial.print(gSensorVal); Serial.print("/t BLUE : "); Serial.print(bSensorVal); rVal = rSensorVal / 4; //아날로그 신호값은 0~1023 이므로 0~255의 값을가지는 gVal = gSensorVal / 4; //LED 값에 맞추기위해 4로 나눔 bVal = bSensorVal / 4; Serial.print("Mapped Sensor Values \t RED : "); //각각 LED값 콘솔 출력 Serial.print(rVal); Serial.print("/t GREEN : "); Serial.print(gVal); Serial.print("/t BLUE : "); Serial.print(bVal); analogWrite(rLedPin,rVal); //LED 출력단자에 해당 값을 넣음 analogWrite(gLedPin,gVal); analogWrite(bLedPin,bVal); } | cs |
연결후 구동
소감 : 포토레지스터라는게 어떤용도로 쓰이며 전압차이를 직관적으로 알아볼수 있어서 흥미로웠습니다
응용해서 빛이 있으면 끄고 빛이 없으면 켜지는 LED같은거 만들어도 재미있을거 같습니다
728x90
'코스웨어 > 16년 스마트컨트롤러' 카테고리의 다른 글
2016-08-24_조재찬_스터디일지_C언어-구조체 (0) | 2016.08.25 |
---|---|
2016-08-22_조재찬_스터디일지_C언어-문자와 문자열 관련 함수 (0) | 2016.08.23 |
ORCAD 설치시 CPU 100% 사용문제 (0) | 2016.08.08 |
2016-07-05_조재찬_스터디일지-LCD 모듈 제어 (0) | 2016.07.05 |
리눅스 커널 4.6 공개··· ARM·터치 지원 등 강화 (0) | 2016.06.02 |
오픈소스 버그를 잡는 블랙덕 무료 툴 ‘Security Checker’OSS (0) | 2016.06.01 |
2016-05-22_조재찬_스터디일지-C# 클래스 복습 (0) | 2016.05.22 |
2016-05-20_조재찬_스터디일지-C# 메소드와 클래스 복습 (0) | 2016.05.20 |