Pessoal, estou fazendo um projeto aqui mas estou tento problemas.

no meu projeto teria que ligar e desligar duas lampadas, mas só consigo fazer isso se colocar um botão pra ligar e outro pra desligar, então no fim tenho que utilizar 4 botões do controle..

resumindo queria que o botão fizesse as duas funções liga e desliga a lampada.. mas sendo cada comando para uma lampada.

alguem teria alguma ideia?

#include <IRremote.h>

int RECV_PIN = 11;
float armazenavalor;
int pinoledvermelho = 5;
int pinoledverde = 12;

IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
pinMode(pinoledvermelho, OUTPUT);
pinMode(pinoledverde, OUTPUT);
Serial.begin(9600);
irrecv.enableIRIn(); // Inicializa o receptor IR
}

void loop()
{
if (irrecv.decode(&results))
{
Serial.print("Valor lido : ");
Serial.println(results.value, HEX);
armazenavalor = (results.value);
if (armazenavalor == 0xFF30CF) //Verifica se a tecla 1 foi acionada
{
digitalWrite(pinoledvermelho, HIGH); //Acende o led vermelho
}
if (armazenavalor == 0xFF18E7) //Verifica se a tecla 2 foi acionada
{
digitalWrite(pinoledvermelho, LOW); //Apaga o led vermelho
}
if (armazenavalor == 0x373119) //Verifica se a tecla 4 foi acionada
{
digitalWrite(pinoledverde, HIGH); //Acende o led verde
}
if (armazenavalor == 0x36D125) //Verifica se a tecla 5 foi acionada
{
digitalWrite(pinoledverde, LOW); //Apaga o led verde
}
if (armazenavalor == 0xFF52AD) //Verifica se a tecla 9 foi acionada
{
digitalWrite(pinoledvermelho, LOW); //Apaga todos os leds
digitalWrite(pinoledverde, LOW);
}
irrecv.resume(); //Le o próximo valor
}
}

Exibições: 1157

Responder esta

Respostas a este tópico

Tenho este aqui que montei para 3 lampadas, basta você ignorar uma. De uma olhada no hardware.

Com os contatos do relé você aciona a carga que quiser.

Ai vai o código:

#include <WProgram.h> // biblioteca do IR
#include <NECIRrcv.h>
#define InfraVermelho 9 // pino 9 recebe IR
int rele1 = 2; // pino 2 recebe relé 1
int rele2 = 3; // pino 3 recebe relé 2
int rele3 = 4; // pino 4 recebe relé 3
int botao1 = 5; // pino 5 recebe botão 1
int botao2 = 6; // pino 6 recebe botão 2
int botao3 = 7; // pino 7 recebe botão 3
int aciona1 = 0;
int aciona2 = 0;
int aciona3 = 0;
unsigned long capturaCodigo = 0;
NECIRrcv ir (InfraVermelho);

void setup()
{
Serial.begin(9600); // Inicia comunicação com a tela do PC
pinMode (rele1,OUTPUT); // Definido que o o pino rele1 será do tipo saída de sinal
digitalWrite(rele1,0);
pinMode (botao1,INPUT); // Definido que o pino botao1 será do tipo entrada de sinal
digitalWrite(botao1,1);
pinMode (rele2, OUTPUT); // Definido que o o pino rele2 será do tipo saída de sinal
digitalWrite(rele2,0);
pinMode (botao2, INPUT); // Definido que o pino botao2 será do tipo entrada de sinal
digitalWrite(botao2,1);
pinMode (rele3, OUTPUT); // Definido que o o pino rele3 será do tipo saída de sinal
digitalWrite(rele3,0);
pinMode (botao3, INPUT); // Definido que o pino botao3 será do tipo entrada de sinal
digitalWrite(botao3,1);
ir.begin(); //inicializa função infravermelho
}
void loop()
{
int leitura = digitalRead(botao1);
if (leitura == 0)
aciona1 = !aciona1;
digitalWrite (rele1,aciona1);
delay (200);
{
int leitura = digitalRead(botao2);
if (leitura == 0)
aciona2 = !aciona2;
digitalWrite (rele2,aciona2);
delay (120);
{
int leitura = digitalRead(botao3);
if (leitura == 0)
aciona3 = !aciona3;
digitalWrite (rele3,aciona3);
delay (120);

while (ir.available()) {
capturaCodigo = ir.read() ; // Captura toda entrada de dados que seja infra vermelho e armazena na variavel capturaCodigo do tipo long.
Serial.println(capturaCodigo); // Imprime no serial monitor o valor capturado ja declado na variavel.

if (capturaCodigo == 3008151360){
aciona1 = !aciona1;
digitalWrite (rele1,aciona1);
delay (120);
}

if (capturaCodigo == 3526213440){
aciona2 = !aciona2;
digitalWrite (rele2,aciona2);
delay (200);
}

if (capturaCodigo == 2556936000){
aciona3 = !aciona3;
digitalWrite (rele3,aciona3);
delay (200);
}

}
}
}
}

estou com um erro na hora de carregar pro arduino

C:\Program Files (x86)\Arduino\libraries\NECIRrcv/NECIRrcv.h:85: error: 'byte' does not name a type

você sabe a solução???

sendo que tenho a biblioteca NECIRrcv.h

qual a versão do seu arduino IDE?

Olá Rodrigo, a minha IDE é a mais recente se não me engano 1.0.5.

Você baixou e instalou a biblioteca NECIRrcv para libraries do Arduino ?  

Caso não, baixe esta biblioteca, descompacte e instale com o nome de NECIRrcv, em Arquivos de Programas/Arduino/libraries e pronto.

J.ANtonio

olá.. conseguir fazer para de aparecer o erro, a solução foi..

baixa o IDE uma mais antiga verção 0023

e colocar a NECIRrcv na pasta Programas/Arduino/libraries como você disse..

mas acabei nem usando a versão antiga

peguei algumas ideias do seu código e incorporei no meu..

e funcionou bem direitinho..

obrigado pela ajuda J. Antonio.

att R. Oliveira

Valeu Rodrigão. Ia mesmo fazer esta sugestão pegar parte do código.

Beleza, 

Boa sorte, e depois não esqueça de colocar as fotos do menino instalado.

Ah, outra coisa você vai instalar ou é só para montagem para conhecimento ?

Te pergunto porque nos projetos definitivos eu compro o Atmega 328, gravo e depois utilizo na placa. 

Valeu.

JA.

pois é.. por enquanto, é só para conhecimento, mas gostaria de sabes como mondar um placa para utilizar o Atmega.. que isso nem sei fazer ainda..

Primeiro terá de construir um gravador para Atmega, não é difícil, utiliza pouco componentes e usa-se um adaptador que não lembro agora de cabeça, posso ver quando chegar em casa, e ai é só gravar, como se estivesse gravando um Uno ou outro qualquer. 

Depois é só colocar o atmega na placa e fazer as ligações, e partir para o abraço ok

mas o Atmega não pode ser gravado no proprio arduino?

Pode sim Rodrigo, mais não recomendo, pois imagine você ficar toda hora substituindo o Atmega da placa, vai ter uma hora que vai dar xabú, não é aconselhável. 

Fiz este gravador, coloquei um soquete Zif de 28 pinos, um cristal e dois capacitores, acoplado ao adaptador e pronto.

Mais fica a dica. Se for gravar um ou outro não vale a pena o investimento.

Valeu

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço