Módulo relé 4 canais e controle remoto IR
A ideia deste post de módulo relé 4 canais com Arduino surgiu a alguns dias atrás quando um leitor do blog escreveu com dúvidas sobre como programar o Arduino para utilizar um controle remoto IR e acionar relés.
O projeto dele é de automação residencial e consiste em utilizar o Arduino Uno, uma placa com 4 relés e controle remoto IR para acionar 4 lâmpadas.
São lâmpadas de cores diferentes: vermelha, amarela, verde e azul, que devem ser acionadas ao apertar o botão correspondente no controle remoto. Por fim, as teclas ON e OFF acendem e apagam todas as lâmpadas de uma vez, como mostrado nesse vídeo utilizando leds no lugar das lâmpadas:
Na foto abaixo, a placa de relés utilizada no projeto:
Eu já havia escrito um artigo sobre Controle Remoto IR aqui no site, e apesar do controle IR da Open Jumper ser um pouco diferente, podemos usar a mesma biblioteca IRremote que usamos no outro artigo. O que muda são apenas alguns códigos hexadecimais das teclas.
Na imagem acima a tabela que montei mostrando o controle remoto utilizado, e seus respectivos códigos.
Circuito arduino e módulo relé 4 canais
Para testar o programa, montei um circuito com leds no lugar das lâmpadas. O comum de cada relé (pino central) eu liguei em 5 Volts, e o contato NO (Normal Open/Normal Aberto) de cada relê, eu liguei no anodo do led correspondente.
Note que na placa há um jumper entre o pino JD-Vcc e Vcc. O JD-Vcc é utilizado quando há necessidade de uma fonte externa para ativar os relés. Como vamos utilizar os 5 volts do próprio Arduino, mantenha o jumper na placa.
Por fim, o programa, que eu tentei manter o mais simples possível, não só para facilitar o entendimento, mas também tornar qualquer modificação mais tranquila. Se necessário, troque algumas definições e acionamento de portas por rotinas utilizando FOR, por exemplo, ou use o comando IF no lugar de SWITCH. São várias as opções.
// Programa : Relé 4 Canais com controle IR // Autor : Arduino e Cia #include <IRremote.h> int RECV_PIN = 11; //Ligado ao pino do receptor IR (pino S) int armazenavalor = 0; int pinorele1 = 2; //Pino do Arduino ligado ao IN1 da placa de relés int pinorele2 = 3; //Pino do Arduino ligado ao IN2 da placa de relés int pinorele3 = 4; //Pino do Arduino ligado ao IN3 da placa de relés int pinorele4 = 5; //Pino do Arduino ligado ao IN4 da placa de relés int estadorele1 = HIGH; //Armazena o estado do relé 1 int estadorele2 = HIGH; //Armazena o estado do relé 2 int estadorele3 = HIGH; //Armazena o estado do relé 3 int estadorele4 = HIGH; //Armazena o estado do relé 4 IRrecv irrecv(RECV_PIN); decode_results results; void setup() { pinMode(pinorele1, OUTPUT); //Define os pino dos reles como saída pinMode(pinorele2, OUTPUT); pinMode(pinorele3, OUTPUT); pinMode(pinorele4, OUTPUT); digitalWrite(pinorele1, estadorele1); //Coloca os pinos dos reles em digitalWrite(pinorele2, estadorele2); //estado alto (rele desligado) digitalWrite(pinorele3, estadorele3); digitalWrite(pinorele4, estadorele4); Serial.begin(9600); //Inicializa a serial irrecv.enableIRIn(); // Inicializa o receptor IR } void loop() { //Verifica se o sensor IR recebeu algum sinal if (irrecv.decode(&results)) { //Mostra na serial o valor lido pelo sensor IR Serial.print("Valor lido : "); Serial.println(results.value, HEX); //Armazena o sinal recebido pelo sensor IR armazenavalor = (results.value); switch (armazenavalor) { case 0xFF22DD: //Verifica se a tecla vermelha foi acionada estadorele1 = !estadorele1; //Aciona rele 1 e liga led vermelho digitalWrite(pinorele1, estadorele1); break; case 0xFFE01F: //Verifica se a tecla amarela foi acionada estadorele2 = !estadorele2; //Aciona rele 2 e liga led amarelo digitalWrite(pinorele2, estadorele2); break; case 0xFF02FD: //Verifica se a tecla verde foi acionada estadorele3 = !estadorele3; //Aciona rele 3 e liga led Verde digitalWrite(pinorele3, estadorele3); break; case 0xFF906F: //Verifica se a tecla azul foi acionada estadorele4 = !estadorele4; //Aciona rele 4 e liga led azul digitalWrite(pinorele4, estadorele4); break; case 0xFFE21D: //Verifica se a tecla OFF foi acionada //Desliga todos os reles, colocando as portas em nivel alto digitalWrite(pinorele1, HIGH); digitalWrite(pinorele2, HIGH); digitalWrite(pinorele3, HIGH); digitalWrite(pinorele4, HIGH); //Seta o estado de todos os reles para alto (desligados) estadorele1 = HIGH; estadorele2 = HIGH; estadorele3 = HIGH; estadorele4 = HIGH; break; case 0xFFA25D: //Verifica se a tecla ON foi acionada //Liga todos os reles, colocando as portas em nivel baixo digitalWrite(pinorele1, LOW); digitalWrite(pinorele2, LOW); digitalWrite(pinorele3, LOW); digitalWrite(pinorele4, LOW); //Seta o estado de todos os reles para baixo (ligados) estadorele1 = LOW; estadorele2 = LOW; estadorele3 = LOW; estadorele4 = LOW; break; case 0xFF42BD: //Verifica se a tecla 7 foi acionada //Desliga todos os reles, colocando as portas em nivel alto digitalWrite(pinorele1, HIGH); digitalWrite(pinorele2, HIGH); digitalWrite(pinorele3, HIGH); digitalWrite(pinorele4, HIGH); delay(1000); //Aguarda 1 segundo digitalWrite(pinorele1, LOW); //Aciona o rele 1 delay(500); //Aguarda 500 ms digitalWrite(pinorele2, LOW); //Aciona o rele 2 delay(500); //Aguarda 500 ms digitalWrite(pinorele3, LOW); //Aciona o rele 3 delay(500); //Aguarda 500 ms digitalWrite(pinorele4, LOW); //Aciona o rele 4 delay(2000); //Aguarda 2 segundos //Desliga todos os reles, colocando as portas em nivel alto digitalWrite(pinorele1, HIGH); digitalWrite(pinorele2, HIGH); digitalWrite(pinorele3, HIGH); digitalWrite(pinorele4, HIGH); //Seta o estado de todos os reles para alto (desligados) estadorele1 = HIGH; estadorele2 = HIGH; estadorele3 = HIGH; estadorele4 = HIGH; break; } irrecv.resume(); //Le o próximo valor } }
Como mostrado no vídeo, teste o programa acionando o botão vermelho do controle remoto para acender o led vermelho, amarelo para o amarelo, etc.
Para acender todos os leds de uma vez utilize a tecla ON, e para desligar, a tecla OFF. A tecla com o número 7 do controle remoto apaga todos os leds, depois os acende em sequencia.
O programa ainda exibe no Serial Monitor o valor em hexadecimal das teclas que foram acionadas. Desta forma, você consegue adaptar o programa ao seu controle remoto (dependendo do modelo), apenas alterando esses valores.
Gostou? Confira outros posts usando relé aqui mesmo no Arduino e Cia!
Boa tarde, tenho um projeto semelhante ao seu, só que o meu eu utilizo um Ethernet-shild, os dois primeiros relés funcionam perfeitamente, o problema está no terceiro e o quarto que quando eu coloco eles em HIGH ele volta para LOW acendendo novamente, acredito que seja algo com a energia do arduino, você já passou por algo parecido?
Desde já agradeço
Boa noite Bruno, ainda não tive esse problema, mas pelo que andei lendo, talvez seja interessante você utilizar uma fonte externa para alimentar essa placa de relés. A sua placa é igualzinha à placa que eu usei nesse artigo ? Abraço.
por favor me ajude, toda vez que tento compilar esse programa , sem para nessa linha ( IRrecv irrecv(RECV_PIN); ) ,
controlando_as_saidas:17: error: 'IRrecv' does not name a type
controlando_as_saidas:18: error: 'decode_results' does not name a type
controlando_as_saidas.ino: In function 'void setup()':
controlando_as_saidas:32: error: 'irrecv' was not declared in this scope
controlando_as_saidas.ino: In function 'void loop()':
controlando_as_saidas:37: error: 'irrecv' was not declared in this scope
controlando_as_saidas:37: error: 'results' was not declared in this scope
alguem poderia me ajudar ?
Bom dia Rodrigo ! Você instalou a biblioteca IRremote ?
ola amigo trabalho com automacao residencial e gostei muito do arduino preciso exatamente deste projeto seu para acionar o led igualzinho pois tenho problema no sistema original das fitas para a automacao so que preciso acionar duas fitas separadas ou seja 8 reles tem como me ajudar queria alem diste projeto aprender mais sobre o arduino e acresentar nos projetos meus abracos camil [email protected]
Boa noite ! Podemos conversar sim. Por favor utilize o formulário de contato no lado direito da página. Abraço !
Boa noite, Gostaria de saber porque que em alguns módulos de relé ela é ativada quando em HIGH. No seu caso ela é ativada quando está em LOW, porque?
Boa tarde, isso depende do fabricante e da construção do módulo. Abraço.
cara se no lugar das leds eu colocasse luzes ou outros objetos daria certo ?
com esse codico de fonte
Bom dia Danilo,
Daria sim, tudo vai depender do relé que você estiver usando, mas dê uma olhadinha nesse outro artigo, em que eu uso o relé ligado em 110 V. Você pode usar a mesma idéia para outros módulos :
http://www.arduinoecia.com.br/2013/02/ligando-uma-lampada-com-rele.html
Você pode usar o mesmo código fonte, o que mudaria seria a alimentação dos objetos ligados ao relé. Se tiver dúvida, volte aqui que ajudamos você.
Abraço !
Obrigado , meu relé e igual o seu "!
Opa. Legal. aí fica mais fácil ! 🙂
mas eu queria a sim que nem o seu , mas no lugar das ledes luzes > como faço ?
Entendi. Qual a voltagem das luzes que você vai usar ?
Vou fazer igual ao nosso amigo ai em cima
Uma pergunta: Eu acendo uma lampada com o botão vermelho do controle remoto
Se eu apertar o botão de novo ele vai apagar a lampada acesa?????
Oi Samuel,
Exato, esse comando é o que inverte o estado do led/lampada (no caso do rele 3):
estadorele3 = !estadorele3;
Abraço !
Bom dia, eu sou novo no mundo arduino ,eu fiz seu projeto e deu certo ,eu também dupliquei os códigos para 8 reles e aparentemente deu certo,gostaria de saber se essa e a forma correta de aumentar os reles e se posso aumentar para 16 reles,gostaria de controlar todas as luzes da minha casa com o controle remoto .obrigado.
Boa tarde Edvando,
A princípio, não há problemas em ligar mais módulos. Penso que no seu projeto você não irá acionar um grande número de relés ao mesmo tempo, e por isso não haverá sobrecarga no Arduino.
De qualquer forma, se você verificar que o Arduino está se comportando de maneira estranha com tantos módulos, existe a opção de usar alimentação externa para essas placas de relé, ok ?
Abraço e obrigado !
boa noite amigo,no meu projeto estou usando reles com transistor e fonte externa a carga pro arduino e aproximadamente 14 micro amper por rele ,mais minha duvida principal e sobre o código
eu apena dobrei seu código,posso ir dobrando o código? e posso acrescentar outros códigos por exemplo um LCD 16×2 ou tem que fazer o código do inicio,eu entendo um pouco de eletrônica mais de programação não entendo nada.obrigado.
Oi Edvando,
Pode ir dobrando o código sim, sem problemas. Incluir outras bibliotecas também é relativamente simples, coloque o "INCLUDE" no início do programa, e depois vá adicionando os comandos necessários para inicializar o display.
Eu tenho vários artigos aqui no site em que uso o display LCD 16×2. Peço que dê uma olhadinha e, se precisar de ajuda, entre em contato.
Abraço !
boa tarde Amigo
teria como eu guardar os valores dos reles se estão liga ou desligado e informar em um numero binario para pegar este codigo na serial e mostrar qual esta liga ou desligado
Boa tarde,
Tem sim, você pode guardar esses valores em variáveis e mandar isso pela serial, ou , se precisar de um histórico de acionamentos, armazenar em cartão SD, por exemplo.
Abraço !
É possível com qualquer controle remoto?
Boa noite Daniel,
Com alguns controles mais simples, sim. Com o Arduino você pode montar circuitos para "aprender" os códigos de algum controle remoto, e depois usar esses códigos para acionar as portas do Arduino.
Abraço !
Ola Amigo sou novo na parte automação, e estou fazendo um projeto no meu curso e estou com algumas duvidas, vou fazer duas lampadas acender por controle remoto estou usando uma placa arduino uno, um controle remoto e um rele de dois canais. minha duvida eh se posso fazer um jumper do rele 1 para o rele 2, no caso seria a entrada de energia.no causo da NA do rele e a NA do rele 2.
Boa noite Cristiano,
Eu precisaria ver o circuito para analisar exatamente a ligação que você está pensando em fazer. De qualquer forma, é melhor fazer uma ligação separada para cada lâmpada.
Abraço !
Amigo,
Comprei um módulo relé de 4 canais, mas nao tenho a referência do fabricante se ele liga em LOW ou HIGH. Se eu fizer o teste em LOW ou HIGH, tem perigo de queimar algum componente ?
Abraço !
Boa tarde Matheus,
Não tem problema. A única coisa que pode acontecer é ele ligar na ordem inversa que você precisa. Aí vc vai saber se ele aciona em LOW ou em HIGH.
A única coisa que eu recomendo não inverter é a alimentação do módulo.
Abraço !
ola amigo. Fiz o codigo invertendo o estado do rele a cada toque na mesma tecla , usando : estadorele1 = !estadorele1 ..e um delay… porem, se manter a tecla pressionada , o estado fica invertendo sem parar. Ou seja , teria que ler apenas UMA UNICA vez o hexadecimal que o controle manda, mesmo mantendo pressionada a tecla. pode me ajudar?? alguma dica?? tentei usar um while mas nao dai trava . obrigado . meu email :
[email protected]
Boa noite Roberto,
Nesse artigo eu uso um while justamente pra não acontecer esse tipo de coisas, mas no caso, estou usando um push-button :
http://www.arduinoecia.com.br/2013/08/ligando-uma-lampada-com-rele-e-push.html
Tente adaptar para o seu programa, por favor.
Abraço !
Prezado;
Cada vez que pressiono a mesma tecla do controle remoto aparece um código diferente. O que deve estar acontecendo?
Bom dia Jorge,
Isso eu nunca vi. você está usando o controle remoto do próprio kit ?
Mesmo os exemplos da biblioteca IRremote não conseguem ser compilados…
C:Program Files (x86)ArduinolibrariesRobotIRremoteIRremoteTools.cpp:5: error: 'TKD2' was not declared in this scope
alguém sabe o que pode ser?
Boa noite Flavio,
Eu tive esse mesmo problema. Parece que há um conflito entre a biblioteca IRremote e a RobotIRremote, já que as duas utilizam o mesmo nome. Experimente remover temporariamente a pasta RobotIRremote da pasta Libraries e compilar novamente.
Abraço !
Olá!!Tudo bem? Primeiro parabéns pelo ótimo trabalho e por poder compartilhar seu conhecimento. Eu venho aqui pedir uma ajuda, quando ao carregando da sketcher IRremote.h, dá esse seguinte erro:
C:ArduinolibrariesRobotIRremoteIRremoteTools.cpp:5: error: 'TKD2' was not declared in this scope
E a algum tempo não consigo resolver. Já desinstalei o programa arduino e instalei, de IDE 1.0.6, instalei as bibliotecas e IRremote e desinstalei, enfim, não sei o porque dessa mensagem sempre aparecer falando que não é declarado escopo. Poderia me ajudar? Serei muito grato por isso.
Um grande abraço.Sucesso!!
Boa tarde Leopoldo !
Pelos testes que eu fiz aqui, há um conflito entre a biblioteca IRremote e a RobotIRremote. Experimente remover temporariamente a pasta RobotIRremote da pasta libraries, reinicie a IDE e teste o programa novamente.
Se puder retornar aqui para falar se deu certo, agradeço.
Abraço !
Tem que abrir o arquivo IRremoteInt.h e alterar a biblioteca WProgram.h para Arduino.h.
Na linha 13 deve estar escrito : #include < Arduino.h >, no lugar de: #include < WProgram.h >.
[email protected]
Boa tarde a todos, parabens pelo codigo, eu dupliquei ele, liguei 8 reles e funciona perfeitamente, Na automação, o importante é a alimentação dos equipamentos. Os reles alimentados pelo arduino Uno funcionam perfeitamente. Sem erros. Parabens de novo. detalhe estou sando um controle de tv normal , as teclas de 1 a 8 a, a 9 e o power, muito legal.
Quando tento compilar dá esse erro:
In file included from C:UsersPedroDocumentsArduinolibrariesIRremoteIRremote.cpp:15:
C:UsersPedroDocumentsArduinolibrariesIRremote/IRremoteInt.h:292:2: error: #error "Please add OC4A pin number heren"
C:UsersPedroDocumentsArduinolibrariesIRremoteIRremote.cpp: In member function 'void IRsend::enableIROut(int)':
C:UsersPedroDocumentsArduinolibrariesIRremoteIRremote.cpp:202: error: 'TIMER_PWM_PIN' was not declared in this scope
Boa tarde,
Você instalou a IDE recentemente ? Pode ser um conflito entre a biblioteca IR desse post e a biblioteca IR que já vem com a IDE. Tente retirar essa última temporariamente e veja se o programa compila normalmente.
Abraço!
Fiz como mandado aqui e está tudo certinho e funcionando, mas eu queria implementar um pouco mais usando um DSC1307 para acionar, além do controle remoto, também por tempo: X hora liga, Y hora desliga, vc tem algum tutorial para isso?
Boa noite,
Ainda não tenho nenhum tutorial sobre isso, mas é uma boa sugestão de post. 🙂
Abraço!
Boa tarde, é possível controlar um servo utilizando um arduino e o controle IR sem relé?
Boa noite,
É possível sim, vc não precisa obrigatoriamente do relé.
Abraço!
Alguém poderia me ajudar com esse erro, estou começando agora e não muito.
C:UsersDOUGLASAppDataLocalTemparduino_27418ce7b2d723f6907706f1b0597416sketch_jan06a.ino: In function 'void loop()':
C:UsersDOUGLASAppDataLocalTemparduino_27418ce7b2d723f6907706f1b0597416sketch_jan06a.ino:45:11: warning: overflow in implicit constant conversion [-Woverflow]
case 0xFF22DD: //Verifica se a tecla vermelha foi acionada
^
C:UsersDOUGLASAppDataLocalTemparduino_27418ce7b2d723f6907706f1b0597416sketch_jan06a.ino:51:11: warning: overflow in implicit constant conversion [-Woverflow]
case 0xFFE01F: //Verifica se a tecla amarela foi acionada
^
C:UsersDOUGLASAppDataLocalTemparduino_27418ce7b2d723f6907706f1b0597416sketch_jan06a.ino:57:11: warning: overflow in implicit constant conversion [-Woverflow]
case 0xFF02FD: //Verifica se a tecla verde foi acionada
^
C:UsersDOUGLASAppDataLocalTemparduino_27418ce7b2d723f6907706f1b0597416sketch_jan06a.ino:63:11: warning: overflow in implicit constant conversion [-Woverflow]
case 0xFF906F: //Verifica se a tecla azul foi acionada
^
C:UsersDOUGLASAppDataLocalTemparduino_27418ce7b2d723f6907706f1b0597416sketch_jan06a.ino:69:11: warning: overflow in implicit constant conversion [-Woverflow]
case 0xFFE21D: //Verifica se a tecla OFF foi acionada
^
C:UsersDOUGLASAppDataLocalTemparduino_27418ce7b2d723f6907706f1b0597416sketch_jan06a.ino:82:11: warning: overflow in implicit constant conversion [-Woverflow]
case 0xFFA25D: //Verifica se a tecla ON foi acionada
^
C:UsersDOUGLASAppDataLocalTemparduino_27418ce7b2d723f6907706f1b0597416sketch_jan06a.ino:95:11: warning: overflow in implicit constant conversion [-Woverflow]
case 0xFF42BD: //Verifica se a tecla 7 foi acionada
^
D:Arduinoarduino-1.6.7librariesRobotIRremotesrcIRremoteTools.cpp:5:16: error: 'TKD2' was not declared in this scope
int RECV_PIN = TKD2; // the pin the IR receiver is connected to
^
Foram encontradas múltiplas bibliotecas para "IRremote.h"
Usado: D:Arduinoarduino-1.6.7librariesRobotIRremote
Não usado: D:Arduinoarduino-1.6.7librariesArduino-IRremote-master
exit status 1
Erro compilando.
Olá, primeiramente parabens pelos conteudos exelentes, estao me ajudando muito. Estou fazendo um alarme com arduino uno, dois sensores pir, um relé e uma sirene. Só que só funciona um sensor mandando sinal de uns 3V, o outro manda um sinal baixo de aproximadamente 1,4V e nao esta acionando o relé, ja inverti os pirs e as portas, com funciona mas 2 nao vai, vc teria uma ideia do que pode ser? Obrigado
Oi Danilo,
você consegue identificar se o problema está nos sensores PIR ou no circuito ?
Abraço!
Óla,
boa noite, sou novo em programação e estou tendo problema.
Esta ocorrendo esse erro, poria me ajudar. Talvez eu esteja fazendo algo errado, ficaria muito abradecido.
C:UsersDOUGLASAppDataLocalTemparduino_27418ce7b2d723f6907706f1b0597416sketch_jan06a.ino: In function 'void loop()':
C:UsersDOUGLASAppDataLocalTemparduino_27418ce7b2d723f6907706f1b0597416sketch_jan06a.ino:45:11: warning: overflow in implicit constant conversion [-Woverflow]
case 0xFF22DD: //Verifica se a tecla vermelha foi acionada
^
C:UsersDOUGLASAppDataLocalTemparduino_27418ce7b2d723f6907706f1b0597416sketch_jan06a.ino:51:11: warning: overflow in implicit constant conversion [-Woverflow]
case 0xFFE01F: //Verifica se a tecla amarela foi acionada
^
C:UsersDOUGLASAppDataLocalTemparduino_27418ce7b2d723f6907706f1b0597416sketch_jan06a.ino:57:11: warning: overflow in implicit constant conversion [-Woverflow]
case 0xFF02FD: //Verifica se a tecla verde foi acionada
^
C:UsersDOUGLASAppDataLocalTemparduino_27418ce7b2d723f6907706f1b0597416sketch_jan06a.ino:63:11: warning: overflow in implicit constant conversion [-Woverflow]
case 0xFF906F: //Verifica se a tecla azul foi acionada
^
C:UsersDOUGLASAppDataLocalTemparduino_27418ce7b2d723f6907706f1b0597416sketch_jan06a.ino:69:11: warning: overflow in implicit constant conversion [-Woverflow]
case 0xFFE21D: //Verifica se a tecla OFF foi acionada
^
C:UsersDOUGLASAppDataLocalTemparduino_27418ce7b2d723f6907706f1b0597416sketch_jan06a.ino:82:11: warning: overflow in implicit constant conversion [-Woverflow]
case 0xFFA25D: //Verifica se a tecla ON foi acionada
^
C:UsersDOUGLASAppDataLocalTemparduino_27418ce7b2d723f6907706f1b0597416sketch_jan06a.ino:95:11: warning: overflow in implicit constant conversion [-Woverflow]
case 0xFF42BD: //Verifica se a tecla 7 foi acionada
^
D:Arduinoarduino-1.6.7librariesRobotIRremotesrcIRremoteTools.cpp:5:16: error: 'TKD2' was not declared in this scope
int RECV_PIN = TKD2; // the pin the IR receiver is connected to
^
Foram encontradas múltiplas bibliotecas para "IRremote.h"
Usado: D:Arduinoarduino-1.6.7librariesRobotIRremote
Não usado: D:Arduinoarduino-1.6.7librariesArduino-IRremote-master
exit status 1
Erro compilando.
Oi Douglas,
Há um conflito de bibliotecas na sua IDE, tente remover a biblioteca RobotIRremote
Abraço!
Olá Arduino, queria tirar a dúvida com você e se eu quiser fazer este circuito sem o controle remoto como eu faria ?? E como eu faria pra alimentar com uma fonte externa?? Quando está jampiado aquele vcc eu uso o dá placa é pra eu ligar uma lâmpada como colocaria 110v ali me ajude por favor.. e eu estáva tendo uma ideia bem doida kkk pegar um receptor ir de um aparelho destes dá Net velho isso dá certo?? Desde já agradeço, grande abraço…
Olá, o código funcionou 100%, agora pensando em um modo econômico porque não usar uma mesma tecla para ligar e desligar o mesmo relé, imaginam quantas teclas vão sobrar para aproveitar.
Oi Anderson!
Boa ideia. Na verdade tinha tanta tecla disponível que eu nem pensei nessa economia, mas é uma ótima sugestão. 🙂
Abraço!
MUITO BOM ESSE FORUM.GOSTARIA DE SABER PARA QUE SERVE O JUMPER DO MODULO RELE,E COMO LIGAR UMA FONTE EXTERNA NO MODULO
Oi Marcus,
O jumper serve para selecionar a alimentação pelo Arduino ou a alimentação externa. Vou publicar um pequeno tutorial de como utilizar o relé com fonte externa.
Abraço!
Não estou conseguindo fazer funcionar o receptor 433 com o led Ir, pois o receptor recebe a informação de uma central para trocar de canal da tv. A recepção funciona perfeitamente, mas quando envio o código do controle a informação não está correta emite somente "0". Quando testo sem o receptor para o Arduíno ficar emitindo p código do controle em loop funciona perfeitamente. O que pode estar acontecendo?
Olá, queria saber se eu poderia utilizar este projeto para ao invés de controlar um relê, conseguir acionar um servo motor – como um sistema de desbloqueio para uma porta via controle remoto – teria possibilidade? Sou iniciante em Arduíno, mas estou interessado com a plataforma.
Bom dia Lucas,
Pode sim. Nesse caso você nem precisa da placa de relés, dependendo do servo motor que vc utilizar. Dê uma olhada nesse post também:
http://www.arduinoecia.com.br/2013/06/controlando-um-servo.html
Abraço!
Bom Dia.
Parabéns pelo trabalho. Tenho uma duvida, eu queria que o mesmo botão que eu apertasse no controle, ligaria e desligaria o mesmo relé, eu posso só duplicar a parte que ele ira funcionar? Pois além dessa parte com o controle, irei colocar interruptor de luz também.
Se puder postar um exemplo, ficarei agradecido.
Abraço, e obrigado
Oi Pedro,
Você pode criar uma variável e inverter esse valor a cada acionamento do botão. Eu uso esse princípio no programa deste post:
http://www.arduinoecia.com.br/2013/08/ligando-uma-lampada-com-rele-e-push.html
Abraço!
Boa tarde ,galerinha!
Estou começando programar e me apareceu um problema no qual não consigo resolver,alguem poderia me ajudar ,por favor?
librariesIRremoteIRremote.cpp.o: In function `MATCH(int, int)':
C:Program Files (x86)ArduinolibrariesIRremote/IRremoteInt.h:176: multiple definition of `MATCH(int, int)'
sketchIRsendDemo.ino.cpp.o:C:Program Files (x86)ArduinolibrariesIRremote/IRremoteInt.h:176: first defined here
librariesIRremoteIRremote.cpp.o: In function `MATCH(int, int)':
C:Program Files (x86)ArduinolibrariesIRremote/IRremoteInt.h:176: multiple definition of `MATCH_MARK(int, int)'
sketchIRsendDemo.ino.cpp.o:C:Program Files (x86)ArduinolibrariesIRremote/IRremoteInt.h:176: first defined here
librariesIRremoteIRremote.cpp.o: In function `MATCH(int, int)':
C:Program Files (x86)ArduinolibrariesIRremote/IRremoteInt.h:176: multiple definition of `MATCH_SPACE(int, int)'
sketchIRsendDemo.ino.cpp.o:C:Program Files (x86)ArduinolibrariesIRremote/IRremoteInt.h:176: first defined here
collect2.exe: error: ld returned 1 exit status
Foram encontradas múltiplas bibliotecas para "IRremote.h"
Usado: C:Program Files (x86)ArduinolibrariesIRremote
Não usado: C:Program Files (x86)ArduinolibrariesRobotIRremote
exit status 1
Erro compilando.
Olá boa tarde… quando Ligo o arduino já aciona os Reles, teria como desabilitar isso?
Oi Flávio,
Eu ainda não testei essa solução, mas tente colocar um resistor no circuito, conforme o link abaixo:
https://forum.arduino.cc/index.php?topic=274215.15
Abraço!
Muito bom mesmo parabéns
boa tarde gostei muito do seu post.
Estou com um problema no arduino, e gostaria de sua ajuda.
Gostaria de controlar as luzes do meu quarto com o arduino são 6 circuitos com interruptor simples e quero fazer o paralelo com o controle remoto, pois não consigo passar mais fios e minha mulher não que usar o sistema pelo celular que ficaria bem mais facil. ja procurei varios posts mas só acho com pulsador e a linha de interruptor que uso não tem botão pulsador.teria de ser usando o simples e mudar o estado de 0 para 1 ou de 1 para 0 com o controle e a alimentação dos circuitos ja esta feita com relé modulo de 8 .
Boa noite,
Obrigado. Preciso entender melhor o que vc precisa. Pode me passar o link dos posts que vc viu ? Quem sabe não podemos ter alguma outra ideia de circuito…
Abraço!
Olá, primeiramente muito obrigado por compartilhar o circuito.
Estou utilizando o mesmo programa para fazer acionar válvulas eletropneuáticas com os relès.
Já alterei os códigos para os do meu controle e agora gostaria de saber qual comando utilizar para executar uma sequencia repetidamente até que o botão off seja pressionado. Seria mais ou menos como a sequencia que você utilizou na tecla 7.
Aguardo
Oi Pedro,
Obrigado. Faça um loop que fique sempre testando se a tecla 7 foi pressionada.. acho que é relativamente simples de fazer, pq pelo que eu entendi você vai manter essa sequencia de comandos sempre ativa, correto ?
Abraço!
Olá, estou a usar o seu código, com algumas modificações para fazer o seguinte: Tenho um projector para poder ver filmes em tela grande, mas a minha tela é um estore da IKEA. o que fiz foi colocar um motor no estore ligado com uma ponte H L298, para poder fazer rodar o motor para a esquerda e para a direita para subir e descer a tela, até ai tudo ok, primo a tecla de power do controlo remoto do projector e a tela desce, mas o problema reside em fazer subir a tela pois o projector desliga premindo duas vezes no power e se tento colocar o mesmo valor o IDE do arduino diz que o valor é duplicado, mas mesmo que isso não acontecesse assim que premia em power ela iria logo subir e o projector ainda poderia ficar ligado pois se não voltar a premir em alguns segundos tudo fica na mesma, há hipótese de fazer um código para ter de premir a mesma tecla 2 vezes em x segundos para acionar um comando e se isso não acontecer passa ao estado de repouso? obrigado.
Boa tarde!
Primeiramente Feliz Ano Novo!
Amigo estou tentando criar um projeto na minha casa, quero usar o sensor bluetooth, pra enviar dados para o arduino, que atraves de um LED IR(infravermelho), envia dados para ligar a tv, tem como eu fazer esse processo para se transmitido os dados via comando de voz d meu smartphofem, para o arduino e do arduino os dados serem passados para a IR acionar a tv.
desde ja muito obg.
[email protected]
esse maldito erro
C:UsersAsusDesktopsketch_oct08asketch_oct08asketch_oct08a.ino:97:6: warning: overflow in implicit constant conversion [-Woverflow]
case 0xFF42BD: //Verifica se a tecla 7 foi acionada
^
antigamente funcionava não sei de onde saiu esse erro
me ajuda aí gente valeu!
boa noite !
usei seu código para luzes de minha casa, porem, um dos reles quando eu ligo ele ja inicia ligado.
você saberia me dizer o por que de isto acontecer?
ja carreguei varias vezes porem o problema e o mesmo.
obrigado
donizete
boa noite!
muito legal o Artigo. parabens…
tenho um problema que ao energizar o arduino, um dos reles inicia ligado e os outros tres não.
mas as funções funcionam corretamente.
sabe me dizer o que pode estar acontecendo.
ja compilei varias vezes o codigo e carreguei sem problemas.
pode me ajudar?
obrigado
olá meu bom, bom dia ,gostaria de receber e/ou visualizar código p/ acionamento de 4 relés via internet ; desde já agradeço…
Boa tarde,
Legal. Que tipo de módulo vc está pensando em usar para a comunicação wireless?
Abraço!
Adilson
Ola amigo poderia me dar uma ajuda esse codigo não esta foncionando no meu arduino uno esta dando uma erro de copilação vc poderia me ajudar?
Boa tarde! Conseguirei acionar válvulas de 12Vcc usando esse código ao invés de relés? ou devo usar os relés para acionar as válvulas? Pretendo acionar 10 válvulas individualmente ou 5 pares de válvulas.
Boa tarde,
Recomendo usar os relés para acionar as válvulas. 🙂
Abraço!
Adilson
Boa tarde, eu comprei um módulo de 16 relés para ligar lâmpadas e algumas outras mais futuramente… Se eu copiar e fizer algumas edições no código, consigo adicionar mais botões para acionar outros relés?
Oi Renan,
Tranquilamente, é bem simples de adicionar mais comandos. 😉
Abraço!
Adilson
Boa tarde. Vi que você “ligou” o shield direto no vcc e ground do arduino. Em outras pesquisas vi que mesmo sem acionar o relé passa um quantidade consideravel de corrênte, diferente do relé de estado sólido. Sendo assim, é aconselhavel “ligar” o shield no vcc e no gnd do arduino ao invés de liga-lo em uma fonte externa.