다섯번째 튜토리얼은 PWM을 이용하여 LED를 좀 다른 방식으로 켜봅니다.
참조한 원본 글은
http://arduino.cc/en/Tutorial/Fade 입니다.
디지털 핀에서 출력은 0V와 5V만 있기 때문에 LED를 연결해서 깜빡이게 만들더라도 켜지고 꺼지기를 반복하기만 합니다.
하지만 여기에서는 크리스마스 트리에 있는 전구처럼 천천히 밝아졌다가 다시 천천히 어두워지는 효과를 만들기 위해서 AnalogWrite함수를 이용합니다.
AnalogWrite의 인자로 주어지는 값이 255에 가까워지면 파형이 5V를 지속적으로 유지함으로 인해 계속 LED가 켜져있는 효과를 보여주게 됩니다. 반대로 0에 가까워지게 되면 5V를 유지하는 시간이 그만큼 짧아지기 때문에 LED가 꺼져있는 것 처럼 보입니다.
pulse-width modulation (PWM)를 사용하면 아날로그 신호와 유사한 신호를 디지털 신호로부터 만들어 낼 수 있습니다. 아두이노 보드 상에 ~표시가 있는 핀들이 PWM 핀들입니다.
듀티 사이클은 사각파가 HIGH일 때와 LOW상태 일 때의 시간 퍼센트입니다.
analogWrite() 함수를 이용하면 사각파의 듀티사이클을 설정할 수 있습니다. 인자로 0을 넘겨주면 사각파의 듀티사이클은 0 퍼센트가 된다. 항상 LOW상태이고 255를 넘겨주면 사각파는 듀티사이클 100퍼센트가 된다. 항상 HIGH 상태입니다.. 127을 넘겨주면 사각파의 듀티사이클은 50퍼센트가 됩니다. 일정 시간의 절반은 HIGH상태이고 나머지 절반은 LOW상태가 됩니다. 이 경우 절반의 밝기로 보이게 됩니다. 사람의 눈이 포착하기에는 너무 빠르게 밝기가 변하기 때문에 그렇게 보이는 것입니다. 마치 2.5V의 전압을 준것처럼 보이게 됩니다.
실제로 전압을 0,5V가 아닌 그 사이 값으로 변경해준게 아닌데 LED가 그런 약한 밝기로 보이는 것은 듀티사이클을 내렸기 때문이다. 그로인해 HIGH를 유지하는 시간이 짧아졌기 때문입니다.
이미지 출처 : http://arduino.cc/en/Tutorial/PWM
이미지 출처 : http://www.avrfreaks.net/forum/tut-c-newbies-guide-avr-pwm-incomplete?page=all
회로는 LED의 긴다리를 220옴 저항을 걸쳐 아두이노의 디지털핀 9번에 연결합니다.그리고 LED의 짧은 다리는 그라운드에 연결합니다.
analogWrite 함수는 0~255 사이의 값을 인자로 받을 수 있는데 ..
LED가 연결된 핀에 0에 가까운 값을 줄수록 LED는 어두워지고
반대로 255에 가까운 값을 주게되면 LED는 밝아집니다.
아래 프로그램은 LED가 점점 밝아졌다가.. 점점 어두워지는 것을 반복하게 됩니다.
- void setup() {
- pinMode( 9, OUTPUT );
- }
- void loop() {
- for ( int i=0; i<255; i++ ){
- analogWrite( 9, i );
- delay(5);
- }
- for ( int i=255; i>=0; i-- ){
- analogWrite( 9, i );
- delay(5);
- }
- }
'Arduino Uno' 카테고리의 다른 글
Arduino 예제 – cds + 캐릭터 lcd (0) | 2015.01.20 |
---|---|
아두이노 시리얼 명령으로 LED 켜고 끄기 (1) | 2015.01.20 |
아두이노 예제 - 풀다운 저항과 버튼 (0) | 2014.12.09 |
Arduino UNO - 5개의 LED를 순서대로 켜보기 (0) | 2014.10.10 |
Arduino Uno 개봉기 (2) | 2014.09.21 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!