이 포스팅은 UNIST Prototyping 동아리 DINO의 이도영님의 아두이노 코딩강좌 내용을 바탕으로 정리하였습니다.
저번 포스팅의 micro-controller의 종류와 input에 이어서 이번에는 output을 살펴보자.
output도 역시 저번처럼 digital과 analog로 나누어서 살펴보자.
먼저 Digital
저번 포스팅에 썼던 input 핀들과 다르지 않다는 걸 눈치챘는가?
output에도 마찬가지의 pin들을 활용한다.
그럼 우리는 저번처럼 또 순진하게 그냥 아래처럼 digital output과 모터를 연결할 것이다.
그리고는 말할 것이다.
"아니 왜 안되냐.."
이유는 단순하다. 전류가 부족해서.
디지털 핀의 max 전류는 고작 7mA이다.
하지만 이 모터의 동작 전류는 0.3A~0.4A인데.. 이 때 사용하는 것이 바로 트랜지스터이다.
트랜지스터는 이와 같이 작은 전류를 트리거로 하여 큰 전류를 제어할 수 있다.
그리고 이것은....
요렇게 생겼다.
5V 핀에서 나오는 큰 전류를 연결하고 그 사이에 디지털 핀에서 나온 전류를 base로 하여 트랜지스터를 구성해 모터를 작동시킨다.
그럼 이제 Analog Output을 알아보자.
사실 아두이노 같은 디지털 기기는 아날로그 출력을 할 수 없다.
하지만! 앞선 포스팅에서 보았듯 아날로그 처럼 출력은 할 수 있다.
그렇기에 우리는 실제 디지털 출력을 마치 아날로그처럼 출력을 할 것이고.
따라서 아날로그 출력의 경우는 아날로그 핀이 아닌 디지털 출력 핀을 통해 출력할 것이다.
그래서 왼쪽과 같이 Pulse Width Modulation (PWM)개념을 이용하여 analog output을 제어할 것이다. 근데 이게 무슨말이야?
우리가 검은 막대를 왔다갔다 세차게 흔들면 무엇이 보이는지 생각해보자.
흔드는 양 끝점을 기준으로 가운데 부채꼴 모양의 회색 이동영역이 보일 것이다.
그리고 그 흔드는 속도가 느려질수록 그 영역은 거의 보이지 않거나 흐려질 것이다.
그런 원리를 이용해서 우리를 속이는 것이다.
LED가 1초에 500번 깜빡일 수 있다면
100%일 때는 계속 켜놓고
75%일 때는 0.03초켜고 0.01초 끄고를 반복하면 75% 밝게 보인다는 것이다.
그렇게 100%에서 점점 줄여나간다면?
우리는 그것을 깜빡인다고 보지 않고 점점 불빛이 약해진다.
즉 anlalog output처럼 인식하게 된다.
오늘은 여기까지. 다음은 circuit에 대해 알아보자.
'Programming > Arduino 아두이노' 카테고리의 다른 글
05. 아두이노 심화 - 유선통신 및 무선통신 센서들 알아보기 (0) | 2020.02.28 |
---|---|
04. 아두이노 심화 _ 통신 (Communication) / UART, I2C, SPI 통신 예제 (0) | 2020.02.14 |
03. 아두이노 기초 _ Power pins, circuit 회로, 간단한 input/output 예제 코드 (2) | 2020.02.14 |
01. 아두이노 기초 (micro-controller, digital input, analog input) (0) | 2020.02.13 |