Community project
Bluetooth LED Control
This project builds a push-button controlled RGB LED strip using an Arduino Uno and three logic-level MOSFETs to switch each color channel independently. The 5V analog RGB strip connects through the transistors, which are driven by PWM signals from the Arduino's digital pins, allowing full color control with simple button presses.
The guide includes a complete wiring diagram showing how to connect the LED strip, MOSFETs, and push button to the Arduino, a full parts list with component specifications, and ready-to-upload firmware that cycles through five preset colors (off, red, green, blue, and white) with debouncing for reliable button input. Assembly takes about 30 minutes and requires only basic soldering skills.
Wiring diagram

Gather all the parts
Assemble it in 6 steps
1. Separe a fonte da fita
Use uma fonte USB de 5 V capaz de fornecer pelo menos 2 A para a fita. Não ligue o fio positivo da fita no pino 5V do Arduino: a fita pode puxar corrente demais e danificar a placa.
- O fio comum da fita costuma estar marcado como +5V, V+ ou uma seta. Os outros três fios são R, G e B.
- Não use uma fonte de 12 V: 12 V em uma fita marcada 5 V pode queimá-la imediatamente.
2. Faça o terra comum
Ligue o GND da fonte USB da fita ao GND do Arduino e aos pinos SOURCE dos três IRLZ44N. Essa ligação faz o comando do Arduino ter a mesma referência elétrica da fita.
- Deixe o Arduino desligado e a fonte USB da fita desconectada enquanto monta.
- Sem este GND compartilhado, a fita pode não responder ou mostrar cores erradas.
3. Ligue a fita aos transistores
Ligue o +5V da fonte USB ao fio +5V da fita. Ligue o fio R ao DRAIN do primeiro IRLZ44N, o fio G ao DRAIN do segundo e o fio B ao DRAIN do terceiro. Com a face plana do IRLZ44N voltada para você e as pernas para baixo, confirme no corpo ou na folha de dados qual perna é GATE, DRAIN e SOURCE antes de encaixar.
- Faça uma etiqueta nos três transistores: R, G e B; isso evita trocar as cores.
- Inverter DRAIN e SOURCE pode deixar a fita ligada de modo inesperado ou impedir o controle.
4. Ligue os três comandos do Arduino
Ligue D3 do Arduino a uma perna do resistor gate_r_1 de 220 Ω e a outra perna ao GATE do transistor vermelho. Faça o mesmo: D5 → resistor gate_g_1 → GATE do verde, e D6 → resistor gate_b_1 → GATE do azul. Em cada GATE, também ligue um resistor de 10 kΩ ao GND: pulldown_r_1 no vermelho, pulldown_g_1 no verde e pulldown_b_1 no azul.
- D3, D5 e D6 são os três pinos que definem a intensidade de cada cor.
- Não conecte nenhum fio R, G ou B da fita diretamente a um pino do Arduino; os transistores são necessários para suportar a corrente da fita.
5. Ligue o botão
Coloque o botão atravessando o vão central da protoboard. Ligue um lado ao D2 do Arduino e o lado oposto ao GND. Cada toque curto trocará a cor.
- Se o botão tiver quatro pernas, use duas pernas de lados opostos; as duas pernas do mesmo lado já são conectadas entre si.
- Não ligue o botão ao 5V neste projeto, pois o código já usa o GND como referência do toque.
6. Energize e teste
Conecte a fonte USB de 5 V da fita e depois conecte o Arduino ao computador pelo próprio cabo USB. Depois de enviar o código, cada toque no botão passa por: apagada, vermelho, verde, azul, branco e apagada novamente.
- Se vermelho, verde e azul aparecerem trocados, mantenha a alimentação desligada e troque somente os fios R, G e B entre os transistores.
- Nunca conecte ou desconecte os fios da fita com a fonte USB ligada, pois um curto acidental pode aquecer os fios ou a fonte.
Review all connections
1. Connections between "usb_power_5v_1" and "Arduino"
2. Connections between "rgb_strip_5v_1" and "Arduino"
3. Connections between "mosfet_r_1" and "Arduino"
4. Connections between "mosfet_g_1" and "Arduino"
5. Connections between "mosfet_b_1" and "Arduino"
6. Connections between "gate_r_1" and "Arduino"
7. Connections between "gate_g_1" and "Arduino"
8. Connections between "gate_b_1" and "Arduino"
9. Connections between "pulldown_r_1" and "Arduino"
10. Connections between "pulldown_g_1" and "Arduino"
11. Connections between "pulldown_b_1" and "Arduino"
12. Connections between "button_1" and "Arduino"
Deploy the firmware
#include <Arduino.h>
// Forward declarations
void setColor(byte red, byte green, byte blue);
void showMode();
const byte RED_PIN = 3;
const byte GREEN_PIN = 5;
const byte BLUE_PIN = 6;
const byte BUTTON_PIN = 2;
byte mode = 0;
bool previousButton = HIGH;
unsigned long lastPressTime = 0;
const unsigned long DEBOUNCE_MS = 40;
void setColor(byte red, byte green, byte blue) {
analogWrite(RED_PIN, red);
analogWrite(GREEN_PIN, green);
analogWrite(BLUE_PIN, blue);
}
void showMode() {
switch (mode) {
case 0: setColor(0, 0, 0); break; // apagada
case 1: setColor(255, 0, 0); break; // vermelho
case 2: setColor(0, 255, 0); break; // verde
case 3: setColor(0, 0, 255); break; // azul
case 4: setColor(255, 255, 255); break; // branco
}
}
void setup() {
pinMode(RED_PIN, OUTPUT);
pinMode(GREEN_PIN, OUTPUT);
pinMode(BLUE_PIN, OUTPUT);
pinMode(BUTTON_PIN, INPUT_PULLUP);
showMode();
}
void loop() {
bool buttonNow = digitalRead(BUTTON_PIN);
unsigned long now = millis();
if (previousButton == HIGH && buttonNow == LOW && now - lastPressTime >= DEBOUNCE_MS) {
mode = (mode + 1) % 5;
showMode();
lastPressTime = now;
}
previousButton = buttonNow;
}Remix this project
Make it yours in one click
Open a full copy of this project in your own Schematik workspace — diagram, code, parts, and assembly steps included. Swap the sensor, add features, or redesign the whole thing with AI. The author's original stays untouched.




