단색 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) 를 직접 경험해보시기 바랍니다
009. Arduino 아두이노 - PuTTY 를 이용한 시리얼 통신 (0) | 2016.02.04 |
---|---|
008. Arduino 아두이노 - 스케치 시리얼 모니터(Seial Monitor) 사용방법 (0) | 2016.02.04 |
006. Arduino 아두이노 - LED 제어하기, 아두이노 LED 예제 (0) | 2016.01.30 |
005. Arduino 아두이노 - Visual Studio 2015 Community 사용하기 (0) | 2016.01.30 |
004. Arduino 아두이노 - 스크레치 문법 (디지털, 아날로그 입/출력) (0) | 2016.01.30 |
댓글 영역