Curso de Arduino #08 - Led RGB, Módulo Led RGB
HTML-код
- Опубликовано: 8 фев 2025
- Curso de Arduino #08 - Led RGB, Módulo Led RGB
Link deste vídeo: • Curso de Arduino #08 -...
Na aula de hoje do nosso curso de Arduino você vai aprender como trabalhar e com o led RGB e com o módulo RGB, vamos implementar um código para mudar a cor do led ao pressionaor um pucsbutton (botão). Todo este procedimento será feito com funções.
Nosso curso de Arduino online gratuito, além de ser um curso bsatante completo é a melhor forma de você aprender sobre Arduino.
Arduíno é uma plataforma de prototipagem eletrônica de hardware livre e de placa única, projetada com um microcontrolador Atmel com suporte de entrada/saída embutido, uma linguagem de programação padrão que é essencialmente C/C++. O objetivo do projeto é criar ferramentas que são acessíveis, com baixo custo, flexíveis e fáceis de se usar por novatos e profissionais. Principalmente para aqueles que não teriam alcance aos controladores mais sofisticados e de ferramentas mais complicadas.
Pode ser usado para o desenvolvimento de objetos interativos independentes, ou ainda para ser conectado a um computador hospedeiro. Uma típica placa Arduino é composta por um controlador, algumas linhas de E/S digital e analógica, além de uma interface serial ou USB, para interligar-se ao hospedeiro, que é usado para programá-la e interagi-la em tempo real. Ela em si não possui qualquer recurso de rede, porém é comum combinar um ou mais Arduinos deste modo, usando extensões apropriadas chamadas de shields. A interface do hospedeiro é simples, podendo ser escrita em várias linguagens. A mais popular é a Processing, mas outras que podem comunicar-se com a conexão serial são: Max/MSP, Pure Data, SuperCollider, ActionScript e Java. Em 2010 foi realizado um documentário sobre a plataforma chamado Arduino: The Documentary.
Além do curso de Arduino aqui em nosso canal você vai encontrar vários outros cursos, sempre com foro em informática avançada, todos cursos completamente gratuitos e com uma didática única que você só encontra aqui no CFB Cursos.
Site Oficial do Arduino
www.arduino.cc/
Link direto para download do software
www.arduino.cc...
Site do canal
cfbcursos.com.br
Colabore com nosso canal:
Qualquer valor usando o PIX: pixcfbcursos@gmail.com
Página de cursos no site
cfbcursos.com.b...
e-mails:
perguntas@cfbcursos.com.br
canalfessorbruno@gmail.com
Outros Links:
Vídeo Colabore com nosso canal: • Video
Canal youtube: / canalfessorbruno
Instagram: cfbcursos ou @cfbcursos
Twitter: @cfbcursos
Facebook: canalfessorbruno
RUclips: / canalfessorbruno
vakinhas
www.vakinha.co...
www.vakinha.co...
Produção: Bruno P. Campos / CFB Cursos
Edição: Bruno P. Campos / CFB Cursos
Licença padrão do RUclips
#cfbcursos #arduino #automacaoarduino #automacao #programacaoarduino
vc é o cara, professor Bruno!!! tmj
#define ledR 2
#define ledB 3
#define ledG 4
#define maximo 7
#define botao 7
int btnclicado = 0;
int btnliberado = 0;
int ciclo = 0;
void vermelho(){
digitalWrite(ledR,1);
digitalWrite(ledB,0);
digitalWrite(ledG,0);
}
void azul(){
digitalWrite(ledR,0);
digitalWrite(ledB,1);
digitalWrite(ledG,0);
}
void verde(){
digitalWrite(ledR,0);
digitalWrite(ledB,0);
digitalWrite(ledG,1);
}
void amarelo(){
digitalWrite(ledR,1);
digitalWrite(ledB,0);
digitalWrite(ledG,1);
}
void branco(){
digitalWrite(ledR,1);
digitalWrite(ledB,1);
digitalWrite(ledG,1);
}
void magenta(){
digitalWrite(ledR,1);
digitalWrite(ledB,1);
digitalWrite(ledG,0);
}
void ciano(){
digitalWrite(ledR,0);
digitalWrite(ledB,1);
digitalWrite(ledG,1);
}
void trocaLed(){
if(ciclo == 0){
vermelho();
} else if(ciclo == 1){
azul();
}else if(ciclo == 2){
verde();
}else if(ciclo == 3){
amarelo();
}else if(ciclo == 4){
branco();
}else if(ciclo == 5){
magenta();
}else if(ciclo == 6){
ciano();
}
ciclo++;
if(ciclo > maximo - 1){
ciclo = 0;
}
}
void checabtn(){
if(digitalRead(botao)== HIGH){
btnclicado = 1;
btnliberado = 0;
}else {
btnliberado = 1;
}
if((btnclicado == 1 and btnliberado == 1)){
btnclicado = 0;
btnliberado = 0;
trocaLed();
}
}
void setup(){
pinMode(ledR, OUTPUT);
pinMode(ledB, OUTPUT);
pinMode(ledG, OUTPUT);
pinMode(botao, INPUT);
}
void loop(){
checabtn();
}
Eu fiz diferente eu peguei 😊a base do código do semaforo da aula 4 aí eu alterei ele e aí dps liguei ko led rgb aí ele ficou variando de cor entre vermelho verde azul ficou mt top
Agradeço demais pelo seu trabalho!
Led RGB _Legal,educativo e Rico,Grande Bruno.
Professor, parabéns pelas aulas, fiz todo o código com todas as cores e implantei a opção de led apagado!!!Obrigado pelo curso.
Como você fez para apagar o Led ? Não consegui implementar.
@@nelsonsantana3280 Cara, beleza? Basta criar uma função para apagar todos os led's e chamar a função onde desejar. Por exemplo:
void apagarLeds(){
digitalWrite(ledVermelhoPino, LOW);
digitalWrite(ledAzulPino, LOW);
digitalWrite(ledVerdePino, LOW);
}
to tão empolgado que já indiquei esse curso pra meio mundo.
Excelente, obrigado amigo.
Adorei a aula!
kkkkkkkkk, eu ri no final, quando ele falou "gente, olha que coisa fácil", depois de criar varias linhas de código
Obrigadao fessor bruno, voce ajuda muuuito a comunidade que quer aprender
Show
Ótima aula 😊
Muito bom!
Luis Carlos opa, valeu novamente
Olha esses cortes bonitos com jcut hehe Parabéns professor, amo essas aulas
Kkkkkk, viu só, valeu a dica...
Parabéns excelente
Parabéns excelente vídeo
O que atrapalha um pouco quando trabalhamos com push-button é o efeito switch-bouncing, que pode ser solucionado adicionando no código uma função com delay, evitando assim que um único toque seja interpretado na entrada I/O como vários cliques.
Sim, eu mostro no curso como podemos resolver isso
Dava para fazer um novo vídeo somente refatorando o código, por exemplo, transformando o ciclo em um vetor de inteiros e cada posição contendo um valor que corresponde a uma cor específica. Além disso, criar uma função que recebe o valor de uma cor e exibe ela (basicamente unir as funções vermelho(), verde() e azul() em uma única função).
De resto, vídeo muito massa. Nunca nem imaginei usar classes com Arduino o.O Ansioso pela próxima aula.
Sim sim, dá pra fazer de muitas formas, porém, eu preciso fazer de uma forma mais didática, mas você está certíssimo
No caso dos resistores, não basta ligar um resistor no cátodo ?
Sem o negativo fica difícil né meu patrão kkkk
Para quem tiver fazendo no tinkercad e tiver com problema na hora do incremento do ciclo, tenta mudar o maximo de "#define maximo 3" para "int maximo=3" por alguma razão o compilador não tá fazendo uma comparação normal.
Muito obrigado.
Estava com este problema
Olá , tudo bem? estou acompanhando seu curso de Arduino , quero fazer um projeto de automação rural, eu preciso ligar uma bomba d'água, é muito complicado?
Cara, beleza? Acredito que não terá grandes dificuldades. Pense apenas se deseja que a bomba terá uma liberação total da água ou fracionada. Pelo que me lembro usando a bomba solenoide terá apenas o estado ligado e desligado. E usando um motor para ir fechando a passagem da água como um registro poderá controlar o quanto de água irá passar
O que acontece se nao colocar resistor no botao??? , professor responde essa fessor
Bom dia professor, gostaria de saber porque no meu notebook o thinkercad não aparece todos os componentes do arduíno, não consigo montar projetos com RFID, Bluetooth, ESP porque não consigo encontrar esses e outros componentes no thinkercad. Me ajuda, por favor, obrigado.
#define botao 2
#define vermelho 3
#define verde 5
#define azul 4
int estado;
int fase;
int estado1;
void setup()
{
pinMode(botao, INPUT);
pinMode(vermelho, OUTPUT);
pinMode(verde, OUTPUT);
pinMode(azul, OUTPUT);
fase = 1;
estado1 = digitalRead(botao);
}
void loop()
{
estado = digitalRead(botao);
if ((estado == HIGH) && (estado1 == LOW)) {
if (fase < 6) {
fase = fase + 1;
} else {
fase = 1;
}
}
estado1 = estado;
if (fase == 1) {
digitalWrite(vermelho, HIGH);
digitalWrite(verde, LOW);
digitalWrite(azul, LOW);
}
if (fase == 2) {
digitalWrite(vermelho, LOW);
digitalWrite(verde, HIGH);
digitalWrite(azul, LOW);
}
if (fase == 3) {
digitalWrite(vermelho, LOW);
digitalWrite(verde, LOW);
digitalWrite(azul, HIGH);
}
if (fase == 4) {
digitalWrite(vermelho, LOW);
digitalWrite(verde, HIGH);
digitalWrite(azul, HIGH);
}
if (fase == 5) {
digitalWrite(vermelho, HIGH);
digitalWrite(verde, HIGH);
digitalWrite(azul, LOW);
}
if (fase == 5) {
digitalWrite(vermelho, HIGH);
digitalWrite(verde, LOW);
digitalWrite(azul, HIGH);
}
if (fase == 6) {
digitalWrite(vermelho, HIGH);
digitalWrite(verde, HIGH);
digitalWrite(azul, HIGH);
}
delay(1);
}
Falaaa moçadaaaa kkkk
Montei meu código buscando uma lógica mais simples (acredito eu) e também inclui uma função para demonstrar as cores possíveis para o usuário no metodo setup() para executar apenas uma vez. Segue o código:
/*Aula 8 - ruclips.net/video/J-AIyn958RE/видео.html
Ideia do programa 2:
- ao pressionar o botao 1 vez o led ira acender uma cor e apagar as outras do led RGB
- e a cada vez que for pressionado vai acender a proxima e apagar as outras, onde:
-a porta PWM 5 ao receber sinal de entrada dos 5v (INPUT) e passara a ter o estado de HIGHT - botao pressionado
-a porta PWM 5 ao receber o sinal de entrada de 0v do terra/negativo do resistor tera o estado LOW - botao nao pressionado
Montagem na protoboard:
Para o Led RGB:
-cor vermelho: conectar o jumper na porta digital 4 da placa e na j2 da protoboard
-resistor....: conectar o resistor de 150 ohms na j3 (catodo) e no negativo da protoboard
-cor azul....: conectar o jumper na porta digital 3 da placa e na j4 da protoboard
-cor verde...: conectar o jumper na porta digital 2 da placa e na j5 da protoboard
Para o botao:
-conectar o botao com o o terminal 1b na f8, terminal 2b na f10, terminal 1a na e8 e terminal 2a na e10 da protoboard
-conectar o resistor de 150 ohms com o terminal na b10 e no negativo da protoboard
-conectar o jumper no positivo e a outra ponta no a8 da protoboard
-conectar o jumper GND da placa na linha do negativo da protoboard
-conectar o jumer 5v da placa na linha do positivo da protoboard
*/
//:: CONSTANTES E VARIAVIES GLOBAL ::
#define btnPino 5
#define ledVermelhoPino 4
#define ledAzulPino 3
#define ledVerdePino 2
#define ledVermelhoAzul 43
#define ledVermelhoVerde 42
#define ledAzulVerde 32
#define tmpDemoLed 1000
int botao_Pres = 0;
int botao_Solto = 0;
int led_aceso_pino = 0;
//:: METODOS PRINCIPAIS ::
void setup() {
pinMode(btnPino, INPUT);
pinMode(ledVermelhoPino, OUTPUT);
pinMode(ledAzulPino, OUTPUT);
pinMode(ledVerdePino, OUTPUT);
demoLed();
}
void loop() {
if(digitalRead(btnPino) == HIGH){
botao_Pres = 1;
botao_Solto = 0;
}
else{
botao_Solto = 1;
}
keyUp();
}
//:: METODOS AUXILIARES ::
void demoLed(){
acenderLed(ledVermelhoPino);
delay(tmpDemoLed);
apagarLeds();
acenderLed(ledAzulPino);
delay(tmpDemoLed);
apagarLeds();
acenderLed(ledVerdePino);
delay(tmpDemoLed);
apagarLeds();
acenderLed(ledVermelhoPino);//vermelho + azul = rosado
acenderLed(ledAzulPino);
delay(tmpDemoLed);
apagarLeds();
acenderLed(ledVermelhoPino);//vermelho + verde = amarelado
acenderLed(ledVerdePino);
delay(tmpDemoLed);
apagarLeds();
acenderLed(ledAzulPino);//azul + verde = azul esverdeado
acenderLed(ledVerdePino);
delay(tmpDemoLed);
apagarLeds();
}
void keyUp(){
if(botao_Pres == 1 and botao_Solto == 1){
botao_Pres = 0;
botao_Solto = 0;
trocaLed();
}
}
void trocaLed(){
switch (led_aceso_pino){
case 0:
led_aceso_pino = ledVermelhoPino;
break;
case ledVermelhoPino:
led_aceso_pino = ledAzulPino;
break;
case ledAzulPino:
led_aceso_pino = ledVerdePino;
break;
case ledVerdePino:
led_aceso_pino = ledVermelhoAzul;
break;
case ledVermelhoAzul:
led_aceso_pino = ledVermelhoVerde;
break;
case ledVermelhoVerde:
led_aceso_pino = ledAzulVerde;
break;
default:
led_aceso_pino = 0;
}
apagarLeds();
acenderLed(led_aceso_pino);
}
void apagarLeds(){
digitalWrite(ledVermelhoPino, LOW);
digitalWrite(ledAzulPino, LOW);
digitalWrite(ledVerdePino, LOW);
}
void acenderLed(int corLedPino){
//Verifica se e para acender uma combinacao de cores ou 1 cor (default)
switch (corLedPino){
case ledVermelhoAzul:
digitalWrite(ledVermelhoPino, HIGH);
digitalWrite(ledAzulPino, HIGH);
break;
case ledVermelhoVerde:
digitalWrite(ledVermelhoPino, HIGH);
digitalWrite(ledVerdePino, HIGH);
break;
case ledAzulVerde:
digitalWrite(ledAzulPino, HIGH);
digitalWrite(ledVerdePino, HIGH);
break;
default:
digitalWrite(corLedPino, HIGH);
}
}
Oi, obrigado pela aula. Eu estou com problemas para fazer o led mudar de cor no tinkercad, eu coloco em iniciar simulação e o led só fica verde, por favor me ajude
Consegui resolver esse problema, agora estou com outro problema, a cor azul não aparece no tinkercad
Já resolve esse problema, era só o fio que o led RGB não reconheceu
Boa noite!! fiz o código exatamente igual porem o led fica aceso logo que ligo o arduino, no tinkercad também
Cara, beleza? Creio que tenha colocado o resistor do botão como Pull Up. Dá uma conferida na aula 7, mas o resumo é:
-resistor ligado na linha do GND o led so acende se pressionar o botao
-resistor ligado na linha dos 5v o led fica aceso e ao pressionar o botao o led apaga
Boa tarde professor
Não meu código deu este erro no loop
Uma definição de função nao É permitida aqui antes
Eu não sei pra vocês, mas pra mim a função verificaBtn simplesmente não funciona no TinkerCad
Achei que o led ia queimar ou dar problema porque você tinha esquecido do gnd. Ai lembrei dos resistores no módulo, ufa..
kkk, mas neste caso não dá problema pq não tem corrente, se não tiver gnc (terra) conectado não tem corrente, entendeu?
Que mancada minha aqui, esqueci desse detalhe kkkkkkkkkkkkkkkkkkkk
Olá professor, primeiramente parabéns pelo trabalho. Estou tentando implementar nesse código um potenciometro pra controlar a luminosidade do led, o problema é q ela deve ser em tempo real mas o troca led só inicia o ciclo quando o botão é pressionado, ou seja, tudo oq consegui fazer até agora é alterar a corrente do potenciometro pra só no próximo ciclo a luminosidade ser alterada.
Acabei de conseguir, implementei uma função chamada acende q recebe o ledR ou o ledG ou o B de acordo com o if do troca led e então dentro dela é alterado o brilho e retornado para o loop.
Professor, ensina a gente a fazer um joke vírus, vai ser legal
EdTube kkkk, tá querendo trollar alguém...
Boa noite Professor, não estou conseguindo adicionar outras cores nessa aula poderia me ajudar no código de programação.
Grato.
Até consegui adicionar, só não estou conseguindo faze-las acender...deve ser algum problema com meu contador da variavel MAXIMO, mas não estou conseguindo resolver
@@willianwcz se adicionar mais uma fica +0 ou sem, se adicionar mais duas fica +1 e assim vai
Professor, fiz a implementação das demais cores, mas gostaria de saber como faço para que após a ultima cor o próximo clique do botão leve a um loop automático entre as cores?
Cara, beleza? Não sei se entendi muito bem, mas poderá acrescentar uma função que vai alterando as cores depois de 1 segundo, por exemplo (usando o delay). E nesta funcao poderá até combinar as cores acesas. No meu código criei uma função chamada demoLed() que é chamada no setup para mostrar para o usuários as cores possíveis e depois da última cor chamo outra função para apagar todos os leds (LOW) e em seguida vai para o loop() para o usuário ir pressionando o botão. Ex:
//:: CONSTANTES E VARIAVIES GLOBAL ::
#define btnPino 5
#define ledVermelhoPino 4
#define ledAzulPino 3
#define ledVerdePino 2
#define ledVermelhoAzul 43
#define ledVermelhoVerde 42
#define ledAzulVerde 32
#define tmpDemoLed 1000
int botao_Pres = 0;
int botao_Solto = 0;
int led_aceso_pino = 0;
void apagarLeds(){
digitalWrite(ledVermelhoPino, LOW);
digitalWrite(ledAzulPino, LOW);
digitalWrite(ledVerdePino, LOW);
}
void demoLed(){
acenderLed(ledVermelhoPino);
delay(tmpDemoLed);
apagarLeds();
acenderLed(ledAzulPino);
delay(tmpDemoLed);
apagarLeds();
acenderLed(ledVerdePino);
delay(tmpDemoLed);
apagarLeds();
acenderLed(ledVermelhoPino);//vermelho + azul = rosado
acenderLed(ledAzulPino);
delay(tmpDemoLed);
apagarLeds();
acenderLed(ledVermelhoPino);//vermelho + verde = amarelado
acenderLed(ledVerdePino);
delay(tmpDemoLed);
apagarLeds();
acenderLed(ledAzulPino);//azul + verde = azul esverdeado
acenderLed(ledVerdePino);
delay(tmpDemoLed);
apagarLeds();
}
#define ledG 7
int ligado=0;
void setup()
{
pinMode(INPUT,btn);
pinMode(OUTPUT,ledG);
pinMode(OUTPUT,ledB);
pinMode(OUTPUT,ledR);
}
void loop()
{
if(digitalRead(btn)==HIGH){
delay(500);
switch(ligado){
case 0:
digitalWrite(ledG,HIGH);
ligado=1;
break;
case 1:
digitalWrite(ledG,LOW);
digitalWrite(ledB,HIGH);
ligado=2;
break;
case 2:
digitalWrite(ledB,LOW);
digitalWrite(ledR,HIGH);
ligado=0;
break;
}
}
}
Alguém sabe porque o ciclo é -1? Eu sei que o ciclo começa com zero, o máximo não seria ir até 2 e depois voltar para o zero ?
Como é o nome dessa plataforma que você utiliza pra programação do arduino? 😅
Gabriel Oliveira Arduino 😂
CFBCursos acho que me referi errado. Quis dizer o software que você utiliza no video para a programação no arduino
Arduino mesmo, é um software proprio do Arduino, segue o link
www.arduino.cc/en/Main/Software
Qual a diferença de um led RGB e um modulo RGB???
O módulo já vem com o LED montado e as conexões já feitas com todos os componentes para que o LED funcione
@@cfbcursos muito obrigado
Fiz o código abaixo mas não deu certo, o vermelho, verde, azul e ciano acendem mas o magenta, amarelo e branco não acendem, ficam sempre vermelho, se alguém puder ajudar
#define ledR 2
#define ledG 3
#define ledB 4
#define botao 7
#define maximo 7
int btnclicado=0;
int btnliberado=0;
int ciclo=0;
void vermelho (){
digitalWrite(ledR,1);
digitalWrite(ledG,0);
digitalWrite(ledB,0);
}
void verde (){
digitalWrite(ledR,0);
digitalWrite(ledG,1);
digitalWrite(ledB,0);
}
void azul (){
digitalWrite(ledR,0);
digitalWrite(ledG,0);
digitalWrite(ledB,1);
}
void amarelo (){
digitalWrite(ledR,1);
digitalWrite(ledG,1);
digitalWrite(ledB,0);
}
void ciano (){
digitalWrite(ledR,0);
digitalWrite(ledG,1);
digitalWrite(ledB,1);
}
void magenta (){
digitalWrite(ledR,1);
digitalWrite(ledG,0);
digitalWrite(ledB,1);
}
void branco (){
digitalWrite(ledR,1);
digitalWrite(ledG,1);
digitalWrite(ledB,1);
}
void trocaLed (){
if (ciclo==0){
vermelho();
}else if(ciclo==1){
verde();
}else if(ciclo==2){
azul();
}else if(ciclo==3){
amarelo();
}else if(ciclo==4){
ciano();
}else if(ciclo==5){
magenta();
}else if(ciclo==6){
branco();
}
ciclo++;
if(ciclo>maximo-1){
ciclo=0;
}
}
void verificaBtn(){
if(digitalRead(botao)==HIGH){
btnclicado=1;
btnliberado=0;
}else{
btnliberado=1;
}
if((btnclicado==1)and(btnliberado==1)){
btnclicado=0;
btnliberado=0;
trocaLed();
}
}
void setup(){
pinMode(ledR,OUTPUT);
pinMode(ledG,OUTPUT);
pinMode(ledB,OUTPUT);
pinMode(botao,INPUT);
}
void loop(){
verificaBtn();
}
Tentei fazer o exercício porém no tinkercar funciona com todas as cores do led rgb e na prática não, confere meu código.
#define ledR 2
#define ledG 4
#define ledB 3
#define btn 7
#define maximo 6 //Cores configuradas
int btn_Clicado = 0;
int btn_Liberado = 0;
int ciclo = 0;
void amarelo(){
//Amarelo - RGB (255,255,0);
digitalWrite(ledR, HIGH);
digitalWrite(ledG, HIGH);
digitalWrite(ledB, LOW);
}
void magenta(){
//Magenta - RGB (255,0,255);
digitalWrite(ledR, HIGH);
digitalWrite(ledG, LOW);
digitalWrite(ledB, HIGH);
}
void ciano(){
//Ciano - RGB (0,255,255);
digitalWrite(ledR, LOW);
digitalWrite(ledG, HIGH);
digitalWrite(ledB, HIGH);
}
void vermelho(){
//Vermelho - RGB (255,0,0);
digitalWrite(ledR, HIGH);
digitalWrite(ledG, LOW);
digitalWrite(ledB, LOW);
}
void verde(){
//Verde - RGB (0,255,0);
digitalWrite(ledR, LOW);
digitalWrite(ledG, HIGH);
digitalWrite(ledB, LOW);
}
void azul(){
//Azul - RGB (0,0,255);
digitalWrite(ledR, LOW);
digitalWrite(ledG, LOW);
digitalWrite(ledB, HIGH);
}
void setup() {
pinMode(ledR, OUTPUT);
pinMode(ledG, OUTPUT);
pinMode(ledB, OUTPUT);
pinMode(btn, INPUT);
}
void troca_Led(){
if (ciclo == 1){
vermelho();
}
else if (ciclo == 2){
verde();
}
else if (ciclo == 3){
azul();
}
else if (ciclo == 5){
amarelo();
}
else if (ciclo == 6){
magenta();
}
else if (ciclo == 7){
ciano();
}
ciclo++;
if(ciclo > maximo - 1){
ciclo = 0;
}
}
void verifica_Btn(){
if(digitalRead(btn) == HIGH){
btn_Clicado = 1;
btn_Liberado = 0;
} else {
btn_Liberado = 1;
}
if((btn_Clicado == 1) && (btn_Liberado == 1)){
btn_Clicado = 0;
btn_Liberado = 0;
troca_Led();
}
}
void loop() {
verifica_Btn();
}
Voce pulou a contagem de "4" no incremento da variavel CICLO na troca de cores
#define ledR 2
#define ledG 3
#define ledB 4
#define botao 7
#define maximo 6
int btnclicado=0;
int btnliberado=0;
int ciclo=0;
void vermelho (){
digitalWrite(ledR,1);
digitalWrite(ledG,0);
digitalWrite(ledB,0);
}
void verde (){
digitalWrite(ledR,0);
digitalWrite(ledG,1);
digitalWrite(ledB,0);
}
void azul (){
digitalWrite(ledR,0);
digitalWrite(ledG,0);
digitalWrite(ledB,1);
}
void va (){
digitalWrite(ledR,0);
digitalWrite(ledG,1);
digitalWrite(ledB,1);
}
void vv (){
digitalWrite(ledR,1);
digitalWrite(ledG,1);
digitalWrite(ledB,0);
}
void av (){
digitalWrite(ledR,1);
digitalWrite(ledG,0);
digitalWrite(ledB,1);
}
void todos (){
digitalWrite(ledR,1);
digitalWrite(ledG,1);
digitalWrite(ledB,1);
}
void trocaLed (){
if (ciclo==0){
vermelho();
}else if(ciclo==1){
verde();
}else if(ciclo==2){
azul();
}else if(ciclo==3){
vv();
}else if(ciclo==4){
av();
}else if(ciclo==5){
va();
}else if(ciclo==6){
todos();
}
ciclo++;
if(ciclo>maximo-1){
ciclo=0;
}
}
void verificaBtn(){
if(digitalRead(botao)==HIGH){
btnclicado=1;
btnliberado=0;
}else{
btnliberado=1;
}
if((btnclicado==1)and(btnliberado==1)){
btnclicado=0;
btnliberado=0;
trocaLed();
}
}
void setup(){
pinMode(ledR,OUTPUT);
pinMode(ledG,OUTPUT);
pinMode(ledB,OUTPUT);
pinMode(botao,INPUT);
}
void loop(){
verificaBtn();
}