Buenas tardes a todos. Lo primero decir que soy novato con mi arduino, pero leyendo y buscando, de momento, he conseguido ir avanzando en mi proyecto. El problema es que he llegado a un punto que no consigo avanzar, y sé que para los que entendeis será una tontería. Empiezo:
Mi proyecto es encender y apagar los equipos de música y ordenadores que tengo en casa. Para ello tengo un arduino due y tantos relés como equipos quiero controlar. El código lo tengo ya desarrollado, pero hay una función que no soy capaz de conseguir. De momento, en la prueba que tengo, con el 1 enciendo el amplificador, con el 2 enciendo el CD1, con el 3 enciendo la pletina, con el 4 enciendo el ecualizador y con el "stop" paro en el orden que me interesa y con un intervalo de un segundo y medio entre cada uno. Lo que no consigo hacer es que si pulso el 2 se encienda el CD1 y si vuelvo a pulsar el 2 se me apague el CD1. Es decir, con cada botón que pueda encender o apagar el equipo correspondiente.
El código que tengo es este:
/*
Control de sonido y ordenadores con control remoto
*/
#include <IRremote.h>
int RECV_PIN = 11;
int amplificadorPin = 23; // Pin al que se conecta el Amplificador
int cd1Pin = 25; // Pin al que se conecta el CD1
int pletinaPin = 27; // Pin al que se conecta la pletina
int ecualizadorPin = 29; // Pin al que se conecta el ecualizador
IRrecv irrecv(RECV_PIN);
decode_results results;
void setup()
{
Serial.begin(9600);
irrecv.enableIRIn(); // Comenzar la recepción
pinMode(amplificadorPin, OUTPUT); // Establecer Pin 1 como salida
pinMode(cd1Pin, OUTPUT); // Establecer Pin 1 como salida
pinMode(pletinaPin, OUTPUT); // Establecer Pin 1 como salida
pinMode(ecualizadorPin, OUTPUT); // Establecer Pin 1 como salida
}
void loop() {
if (irrecv.decode(&results)) {
long int decCode = results.value;
Serial.println(decCode);
switch (results.value) {
case 0x40BF708F:
Serial.println("Amplificador");
digitalWrite(amplificadorPin, LOW); // Enciende el Amplificador
break;
case 0x40BFF00F:
Serial.println("CD1");
digitalWrite(cd1Pin, LOW); // Enciende el CD1
break;
case 0x40BF30CF:
Serial.println("Pletina");
digitalWrite(pletinaPin, LOW); // Enciende la Pletina
break;
case 0x40BF48B7:
Serial.println("Ecualizador");
digitalWrite(ecualizadorPin, LOW); // Enciende el Ecualizador
break;
case 0x40BFA05F:
Serial.println("Stop");
digitalWrite(amplificadorPin, HIGH); // Apaga el Amplificador
delay(1500); // Espera 1,5 segundos
digitalWrite(cd1Pin, HIGH); // Apaga el CD1
delay(1500); // Espera 1,5 segundos
digitalWrite(pletinaPin, HIGH); // Apaga la Pletina
delay(1500); // Espera 1,5 segundos
digitalWrite(ecualizadorPin, HIGH); // Apaga el Ecualizador
break;
default:
Serial.println("Waiting ...");
}
irrecv.resume();
}
}
Si me podéis ayudar os estaré eternamente agradecido :), porque llevo 1 mes buscando
y probando y no soy capaz. ![]()
Gracias y un saludo.