아두이노를 하다보면
하드웨어 문제인지 소프트웨어 문제인지 모를 때까 있다.
그 중에 하나가 이번 예제이다.
사실 이번에는
NodeMCU를 사용할 필요는 없지만
후에 wifi를 사용하기 위해서 연습한 것이다.
보 드 : NodeMCU 1.0
개발 환경 : Platformio IDE
부 품 :
1. RGB led (Anode)
2. 전선 4가닥
3. 220 Ω (ohm) 저항 1개
4. 미니 빵판 2개
RGB led 는 7_Segment 처럼
Anode 와 Cathode 두 종류가 있다.
이왕 산다면 직관적으로 제어할 수 있는 Cathode 를 추천한다.
(Anode 하다가 눈물..ㅜ)
◈ Common Anode
Common Anode 는 공통 단자가 ( + ) 극이다.
나머지를 LOW 로 해야 불이 켜진다.

◈ Common Cathode
Common Cathode 는 공통 단자가 ( - ) 극이다.
나머지는 HIGH 로 해야 불이 켜진다.

이 LED를 다룰 때는 전압 차에 따른 값 Analog 값을 잘 비교해야한다.
R : 2 ~ 2.2 V
G : 3 ~ 3.2 V
B : 3 ~ 3.2 V
즉, 이말은
아두이노 우노 보드의 AnalogWrite 값은 0 ~ 255
사용할 NodeMCU 의 AnalogWrite 값은 0 ~ 1023
이며
아두이노 우노 보드는
R : 0~ 170
G, B : 0~255
NodeMCU 보드는
R : 0~ 682
G, B : 0~ 1023
로 해야한다는 것이다.
처음에 전체 다 1023 에 맞춰서 했다가 빨간색 밖에 안떠서 하루간 고생을 했다.
사용할 핀은 D5, D6, D7 이다. 그외에 D1, D2 도 사용 가능
핀 선언할 때는
#define R_pin D7
또는
#define R_pin 13 <- GPIO14
이라고 하면된다.

-------------------<보드 모양만 우노 입니다.>---------------------
NodeMCU 출력은 3.3V 입니다.

일단 platformio IDE 나 Arduino IDE 를 사용해 파일을 만든다.

<코드>
#include <Arduino.h>
#define R_pin 7
#define G_pin 8
#define B_pin 9
void setRGB(int, int, int);
void setup() {
Serial.begin(115200);
analogWrite(R_pin, 1023); // 공통 양이라서 0에 가까울 수록 켜짐
analogWrite(G_pin, 1023);
analogWrite(B_pin, 1023);
}
void loop() {
setRGB(255,0,0); //red
delay(500);
setRGB(0,255,0); //green
delay(500);
setRGB(0,0,255); //blue
delay(500);
setRGB(255,255,0); //yellow
delay(500);
setRGB(0,255,255); //cyan
delay(500);
setRGB(255,0,255); //magenta
delay(500);
}
void setRGB(int R_value, int G_value, int B_value){
//Anode
R_value = map(R_value, 0, 255, 1023, 512); //빨강이 너무 강해서 반으로 줄임
G_value = map(G_value, 0, 255, 1023, 0);
B_value = map(B_value, 0, 255, 1023, 0);
analogWrite(R_pin, R_value); // 공통 양이라서 0에 가까울 수록 켜짐
analogWrite(G_pin, G_value);
analogWrite(B_pin, B_value);
Serial.print("R :");
Serial.print(R_value);
Serial.print("\t");
Serial.print("G :");
Serial.print(G_value);
Serial.print("\t");
Serial.print("B :");
Serial.println(B_value);
delay(1000);
}
<작동 모습>

'Arduino' 카테고리의 다른 글
| [Arduino] 아두이노 ESP32- WiFi Event, Reconnect, 와이파이 재연결 예제 (0) | 2021.06.03 |
|---|---|
| [Arduino] 아두이노 기울기 센서 (tilt sensor) (0) | 2021.05.31 |
| [Arduino] 아두이노 - Cds 조도센서 밝기에 따른 LED 제어 (0) | 2021.04.20 |
| [Arduino] 아두이노 - Pull up 저항, 내부 풀업 저항 원리, 푸시 버튼 (0) | 2021.04.19 |
| [Arduino] 아두이노 Cds 조도센서 (0) | 2021.04.19 |