지난번 강추위가 지나고 좀 따뜻해지는가 싶더니... ㅡㅠ 다시 강추위가 오네요. 쿨럭쿨럭
다들 몸조리 잘하시기를 바랍니다.
이번 시간에는 원래 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 > |
< 출처 : WS2812b DATASHEET > |
이런 녀석의 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);
}
저런것들은 좀 더 고급강좌에서 다루어보겠습니다~
그럼 다음시간에 뵈요~
7 댓글
아프리카 앱에서 알림이 안와서 강의를 놓쳤네요...잠금화면에서 알림이 보이게 셋팅을 했다고 생각했는데
답글삭제그게 아니었네요 ㅎㅎ...다음강의부터는 놓치지 않게 셋팅 완료하였네요
ㅎㅎ 아닙니다!~ 시간 되실 때 편안하게 오세요~~ ㅎㅎ :)
삭제37 in 1 sensor kits은 어디서 구매하셨는지요?
삭제네이버 쇼핑몰이나 알리익스프레스 이용하시면 될 것 같아요!~
삭제이번주는 설인데 일요일에 강의 진행하시는 건가요?
삭제아.. 이번주는 설 연휴네요~ ㅡㅠ 이번주에는 쉬고 다음주에 진행하도록 하겠습니다~
삭제새해 복 많이 받으세요~~ :)
새해 복 많이 받으세요...~~~
삭제