Hola buenas tardes. Escribo por aquí, para ver si alguien me puede ayudar con el problema que tengo. Estoy montando una mini ciudad, la cual lleva dos semáforos automatizados y 30 leds, controlados por un mando a distancia.(poseo Arduino UNO R3)
La programación de los semáforos los cuales van cambiando de color esta hecha, la de los leds igual.
Lo que quiero conseguir es unir las dos programaciones en una solo, para insertarla en la placa y que cuando esta se encienda, automáticamente comienzo la secuencia de los semáforos, y cuando yo quiera darle al un botón del mando y se encienda la luz que este programada con ese botón.
Los he intentado unir de todas las maneras y no he conseguido que funcione a la perfección. Cuando conecto la placa inicia correctamente la secuencia de los semáforos sin ningún problema pero, el remoto no funciona como debería y cuando le doy a apagar las luces cambia sin sentido las intensidades de estas.
Como he dicho anteriormente tengo 30 leds y un mando de 21 teclas, mi intención es programar de la tecla 0 al 9(para 9 leds),, y luego darle a una tecla llamada EQ+0 y que encienda el led nº10, EQ+1, y que encienda el led 11,etc,etc
Agradecería que alguien me ayudara. Un saludo y gracias.
int LEDROJOSEMAFORO = 12;
int LEDVERDESEMAFORO = 10;
int LEDAMARILLOSEMAFORO = 11;
#include <IRremote.h>
#define Boton_power 0xFFA25D
#define Boton_0 0xFF6897
#define Boton_1 0xFF30CF
#define Boton_2 0xFF18E7
#define Boton_EQ 0xFF9867
int SENSOR = 8;
IRrecv irrecv (SENSOR);
decode_results codigo;
int LEDEXTERIORCAFETERIA = 5;
int LEDFAROLAS = 6;
int LEDLUZPARQUE = 7;
int LEDCASA = 4;
unsigned long start;
void setup() {
pinMode(LEDROJOSEMAFORO, OUTPUT);
pinMode(LEDVERDESEMAFORO, OUTPUT);
pinMode(LEDAMARILLOSEMAFORO, OUTPUT);
Serial.begin(9600);
irrecv.enableIRIn();
pinMode(LEDEXTERIORCAFETERIA, OUTPUT);
pinMode(LEDFAROLAS, OUTPUT);
pinMode(LEDLUZPARQUE, OUTPUT);
}
void decodificador_IR () {
if (irrecv.decode(&codigo)) {
Serial.println(codigo.value, HEX);
if (codigo.value == Boton_EQ)
digitalWrite(LEDCASA, !digitalRead(LEDCASA));
while (! irrecv.decode(&codigo))
if (codigo.value == Boton_0)
digitalWrite(LEDCASA, !digitalRead(LEDCASA));
}
if (codigo.value == Boton_0)
digitalWrite(LEDEXTERIORCAFETERIA, !digitalRead(LEDEXTERIORCAFETERIA));
if (codigo.value == Boton_1)
digitalWrite(LEDFAROLAS, !digitalRead(LEDFAROLAS));
if (codigo.value == Boton_2)
digitalWrite(LEDLUZPARQUE, !digitalRead(LEDLUZPARQUE));
if (codigo.value == Boton_power)
digitalWrite(LEDEXTERIORCAFETERIA,LOW);
if (codigo.value == Boton_power)
digitalWrite(LEDFAROLAS,LOW);
if (codigo.value == Boton_power)
digitalWrite(LEDLUZPARQUE,LOW);
irrecv.resume();
}
void loop() {
digitalWrite(LEDROJOSEMAFORO,LOW);
digitalWrite(LEDAMARILLOSEMAFORO,LOW);
digitalWrite(LEDVERDESEMAFORO,HIGH);
start = millis();
while (millis() - start < 5000) {
decodificador_IR ();
}
digitalWrite(LEDROJOSEMAFORO,LOW);
digitalWrite(LEDAMARILLOSEMAFORO,HIGH);
digitalWrite(LEDVERDESEMAFORO,LOW);
start = millis();
while (millis() - start < 2500) {
decodificador_IR ();
}
digitalWrite(LEDROJOSEMAFORO,HIGH);
digitalWrite(LEDAMARILLOSEMAFORO,LOW);
digitalWrite(LEDVERDESEMAFORO,LOW);
start = millis();
while (millis() - start < 5000) {
decodificador_IR ();
}
}