아두이노 코딩-115: WeMos LOLIN 3색 LED 밝기 조절

in #kr6 years ago (edited)

noname01.png

LOLIN 보드에서 analogWrite() 명령이 지원하지 않는 점을 극복하기 위한 대체 코딩으로서 좀 복잡하지만 LOLIN 보드의 채널, 타이머 해상도, 주파수 설정과 아울러 ledcWrite 명령을 사용하여 하나의 LED를 대상으로 밝기 조절이 가능하였다.

이번에는 하나의 몸체에 3개의 색상별 LED가 함께 들어 있는 RGB LED 즉 3색 LED의 밝기를 돌아가면서 조절해 보자. 내부적으로 3개의 LED 로 구성되어 있다. 각각 전압을 가하면 색상을 볼 수 있으며 동시에 2개를 ON 시키면 빛의 합성 색이 얻어지기도 한다. 3색 LED를 ON OFF 하기 위한 회로 구성은 다양한 방법이 있을 수 있지만 간단한 회로 구성을 위해 전류제한 저항은 220Ω 1개를 사용하도록 회로를 구성하자. 만약에 동시에 2개 또는 3개의 LED 가 동시에 연결되는 경우에도 전류 제한 저항이 하나라고 해서 과대 전류가 흐를 염려는 없다.

LOLIN 보드에서 LED를 ON 시키기 위해서는 digitalWrite() 명령 외에 analogWrite() 명령을 대신하는 ledcWrite 명령이 있다. LED의 밝기를 조절하기 위한 회로 구성에서 아두이노 LOLIN 보드의 디지털 핀 중에서 물결 표시(∼)가 있는 즉 PWM이 가능한 핀에 배선해야 하는데 다행스럽게도 LOLIN 보드의 디지털 핀은 거의 전부가 PWM 이 가능하다.

3색 LED의 밝기를 조절하기 위한 LOLIN 보드의 디지털 핀 4번, 5번, 18번 핀을 사용하기로 한다. PWM 이 가능한 물결 표시(∼)가 있는 디지탈 18번 핀에 청색, 4번 핀에 녹색, 5번 핀에 빨간색을 배선한다.

RGB 3색 외에도 RGB 의 혼합도 가능하다. 한편 다리 길이가 가장 긴 RGB LED 의 COMMON 선은 220Ω 저항과 연결하되 전류 제한 저항의 다른 한쪽은 GND 즉 0V에 흑색으로 배선한다. 위에 첨부한 꾸며진 배선 사진에서 숫자는 LOLIN 보드 뒷면의 핀 번호를 뜻한다.

여기까지가 배선 준비 단계이다. 지난번 성공적으로 ledcWrite 예제를 실행 시킨 후 코드를 수정하여 2개의 청⦁홍 LED의 밝기 제어를 시도하였으나 성공하지 못했다. 아두이노 코딩의 성격이 좀 오래 했다고 해서 경험은 좀 늘었으나 도를 닦는 것처럼 혜안이 생기는 것은 아니다. 쉽게 말하면 초보자와 그다지 다를게 없다는 점이다.

이미 10일이 지나 여유를 가지고 다시 예제를 살펴 본 결과 3색 LED ledcWrite 예제가 있었다. 사실 지난번 작업할 때도 보았던 것이 사실이지만 폭염 때문인지 마음의 여유가 없었던 것 같다.

필자에게는 보유한 3색 LED가 단 하나 있기는 한데 이번이 사실 3번째 사용이다. 1년 전 초창기에 아두이노 우노에서 한번, 얼마 전 아두이노에서 게임 송 연주 시 비쥬얼러이제이션 코딩 그리고 이번 LOLIN 밝기 조절이다.

파일⤍예제⤍ESP32⤍AnalogOut⤍ledcWrite_RGB 예제를 불러 오자.

noname02.png

헤더 영역에 배선을 위한 디지털 핀 안내가 있음을 볼 수 있다. A4, A5, A18! 이 단계에서 어려운 점은 몇 번 언급했지만 평가 단계의 보드이기 때문에 정보의 정확성을 확인할 길이 없으므로 자연적으로 인격 수양의 한계로 인한 무식함이 배어 나오게 된다.

배선은 4, 5,18번으로 되어 있으므로 일단 그대로 컴파일 업로딩 해버린다. 결과를 보니 이상 야릇하게 초록색 빛이 들어오긴 했다.

이때부터 아무 생각없이 다시 pinout 다이아그램을 검색하기 시작한다. 사실 pinout 다이아그램 조차 A4, A5, A18 핀을 정확히 지적해 주는 pinout 다이아그램은 없었다. 나올게 없음을 뻔히 아는데 되풀이 하는 것이다. 대개 사람들이 외통수에 몰리게 되면 많이 하는 전형적인 행동 양상이다.

항상 겪는 아두이노 코딩이지만 몇 가지 경우의 가능성을 염두에 두고 뭔가를 바꿔보아야 한다는 전략 외에는 없다. 이때 생각한 것이 NodeMCU 나 WeMos D1 R1(Retired)에서는 핀 번호 앞에 알파벳 D를 추가해야 한다는 점, 아두이노 우노에서는 아날로그 핀 사용 시 A0, A1,⦁⦁⦁, 그리고 WeMos LOLIN 에서는 그냥 보드 뒷면 숫자! 여기까지 숨막히는 10분여의 시간!

마지막으로 성공하리라는 희망은 별로 없었지만 일단 계급장 떼고 컴파일 업로딩 하기로 하였더니 작동이 되었다. (※계급장은 핀 번호 앞에 붙은 A 자를 의미)
작동이 안될 때에는 애 어른 할 것 없이 조바심이 나기 마련이다. 가뜩이나 더운데 왕창 짜증이 날 수도 있을 것이다. 그런데 성공하고 나니 홀가분해지고 더운 날씨조차 시원한 듯한 착각이 들었다.

지금까지 블로그를 많이 올렸지만 답을 알고 되풀이 하는 경우는 거의 없는 듯하다. 되풀이에 해당한다 해도 그 것은 거의 다 잊어버린 정도가 되어야 다시 시도해 보는 것이다. 잘 안되면 몇 시간, 몇 주, 그리고 한동안 잊었다가 몇 달 후 재차 도전해서 성공하기도 한다. 이런 과정이 때때로 스트레스도 많이 주긴 하지만 그것이야 말로 취미로 아두이노 하는 재미라고 말하고 싶다.

이번 코딩은 위의 스토리로 대신하기로 한다. 구체적인 코드 내용은 예제 코드를 각자가 실력 증진을 위해서 분석해 보기 바란다.

이 코드는 3색 LED 하나지만 회로 구성상 3개의 LED 배선이므로 2개 이상 LED를 설치하여 밝기 조절하는 코드 작성 시에 도움이 될 것이다.

다음 동영상을 참고로 관찰해 보자.

Sort:  

즐거운 스팀잇 생활하시나요?
무더위야 가라!!!!

Coin Marketplace

STEEM 0.30
TRX 0.11
JST 0.034
BTC 66408.70
ETH 3225.39
USDT 1.00
SBD 4.17