CENTRAL DE ATENDIMENTO
De segunda à sexta das 8:00 às 17:30
(11) 3522-7626 / vendas@robocore.net
Retornar
ao topo

Controle de uma Fita LED RGB com o Arduino



Introdução

Fita LED RGB
Fita LED RGB

Neste tutorial vamos explicar como usar o seu Arduino para controlar a fita LED RGB de forma simples e prática. A fita possui LEDs com as cores primárias vermelho, verde e azul, por isso o nome RGB (Red, Green e Blue em inglês). Ela permite a possibilidade de formar outras cores misturando a intensidade de cada cor primária, por exemplo, com a ajuda de um potenciômetro. Agora que você sabe que é possível controlar a fita LED RGB, que tal começar o projeto?

Lista de Materiais

A lista de materiais foi dimensionada para um metro de fita LED, portanto é necessário redimensionar os componentes se seu projeto for utilizar um comprimento maior.

Primeiros Passos

Nessa primera etapa do tutorial, vamos acionar as cores da fita LED de maneira simples e rápida.

Preparando a Fita LED RGB

Antes de começar o projeto é necessário preparar a fita LED RGB, para que você consiga conectar ela ao seu circuito. Primeiro, você deve preparar a fita LED utilizando jumpers M/M de cor vermelha, verde e azul para conectar a fita à sua protoboard. Para isso, corte um lado de seu jumper para efetuar a solda nos pads de conexão da fita LED.

ATENÇÃO: Corte somente um lado do jumper porque a outra ponta (com o pino) vai ser conectada a protoboard.

Depois, descasque a ponta recém cortada e solde-a no pad respectivo da fita LED. Veja o resultado na imagem a seguir.

Solda Fita LED RGB
Solda de jumpers na Fita LED RGB

Circuito

Agora você pode montar o circuito abaixo.

Descricao Breve da Imagem
Circuito LED RGB

Programação

Carregue o código a seguir na sua BlackBoard.

Entendendo o Código

A primeira parte do código consiste em declarar as variáveis referentes aos pinos de cada cor da fita LED, dando a você a possibilidade de criar 7 cores diferentes. Na inicialização do programa (função setup()), configuramos os pinos como saídas. Em seguida, na função loop(), controlamos os pinos de cada cor para escolher como os LEDs acendem.

No trecho abaixo, repare que na primeira linha o pino referente à cor vermelha está em HIGH, o que significa que o LED vermelho é ligado, enquanto as outras cores estão em LOW, portanto desligadas. A mesma lógica é usada na sequência para ligar apenas as luzes verde e azul.

No último trecho do código, inserido abaixo, usamos as cores vermelha e azul em HIGH e a cor verde em LOW, criando assim a cor roxa.

O Que Deve Acontecer

Veja o resultado na animação a seguir.

Acionando fita LED RGB com sua BlackBoard
Acionando fita LED RGB com sua BlackBoard

Controle com Potenciômetros

Que tal agora acrescentar potenciômetros no seu projeto para misturar as cores da fita LED? Assim você pode utilizar as cores primárias para deixar seu projeto com cores diferentes.

Circuito

Monte o circuito como o da imagem abaixo.

Circuito LED RGB com Potenciômetros

Programação

Carregue o código a seguir na sua BlackBoard.

Entendendo o Código

Com a adição dos potenciômetros, o código controla a intensidade de cada cor da fita LED RGB utilizando sinais PWM, portanto passamos a usar a função analogWrite(). O PWM (modulação por largura de pulso) é um método que utiliza um pino digital para variar a energia sobre a carga. Essa variação é controlada pelo duty cycle (ciclo de trabalho), que é, para uma frequência fixa, a proporção do tempo em que a tensão fica em nível lógico alto no período da onda quadrada. Veja o exemplo abaixo, onde as linhas verdes indicam os intervalos dos ciclos da onda (período) e a linha preta representa o sinal PWM.

Demonstração de onda quadrada da função duty cycle
Fonte: https://www.arduino.cc/en/Tutorial/PWM

A função analogWrite() no Arduino é utilizada para definir o duty cycle de uma saída PWM e utiliza um parâmetro de 0 a 255, valores que equivalem a 0 e 100 % respectivamente. Como usamos os potenciômetros, cujas leituras vão de 0 a 1023, precisamos converter os valores lidos para valores dentro da faixa de leitura da função. Para isso utilizamos a função map().

A função map() converte um valor dentro de um intervalo para o valor equivalente dentro de um segundo intervalo. Por exemplo, considerando o intervalo de leitura potenciômetro, que é de 0 a 1023, e o intervalo aceito pela funçãoanalogWrite(), que é de 0 a 255, transformamos o valor lido de 512, que equivale a 50 % do potenciômetro, para o valor de 50 % da função, que é 127.

O Que Deve Acontecer

Diferentemente da primeira etapa, agora a intensidade de cada cor primária da fita LED RGB está sendo controlada pelos potenciômetros, dando a possibilidade de deixar sua fita LED RGB com a cor que você desejar.

Solução de Problemas

Caso uma cor não ligue, verifique as conexões dos jumpers e a posição dos transistores TIP122. Verifique também que a sua fonte de 12 V está alimentando corretamente o conjunto.

Avatar


Para fazer comentários é necessário estar logado. Efetuar login.

Você ainda nao é cadastrado? Cadastre-se agora!


redesistema
date Enviado: 2020-08-17 10:21:06
ah, ja me liguei qual foi minha confusao.. os pinos analogicos sao somente de ENTRADA. Os digitais sao ENTRADA DIGITAL, SAIDA DIGITAL, SAIDA PWM.
Eh, apesar de eu ter feito todo o kit iniciante e todo o avancado, alguns conceitos estao muito recente na minha cabeca, rs
O Nano e Node nao tem marcacoes ~nos pinos de quais sao PWM... todos sao?

Giovanni5
date Enviado: 2020-08-17 10:53:07
redesistema
Na verdade, apenas os pinos analógicos A6 e A7 da Nano são utilizados somente como entradas analógicas, o outros pinos analógicos  podem ser utilizados também como entradas digitais e como saídas digitais, pois são compostos de um conversor analógico digital ("ADC"). Em relação às saídas PWM, não, nem todas as portas digitais da Nano possuem saída PWM. Como ela possui o mesmo microcontrolador das placas Arduino UNO, os mesmos pinos digitais que possuem saída PWM na UNO, também possuem na Nano, ou seja, somente os pinos 3, 5, 6, 9, 10 e 11 possuem saída PWM na Nano.

redesistema
date Enviado: 2020-08-16 11:43:37
Puts, como disse abaixo, apanhei mas rodou no NANO (na tentativa e erro). Tentei agora no NodeMCU ( q outras coisas seguindo tutorial eu consegui fazer, controlar pelo Blynk, etc). Mas simplesmente replicar isso no Node nao consigo, tb nao entendo qual a logica das portas dele, D0 a d7 e nao ter portas "A"

Giovanni5
date Enviado: 2020-08-17 09:35:59
redesistema
As portas digitais no NodeMCU, assim como na placa Nano, são representadas pela sigla "D", e o NodeMCU possui apenas um pino analógico ("A0"). Provavelmente você não obteve sucesso com este projeto usando o NodeMCU por conta da diferença de tensões operacionais. O NodeMCU opera em 3,3 V, enquanto a maioria das placas da plataforma Arduino operam em 5 V. Levando isso em conta, é necessário alterar o circuito de acionamento da fita de LED, para compatibilizar o NodeMCU com este projeto.

redesistema
date Enviado: 2020-08-16 11:26:08
Ola! Fiz esse projeto com o UNO, ok, tudo certo. Apanhei para replicar no NANO por falta de conceito da minha parte.
Afinal o NANO, tem portas D2 a D12 (Entendo q isso sejam portas digitais) e portas A1 a A7 (entendo q isso sejam as analogicas). Porem so consegui fazer usando as portas "D" e nao as "A". Afinal, o que determina isso? o uso de digitalWrite ou analogWrite? Qual a difereca? Analogica eh sempre 0 a 255 e nao 0 a 1023 certo? Socorro, rs

Giovanni5
date Enviado: 2020-08-17 09:18:48
redesistema
As placas da plataforma Arduino Nano possuem o mesmo microcontrolador das placas Arduino UNO (em um encapsulamento diferente), portanto você pode simplesmente replicar as conexões deste projeto com a Nano. Os pinos com demarcação "D" são pinos digitais, logo os pinos com demarcações "A" são pinos analógicos. A diferença entre "digitalWrite()" e "analogWrite()" é o tipo de sinal enviado. Para o "digitalWrite()" é enviado um sinal digital de 0 (LOW) ou 5 V (HIGH). Já para o "analogWrite()" é enviado um PWM digital que varia entre 0 e 255 ("duty cycle" de 0 e 100%, respectivamente).

Giovanni5
date Enviado: 2020-08-17 09:19:55
redesistema
Os valores de 0 a 1023 mencionados estão relacionados à resolução de leitura analógica ("analogRead()") da placa.

edu.gripp13
date Enviado: 2020-07-24 22:33:00
Boa noite, seria possível eu alimentar o arduino através de uma fonte 12v 2A pelo jack de energia e, dessa forma, alimentar a fita de LED pelo pino VIN?

Giovanni5
date Enviado: 2020-07-27 08:35:41
edu.gripp13
Isso vai depender um pouco do comprimento de fita de LED que você deseja alimentar, pois quanto maior o comprimento, maior é o consumo de corrente de fita, para alimentar todos os LEDs. Com uma fonte de 12 V 2 A, você deve ser capaz de alimentar um placa Arduino UNO, com o restante do seu circuito de controle, se for o caso, e ainda alimentar 1 metro desta fita de LED. Entretanto, lembre-se que, é necessário dimensionar a fonte de alimentação, de acordo com o consumo de corrente do sistema completo, para que ela seja capaz de alimentar todos os componentes em máxima eficiência.

Giovanni5
date Enviado: 2020-07-27 08:36:30
edu.gripp13
Você pode dimensionar corretamente a fonte de alimentação necessária para o comprimento de fita desejado, através da potência consumida por metro pela fita de LED, que está disponível nas "Inf. Técnicas" da página do produto (https://www.robocore.net/loja/itens-eletronicos/fita-led-rgb).

Francois
date Enviado: 2020-07-27 18:18:19
edu.gripp13
Complementando a resposta do Giovanni5, não é recomendado alimentar uma carga de mais de 2 A usando o pino VIN (ou qualquer outro do Arduino). Uma corrente dessa magnitude pode provocar o derretimento do conector, pois ele é dimensionado para sinais de baixa corrente. Por isso, alimente a sua fita LED separadamente (mesmo que usando a mesma fonte) e, se necessário para o seu circuito, interligue os pólos negativos (GND) para fechar as malhas.