Bom dia/tarde/noite Galera!
Estou tendo problema com meu projeto, vou detalhar:
Objetos:
Arduino Uno
Controle do tipo Car mp3(padrão que vem com o arduino)
Emissor de Infravermelho
Receptor de Infravermelho
Relé
Objetivo:
Conseguir Ligar e Desligar o relé, e aumentar o volume do meu som por um controle que emita infravermelho
Problema:
Consigo ligar e desligar o Rele sem problemas, infinitas vezes se precisar. Porém ao acessar o caso de "Aumentar o volume do Som" ele consegue de fato aumentar o volume do som, mas após isso não consigo mais aumentar o som ou ligar/desligar o rele. Coloquei um "chegou aqui" para simbolizar que chegou ao final do loop, e ele chega, mas não recebe mais códigos. Imagino que deva estar usando a função emissorIR.sendRaw errado.
Codigo:
// INCLUSÃO DE BIBLIOTECA
#include <IRremote.h>
// DIRETIVAS DE COMPILAÇÃO
#define tempoTecla 350
#define frequencia 38 // kHz
#define pinoRele 2
#define pinSensor 10
// INSTANCIANDO OBJETOS
IRsend emissorIR;
IRrecv sensorIR (pinSensor);
unsigned int teclaA[] = {9150,4450, 600,550, 550,550, 600,550, 600,500, 600,550, 550,550, 600,550, 550,550, 600,1650, 600,1600, 600,500, 650,1600, 600,1600, 600,1600, 650,1600, 600,1600, 600,550, 600,500, 600,1650, 600,500, 600,550, 600,500, 600,1600, 650,500, 600,1600, 600,1650, 600,500, 600,1600, 650,1600, 600,1600, 600,550, 600,1600, 600};
//Codigo que faz aumentar o volume do meu som
void setup()
{
Serial.begin(9600);
Serial.print("Setup Iniciado\n");
pinMode(pinoRele, OUTPUT);
digitalWrite(pinoRele, LOW);
sensorIR.enableIRIn();
Serial.print("Setup Concluído\n");
}
void loop()
{
decode_results comando;
if (sensorIR.decode(&comando))
{
switch(comando.value)
{
case (0xFFA857): //problema
{
Serial.println("Aumentando o volume do Som");
emissorIR.sendRaw(teclaA, sizeof(teclaA) / sizeof(teclaA[0]), 39);
delay(tempoTecla);
break;
}
case (0xFFE21D): //funciona
{
Serial.println("Ligando a Luz");
digitalWrite(pinoRele, HIGH);
delay(tempoTecla);
break;
}
case(0xFFA25D): //funciona
{
Serial.print("Desligando Lampada\n");
digitalWrite(pinoRele, LOW);
delay(tempoTecla);
break;
}
}
sensorIR.resume();
Serial.println("Chegou aqui");
}
}
Eis na imagem o que acontece: Ele aumentou o volume do som emitindo infravermelho mas o código não aceita mais outros comandos. Anteriormente ligou e desligou o relé sem problemas, porém bugou quando chegou na parte de emitir o infravermelho e retornar ao loop infinito.