안녕하세요 Apple입니다.
오늘은 저번에 예고 했던것 처럼
Analog 신호를 이용하여 Led의 밝기 조절과
가변저항을 이용하여 Led를 제어 해보겠습니다.
준비물은 아두이노, Led, 220옴 저항,10K옴 가변저항
입니다.
일단 아날로그 신호를 이용하여
Led의 밝기를 조절해보겠습니다.
Led의 +극을 저항과 연결하여 3번핀에
-극은 GND로 연결 합니다.
아두이노에서 아날로그 신호를 출력 하는 핀이 따로 있는데요
~표시가 있는 핀이 아날로그를 지원해줍니다.
다른말로는 PWM 포트라고해요
일단
analogWrite()라는 처음보는 함수가 있는데요,
analogWrite()라는 함수는
아날로그를 지원하는핀(~ 표시있는거)을 이용하여
아날로그 신호로 출력 해주는 함수 입니다.
analogWrite의 첫번째 값은 해당 핀 번호고요
두번째 값은 출력량 입니다 범위는 0 ~ 255(8bit) 입니다.
analogWrite(LedPin, 0);는 출력량을 0으로
analogWrite(LedPin, 127);은 출력량을 127로
analogWrite(LedPin, 255);는 출력량을 255로
영상에서 보셨다시피
3가지의 밝기(0, 127, 255);로 나눴습니다.
다음으로 가변저항을 이용하여 Led를 제어 해보겠습니다
회로도
Led의 +극은 저항과 연결하여 5번핀에
-극은 GND
그리고 가변저항의 핀 3개중
왼쪽핀은 5V
중앙핀은 A0핀
오른쪽핀은GND에 연결 합니다.
아두이노에서는 아날로그 출력핀이 따로 있는것처럼
아날로그 출력핀이 따로 있는데요
바로 A0~으로 시작하는 핀 입니다.
아날로그 출력핀의 입력 범위는 0 ~ 1023입니다.
보통은 아날로그 입력 할때 쓰이기도 하지만
디지털 입.출력으로도 사용할수 있습니다
A0 = 14번핀
A1 = 15번핀
....
코드를 보시면 일단 아날로그 입력은 pinMode가 필요 없습니다
그리고 처음보는 함수 2개가 있는데요
일단 analogRead(); 라는 함수는
해당핀의 아날로그값을 읽어 오는 함수 입니다.
그래서 analogRead(A0);는
"A0핀을 아날로그 값으로 읽어오겠다" 라는 뜻이 됩니다.
하지만 아날로그 입력의 범위는 0 ~ 1023이고
아날로그 출력의 범위는 0 ~ 255입니다
그래서 0 ~ 1023의 범위를
0 ~ 255로 바꿔주는 작업을 해줘야하는데요
이때 필요한 함수가 map이라는 함수 입니다.
map이라는 함수는 어떠한 범위의 값을 다른 범위의 값으로
바꿔주는 작업을 해주는데요
예를들어 범위가 0 ~ 100 이라는 범위안에 50이라는 값이 있습니다.
이것을 0 ~ 1000이라는 범위안의 값으로 바꾸면
500이 되겠죠?
다시 코드로 돌아가서 우리는 0 ~ 1023의 범위안의 값을
0 ~ 255의 범위안의 값으로 바꿔야 합니다.
그래서 코드에서
i = map(i, 0, 1023, 0, 255);
라고 했는데요 이러면 0 ~ 1023범위 안에있는 i값이
자동으로 0 ~ 255범위 안의 값으로 바뀌어
다시 i에 저장됩니다.
map의 첫번째 값을 범위를 바꾸고 싶은 값
두번째 세번째는 첫번째 값의 범위
네번째 다섯번째는 바꾸고 싶은 범위 입니다.
(화면상으로는 밝기를 알기 힘드므로 지접 해보시기를 권장 합니다)
여기까지해서 Led를 아날로그 신호로 밝기 조절했고
가변저항으로 Led를 제어해보았습니다.
오늘 배운 analogRead라는 함수는
적외선 거리센서, 온도센서 등의 아날로그 센서에서 많이 사용되니
여러가지를 해보셔도 괜찮겠네요,
다음 포스트에서는 아두이노 시리얼 통신을 배워보도록 하겠습니다.
지금가지 Apple였습니다
감사합니다.
'Arduino&Processing' 카테고리의 다른 글
8. 프로세싱 점과 선을 그려보자! (0) | 2015.12.17 |
---|---|
7. Processing(프로세싱)을 설치 해보자! (0) | 2015.12.16 |
Jarduino-Uno-BTmini 초소형 아두이노Uno + Bluetooth (0) | 2015.12.15 |
6. 아두이노 피에조 스피커로 소리를 만들어 보자 (0) | 2015.12.15 |
5. 아두이노 시리얼 통신을 해보자! (0) | 2015.12.10 |