Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <IRremote.h>
- #include <IRremoteInt.h>
- /* LAMPARA RGB
- ******************
- Controlada por infrarrojo, para control remoto de lampara Cocoon.
- 4 LEDS RGB
- 1 RECEPTOR INFRARROJO
- 12 RESISTENCIAS 300 Ohm
- ******************
- FRECUENCIAS */
- int cOn = 0xFFF807;
- int cOff = 0xFF7887;
- int cBlanco = 0xFF28D7;
- int cRojo = 0xFF18E7;
- int cVerde = 0xFF9867;
- int cAzul = 0xFF58A7; // NO sirven estas variables...
- int encendido = 0;
- int rojo = 9;
- int verde = 10; // DEFINICIONES DE PINES
- int azul = 11;
- int receptor = 3;
- IRrecv irrecv(receptor);
- decode_results results; // NECESARIO POR LA API DEL RECEPTOR INFRARROJO
- void setup() {
- pinMode(rojo, OUTPUT); // Ponemos los pines...
- pinMode(verde, OUTPUT);
- pinMode(azul, OUTPUT);
- Serial.begin(9600);
- irrecv.enableIRIn();
- }
- void loop() {
- if (irrecv.decode(&results)) {
- Serial.print("Codigo recibido: ");
- Serial.println(results.value, HEX);
- if (results.decode_type == NEC) { // Parte de la API. NEC es un protocolo infrarrojo, el cual detecta la API. Si detecta cualquier otro mando, u otra anomalia, no salta.
- switch (results.value) { // Chequea a ver que boton se ha pulsado
- case 0xFFF807: encendido = 1; // ON
- Serial.println("Encendido");
- analogWrite(rojo, 1023);
- analogWrite(verde, 0);
- analogWrite(azul, 0);
- break;
- case 0xFF7887: encendido = 0; // OFF
- Serial.println("Apagado");
- analogWrite(rojo, 0);
- analogWrite(verde, 0);
- analogWrite(azul, 0);
- break;
- case 0xFF28D7: if (encendido == 1) {
- analogWrite(rojo, 1023);
- analogWrite(verde, 1023);
- analogWrite(azul, 1023);
- }
- break;
- case 0xFF18E7: if (encendido == 1) {
- analogWrite(rojo, 1023);
- analogWrite(verde, 0);
- analogWrite(azul, 0);
- }
- break;
- case 0xFF9867: if (encendido == 1) {
- analogWrite(rojo, 0);
- analogWrite(verde, 1023);
- analogWrite(azul, 0);
- }
- break;
- case 0xFF58A7: if (encendido == 1) { // AQUI ESTA EL ERROR: Al parecer, consigue poner "Azul" en el monitor Serial, pero parece que el Pin Azul no funciona...
- Serial.println("Azul"); // Obviando, que el blanco y el color de mas abajo - un poco purpura - tampoco funcionan correctamente
- analogWrite(rojo, 0); // Comprobando que las conexiones estan correctas o se han quemado los LEDs, cojo el programa que venia con el libro de instrucciones
- analogWrite(verde, 0); // en el que se va por todos los colores (incluido el blanco). MISMOS PINES, MISMAS CONEXIONES, MISMOS LEDs!!!
- analogWrite(azul, 1023); // Que cosa mas rara! Ademas, el IR empieza a dar valores muy raros. Requiere un Reset de arduino...
- }
- break;
- case 0xFF609F: if (encendido == 1) {
- analogWrite(rojo, 40);
- analogWrite(verde, 0);
- analogWrite(azul, 1023);
- }
- break;
- default: Serial.println("Err1: Codigo desconocido.");
- break;
- }
- } else {
- Serial.println("Err2: Codigo invalido. Introducir de nuevo?");
- }
- irrecv.resume();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement