3색 LED 제어하기

발행일 : 2018-12-17 15:56  

  • 안녕하세요~
    다들 잘 지내셨나요? 오랜만에 글을 올려봅니다. 
    지난 시간에는 컨베이어 벨트 시스템에서 일부 요소를 구현해봤습니다. 
    이번 시간에는 LED에 대해 추가적으로 알아보도록 하겠습니다. 
    지난 시간까지 사용한 LED는 자신의 스펙에 맞는 색깔만 출력합니다. 빨간색 LED의 경우 빨간색, 녹색 LED의 경우는 녹색을 빛으로 출력합니다. 
    그러나 마트, 백화점 주차장을 살펴보면 어떤가요? 하나의 등에서 빨간색, 녹색이 출력됩니다. LED를 두 개 사용하는 것보다 한 개를 사용하는 이유는 여러가지 이유가 있겠지만 설치 공간과 비용이 영향을 미칠 것으로 예상됩니다. 
    따라서, 오늘은 3색 LED를 사용하려고 합니다. 간단하게 소개드리면 하나의 LED가 RGB 코드 값으로 다양한 색깔을 출력하는 기능을 가지고 있습니다. 
  • 위의 그림이 3색 LED 입니다. 총 4개의 다리를 가지고 있고 일반적으로 가장 긴 다리가 접지(Gnd) 부분이고 왼쪽부터 R, G, B 값을 처리합니다. 색을 표현하는 RGB 코드는 0 ~ 255의 값을 사용합니다. 즉 3색 LED의 각 다리가 연결된 핀에 0 ~ 255의 값을 부여하면 그에 맞는 색깔을 출력하게 되는 것입니다. 
  • 회로 구현은 위와 같이 할 수 있습니다. 2번째 핀은 Gnd에 연결하여 접지 처리를 하고 각 다리에 220 저항을 연결한 후 저항의 반대쪽에 케이블을 사용하여 아두이노 11, 10, 9번 핀에 연결합니다. 각 다리에는 0 ~ 255의 값을 입력해야 하기 때문에 아날로그 출력 핀에 연결해야 합니다. 
    포털사이트에서 RGB 코드표 또는 RGB 색상표를 입력하시면 각 색깔마다 RGB 코드 값이 있습니다. 각 코드 값을 프로그램 작성 시 입력하여 결과를 확인하시면 됩니다. 
  • #define REDPIN 11
    #define GREENPIN 10
    #define BLUEPIN 9

    void setup() {
      // put your setup code here, to run once:
      pinMode(REDPIN, OUTPUT);
      pinMode(GREENPIN, OUTPUT);
      pinMode(BLUEPIN, OUTPUT);
    }

    void loop() {
      // put your main code here, to run repeatedly:
      //빨간색 출력
      analogWrite(REDPIN, 255);
      analogWrite(GREENPIN, 0);
      analogWrite(BLUEPIN, 0);
      delay(1000);

      //초록색 출력
      analogWrite(REDPIN, 0);
      analogWrite(GREENPIN, 255);
      analogWrite(BLUEPIN, 0);
      delay(1000);

      //보라색 출력
      analogWrite(REDPIN, 255);
      analogWrite(GREENPIN, 0);
      analogWrite(BLUEPIN, 221);
      delay(1000);
    }
  • 빨간색, 초록색, 보라색을 1초간 점등하는 프로그램 코드입니다. 
    원하는 색상의 RGB 코드 값을 각 핀에 analogWrite 함수를 사용하여 입력하면 됩니다. 
    위 코드에서의 단점은 여러가지 색깔을 출력하면 loop 함수가 길어진다는 단점이 있습니다. 이와 같은 상황을 처리하는 방법을 다음 시간에 다루도록 하겠습니다. 
    추운 날씨에 감기 조심하세요^^

댓글(0)

이모티콘