상세 컨텐츠

본문 제목

007. Arduino 아두이노 - 2색, 3색 LED 제어하기, 아두이노 3색 LED 예제

embedded/arduino

by ZelKun 2016. 2. 1. 11:35

본문

반응형

단색 LED말고도 2, 3 LED 있습니다

단가가 좀 올라가긴 하지만

3개를 보드에 연결하는 것보다는 공간이 절약된다는 장점이 있죠

좌측부터 단일 LED, 2 LED, 3 LED 입니다

   

2, 3 LED

1개의 핀이 공통핀으로 사용합니다

+극에 연결하는게 Anode

-극에 연결하는게 Cathode

라고 합니다

   

근데 LDE에는 핀번호 따위 써있으니

직접 테스트 해봐야 해요 ㅋㅋㅋ

공통핀은 제일 핀입니다

   

Cathode 프로그램작성시

LED 제어했던방식을 하면 되는데..

ex) digitalWrite(ledPin, HIGH); //불이 켜짐

   

Anode 방식은 다릅니다

핀을 3.3v 연결하고

digitalWrite(ledPin, LOW); //불이켜짐

LOW 일때 불이 켜지거든요

   

차차

테스트해보면 됩니다

   

2색 LED (빨강, 녹색) - Anode 방식

공용핀이 3.3v에 연결하면 됩니다

   

사진 : Fritzing

   

Anode 방식이기 때문에 공용핀을

3.3v에 연결했습니다

digitalWrite(ledPin, LOW);

LOW 일때 불이 들어옵니다

저항을 넣으면 안전하지만

귀찮으니 빼버렸습니다...

   

   

저항은 3.3v에 연결해주면 됩니다

사진 : Fritzing

   

   





   

int r = 2;

int g = 3;

int wait = 1000; //대기시간 변수처리

   

void setup() {

    Serial.begin(9600);

    pinMode(r, OUTPUT);

    pinMode(g, OUTPUT);

}

   

void loop() {

    Serial.println("RED on");

    digitalWrite(r, LOW);

    digitalWrite(g, HIGH);

    delay(wait);

   

    Serial.println("GREEN on");

    digitalWrite(r, HIGH);

    digitalWrite(g, LOW);

    delay(wait);

}

   

헷갈리지만 직접 해보면 그렇게 어렵진 않아요

다만 프로그램을 짤때 좀더 고민해봐야 합니다

아무래도 반대일때 불이 들어오니까요

   

   

3색 LED - Cathode 방식

공용핀이 GND로 연결되면 됩니다

   

사진 : Fritzing

   

두번째 다리가 공용핀(긴 다리) 이며

좌측부터 적, GND, 녹, 파 입니다

   

   





   

int r = 2;

int g = 3;

int b = 4;

int wait = 1000; //대기시간 변수처리

   

void setup() {

Serial.begin(9600);

pinMode(r, OUTPUT);

    pinMode(g, OUTPUT);

    pinMode(b, OUTPUT);

}

   

void loop() {

    Serial.println("RED on");

    digitalWrite(r, HIGH);

    digitalWrite(g, LOW);

    digitalWrite(b, LOW);

    delay(wait);

   

    Serial.println("GREEN on");

    digitalWrite(r, LOW);

    digitalWrite(g, HIGH);

    digitalWrite(b, LOW);

    delay(wait);

   

    Serial.println("BLUE on");

    digitalWrite(r, LOW);

    digitalWrite(g, LOW);

    digitalWrite(b, HIGH);

    delay(wait);

}

   

근데 역시나 코드가 식상합니다

변경해보죠

int ledPin[] = { 2,3,4 }; //2 red, 3 green, 4 blue

char color[] = { 'r', 'g', 'b' };

int wait = 1000; //대기시간 변수처리

   

void setup() {

    Serial.begin(9600); //시리얼 모니터 통신 속도

    Serial.println("RGB LED START");

    for (int i = 0; i < sizeof(ledPin) / sizeof(int); i++) { //int 형 4

        pinMode(ledPin[i], OUTPUT);

    }

}

   

void loop() {

    for (int i = 0; i < sizeof(ledPin) / sizeof(int); i++) {//int 형 4

        Serial.print(color[i]);

        Serial.print(" on");

        for (int j = 0; j < sizeof(ledPin) / sizeof(int); j++) {//int 형 4

            digitalWrite(ledPin[j], LOW); //전체 LED

        }

        digitalWrite(ledPin[i], HIGH); //LED on

        delay(wait); //지연시간 추가

    }

}

   

2가지 방식(Anode, cathode) 를 직접 경험해보시기 바랍니다

   

반응형

관련글 더보기

댓글 영역