아두이노 코딩에 의한 LED 밝기 조절
아두이노 예제를 열어보면 01.Basics에 Fade 예제가 있다. Fade 란 전등을 끄고 켬에 있어서 서서히 켜지거나 꺼지는 현상을 뜻한다.
digitalWrite(pin,HIGH) 와 digitalWrite(pin,LOW) 명령을 사용하게 되면 딱 2가지 전압 상태가 LED+전류제한 저항에 가해진다. 즉 일정한 밝기의 ON 과 OFF 뿐이다.
따라서 LED의 밝기를 서서히 밝아지게끔 코딩하기 위해서는 밝기 변수 brightness를 analogWrite() 명령을 사용하여 작은 값에 큰 값까지 서서히 바꾸어 줄 필요가 있다. 가능한 값의 범위는 0∼255이다.
analogWrite() 명령을사용함에 있어서 알아야 할 점 하나는 PWM(Pulse Width Modulation) 이 가능한 핀과 배선해야 한다는 점이다. 그림을 참조하면 PWM 핀에서 출력이 ON 되는 시간과 OFF 되는 시간이 일정 비율 즉 듀티(Duty) 비로 주어진다. 즉 analogWrite(0 명령에서는 이 비율의 조정이 가능하다는 뜻이다.
PWM이 가능한 핀을 알아보기 위해서는 아두이노 디지털 핀 0∼13번까지의 pinout 다이그램을 살펴보자. 3,5,6,9,10,11 번 핀들이 PWM 이 가능하며, 이 핀들에 대해서만 analogWrite() 명령 사용이 가능하다. Fade 예제에서는 9번 핀을 사용하기로 하자.
코드를 살펴보면 LED = 9 로 9번 핀을 지정한다. 첫 시작 시점에서 밝기 변수 brightness 의 값은 0 으로 둔다. 밝기 조절을 계속적으로 반복하는 loop()에서 loop()가 일회씩 실행될 때마다 fadeAmount = 5 만큼씩 brightness 값을 증가 시켜 나간다.
한편 analogWrite() 의 밝기 최대값이 255까지이므로 loop()가 일회씩 진행됨에 따라 만약 이 값에 도달했다면 방향을 바꾸어 fadeAmount = 5 만큼씩 brightness 값을 감소 시켜 나간다. brightness 값이 0 까지 감소되면 다시 증가시키기를 반복한다.
밝기 변수 brightness 가 0 인지 255 인지는 제어문인 if 를 사용하여 코딩한다.
시간지연 delay(30)은 30 msec 동안 LED 가 brightness 값으로 analogWrite() 명령이 실행된 상태를 유지한다,
아두이노 코딩에 의해서 LED 밝기 조절 실험을 위한 준비물은 LED ON OFF 실험과 같다.
단 청섹 LED를 빨간 색 LED 로 교체하였다.
LED와 220Ω 전류 제한 저항을 직렬 연결하여 빵판에 설치한다. 220Ω 전류 제한 저항의 색상 띠는 빨강 빨강 검정이다. 만약 220Ω 저항이 없을 경우 200∼470Ω 범위의 다른 저항을 사용해도 무방하다. 지정된 범위 보다 큰 값의 저항을 사용하게 되면 결국 LED에 가해지는 전압이 지나치게 작아져 LED ON이 되지 않는다.
LED는 다리가 긴 쪽이 + 이며 짧은 쪽이 – 이다. 전류제한 저항과 LED 는 그 연결 순서가 바뀔 수도 있다.
아래의 사진은 실제로 빵판에 청색 LED 와 220Ω 저항을 배선 후 각각 그 끝부분에 빨간색 점퍼선과 검정색 점퍼선을 사용하여 배선하였다. 그림에 의하면 빨간색 점퍼 선은 디지털 핀 9번에 연결하였고 검은 색 점퍼선은 GND에 배선 연결하였다.
배선이 완료되면 USB 케이블을 PC의 포트에 연결하고, PC에서 아두이노 스케치 코드 편집기를 열도록 한다. 앞에서 설명했던 것처럼 파일->예제->01.Basic->Fade를 선택 클릭하면 파일이 로딩된다.
코드 Fade를 불러 왔으면 툴탭을 열어 사용하는 보드의 종류를 정확히 지정하고 USB 케이블을 꽂은 USB 포트 위치 즉 COM 포트 번호를 정확히 선택해주어야 한다.
이 작업까지 완료되었으면 최종적으로 컴파일 업로딩 버튼을 누르도록 한다. 참고로 예제 코드는 불러서 사용은 가능하나 재저장이 안되게끔 되어 있다. 굳이 저장할 필요가 없으며, 만약 사용자가 코드를 수정하였다면 저장이 필요할 것이다.
이때 하단에 프로그레스 바(Progress bar)가 나타난다. 100% 완료되기 전까지 그대로 둔다. 100% 완료 되었다는 것은 컴파일이 완전히 되었고 아울러 아두이노 보드의 플레시 메모리에 코드가 성공적으로 업로딩 되었다는 것을 뜻한다.
윈도우즈에서 부팅이 가능하듯이 아두이노에서도 부트로더에 의해 업로딩된 코드가 부팅되어 실행된다, 한번씩 출렁하는 느낌으로 빨간색 LED 가 서서히 밝아졌다가 어두워지는 현상을 다음의 동영상에서 관찰해 보자. 아울러 사용자가 이 기법을 스타워즈 송이나 슈퍼 마리오 송에서 사용했던 digitalWrite() 명령을 대체하여 응용해 보도록 하자.
참고로 analogWrite() 명령을 사용하는 Fade 예제를 실행해 보기 위해서는 아래의 블로그를 참조하여 아두이노 스케치 편집기를 설치하도록 하자.
RepostingII: 초보자를 위한 아두이노 코딩연재-4: 아두이노 편집기(Arduino IDE) 다운로드 및 설치
https://steemit.com/kr/@codingart/repostingii-4-arduino-ide