[매드정] 아두이노 강좌 - 12. 다양한 LED 동작


안녕하세요~ 매드 입니다.
지난번 강추위가 지나고 좀 따뜻해지는가 싶더니... ㅡㅠ 다시 강추위가 오네요. 쿨럭쿨럭
다들 몸조리 잘하시기를 바랍니다.

이번 시간에는 원래 2-Color LED를 동작시켜보려고 했는데 보니까 중복되는 여러 LED들이 있어서 여러 종류의 LED들을 다뤄보도록 하겠습니다.


12-1. 3원색

사실 LED 동작은 이전시간에 자세히 한번 다루었습니다. ( LED 원리 ) 하지만 이런 LED들도 여러가지 종류가 있기 때문에 한번 이런 것들을 다루어 보도록 하겠습니다.

LED 하면 떠오르는 것이 색깔을 가진 빛을 낼 수 있는 것 인데요. 지금까지는 단색만을 표현하는 LED를 다루었지만 이번시간에는 여러가지 색들을 표현해 보도록 하겠습니다.

우리가 눈으로 실제 보고 있는 것들을 대략적으로 분리하면 '빨주노초파남보' 이런식으로 부를 수 있습니다. 사실 색도 디지탈이 아니라 아날로그이기 때문에 굉장히 무한한 색으로 분리할 수 있습니다. 하지만 컴퓨터에서 이를 표현하기 위해 디지털로 분리하게 되는데 2bit로 분리하면 검은색과 흰색으로 분리되고 8bit로하면 256가지 색을 표현할 수 있으며 지금 우리가 많이 사용하고 있는 24bit(16777216가지) 또는 32bit(4294967296가지)를 사용하게 되면 우리가 느끼지 못할 만큼의 수많은 색으로 표현이 가능하게 됩니다.

이런 여러가지 색을 섞으면 어떤색이 될까요~?

여기서 빛의 3원색과 색의 3원색을 알게 됩니다.

< 출처 : 구글 사진 >

어릴 때 많은 색을 섞으면 섞을수록 크레파스나 물감의 색깔이 점점 검은색으로 변했던 것을 기억하실 겁니다. 빛은 많은 색이 섞일 수록(사실은 3원색) 흰색을 갖게 되는 것이죠!

여기서 우리가 아는 것이 바로 RGB 입니다. 이 RGB LED를 통해서 우리가 원하는 색을 맘대로 표현할 수 있는 것이죠~!


12-2. WS2812b

이런 RGB LED 에서 현재 가장 유명한 녀석이 있었으니... 이름하여 'WS2812b' 라고 합니다. 모델명을 이름으로 얘기하니까 어색하네요(ㅋㅋ)

요녀석이 유명한 이유는 다름아닌 현재우리가 사용하는 24bit RGB 색깔 표현을 그대로 사용할 수 있기 때문입니다. 앞서 말한 RGB LED 같은 경우 빛의 밝기와 색깔에 따라서 각각을 제어해줘야하는 불편함이 있는데요. 이 WS2812b 제품 같은 경우에는 RGB 색 bit를 그대로사용할 수 있기 때문에 굉장히 편리하게 쓸 수 있습니다.

사실 제어자체로만 본다면 기존 LED는 ON/OFF 두 가지 였지만 이녀석은 0과 1을 구분하는게 조금 다릅니다.

구글신께 여쭙고 데이타시트를 보니 아래 그림 처럼 표현되네요.

< 출처 : WS2812b DATASHEET >
우선 전원연결하고 DIN으로 신호를 넣어주기만하면 되는 굉장히 간편한 연결로 되어 있습니다. 그리고 DOUT을 다른 WS2812b(2개 이상 연결) 하게되면 DIN으로 들어갔던 신호가 DOUT으로 계속해서 넘어가도록 되어 있기 때문에 확장하기에도 최적!!

< 출처 : WS2812b DATASHEET >
0 코드과 1 코드을 구분하는 것이 조금 독특하기는 하지만 기존에 우리가 사용하던 24bit RGB 칼라코드를 그대로 사용할 수 있는 장점 때문에 안쓸래야 안쓸 수가 없죠.

이런 녀석의 0코드와 1코드을 구분하는 방법이 신호의 0신호 간격과 1신호 간격으로 구분하기 때문에 조금 까다로워보이지만 아두이노의 미리 만들어진 라이브러리를 통해서 간단히 사용할 수가 있습니다!~

어떻게요?~

그건 강좌 영상의 마지막 10분을 보시면 아실 수 있습니다~~(앞 부분은 별내용 없음 ㅠ)


12-3. 펌웨어 코드

이번 펌웨어 코드는 RGB 제어하는 코드만 넣어두었습니다~
WS2812b 코드는 영상으로 마지막 보시면 라이브러리 불러오는 것에 대해서 설명해 두었으니 참조하세요~ ^^)

void setup() {
  pinMode(13, OUTPUT); //R
  pinMode(12, OUTPUT); //G
  pinMode(11, OUTPUT); //B
}

void loop() {
  digitalWrite(13, LOW); // R
  digitalWrite(12, LOW); // G
  digitalWrite(11, LOW); // B
  delay(1000);
  digitalWrite(13, HIGH); // R
  digitalWrite(12, LOW); // G
  digitalWrite(11, LOW); // B
  delay(1000);
  digitalWrite(13, LOW); // R
  digitalWrite(12, HIGH); // G
  digitalWrite(11, LOW); // B
  delay(1000);
  digitalWrite(13, LOW); // R
  digitalWrite(12, LOW); // G
  digitalWrite(11, HIGH); // B
  delay(1000);
  digitalWrite(13, HIGH); // R
  digitalWrite(12, HIGH); // G
  digitalWrite(11, HIGH); // B
  delay(1000);
}

이번 시간에는 LED를 많이 파봤네요. LED를 여러개 이용하면 사실 많은 것들을 만들어낼 수 있는데 도트매트릭스, 잔상LED, 3D 라던가.. 노가다가 좀 필요하죠. 사실 우리가 보고 있는 모니터도 이런 LED들의 조합이나 마찬가지 입니다.

저런것들은 좀 더 고급강좌에서 다루어보겠습니다~

그럼 다음시간에 뵈요~



댓글 쓰기

7 댓글

  1. 아프리카 앱에서 알림이 안와서 강의를 놓쳤네요...잠금화면에서 알림이 보이게 셋팅을 했다고 생각했는데
    그게 아니었네요 ㅎㅎ...다음강의부터는 놓치지 않게 셋팅 완료하였네요

    답글삭제
    답글
    1. ㅎㅎ 아닙니다!~ 시간 되실 때 편안하게 오세요~~ ㅎㅎ :)

      삭제
    2. 37 in 1 sensor kits은 어디서 구매하셨는지요?

      삭제
    3. 네이버 쇼핑몰이나 알리익스프레스 이용하시면 될 것 같아요!~

      삭제
    4. 이번주는 설인데 일요일에 강의 진행하시는 건가요?

      삭제
    5. 아.. 이번주는 설 연휴네요~ ㅡㅠ 이번주에는 쉬고 다음주에 진행하도록 하겠습니다~
      새해 복 많이 받으세요~~ :)

      삭제
    6. 새해 복 많이 받으세요...~~~

      삭제