El código:
(la librería puede descargarse de aquí)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 |
/* El siguiente código permite usar el Apple Remote Control con Arduino. Se necesitan 3 leds, 3 resistencias de 220ohms y 1 foto transistor: Arduino D5 -> Resistencia -> Led1 -> GND Arduino D9/PWM -> Resistencia -> Led2 -> GND Arduino D4 -> Resistencia -> Led3 -> GND Fototransistor: (Mirándolo de frente con las patillas hacia abajo(084ST) ) Pin1 -> Arduino D11/PWM Pin2 -> GND Pin3 -> 5V Al pulsar el botón izquierdo, rebobinar, se encenderá el led de la izquierda, verde. Al pulsar el derecho, avanzar, se encenderá el de la derecha, rojo. Al pulsar el botón play/pause y a continuación +/- se iluminara gradualmente el led central, amarillo. */ #include <IRremote.h> // Se asignan los pines a cada componente: int ledREV = 5; // Izq. Led Verde int ledPLAY = 9; // Cent. Led Amarillo int ledFF = 4; // Der. Led Rojo int RECV_PIN = 11; // Fototransistor // Se asigna el estado de cada led (on = 0, off = 1) int ledPLAYst = 0; int ledFFst = 0; int ledREVst = 0; int paso = 20; // La luminosidad del led2/amarillo tiene un rango de 0 a 255, los saltos se hacen de 10 en 10: int brightness = 0; // Brillo del led amarillo (variable global que guarda el nivel de brillo actual) IRrecv irrecv(RECV_PIN); decode_results results; // Se realiza la configuración de inicio: void setup(){ Serial.begin(9600); // Se activa la conexion serie para mostrar los datos por pantalla. Serial.println("Comenzamos Lectura"); irrecv.enableIRIn(); // Se inicia la recepción de datos. pinMode(ledPLAY, OUTPUT); pinMode(ledFF, OUTPUT); pinMode(ledREV, OUTPUT); }; // Funcion que apaga todos los leds: void ledCLEAR(){ digitalWrite(ledPLAY, LOW); digitalWrite(ledFF, LOW); digitalWrite(ledREV, LOW); //ledPLAYst = 0; }; void loop(){ // Se define un tipo por enumeración, a cada botón se le asigna el valor que numérico que emite. // Si se usa otro mando o no coinciden los valores recogidos por el receptor IR solo hay que cambiarlos por los del mando usado. enum botones{ play = 2011242676, izq = 2011238580, der = 2011291828, mas = 2011287732, menos = 2011279540, menu = 2011250868 } senial; if (irrecv.decode(&results)){ Serial.println(results.value); // Se imprime el dato recibido. irrecv.resume(); // Receive the next value senial = (enum botones)(results.value); //El valor recogido se guarda en senial if( senial == play ){ ledCLEAR(); Serial.println("Play"); Serial.println(ledPLAYst); Serial.println(brightness); if (ledPLAYst == 0) { analogWrite(ledPLAY, brightness); ledPLAYst = 1; } else{ analogWrite(ledPLAY, 0); ledPLAYst = 0; }; } else if ( senial == der ){ ledCLEAR(); Serial.println("FF"); digitalWrite(ledFF, HIGH); } else if ( senial == izq ){ ledCLEAR(); Serial.println("REV"); //digitalWrite(ledPLAY, HIGH); //digitalWrite(ledFF, HIGH); digitalWrite(ledREV, HIGH); } else if ( senial == mas ){ ledCLEAR(); Serial.println("+"); Serial.println(brightness); if (brightness < 255 - paso){ brightness=brightness + paso;} else{ brightness = 255; } analogWrite(ledPLAY, brightness); } else if ( senial == menos ){ ledCLEAR(); Serial.println("-"); Serial.println(brightness); if (brightness > paso){ brightness=brightness - paso; } else{ brightness = 0; }; analogWrite(ledPLAY, brightness); } else if ( senial == menu ){ ledCLEAR(); Serial.println("Menu"); } else{ Serial.println("Otro"); }; }; }; |
Hola, que tal, recien ayer consegui el Arduino UNO, estuve probando un par de cosas, pasa que compre un receptor IR y no hay manera de hacerlo andar, yo no se si lo conecte mal, si escribi mal el codigo, o lo que creo que es, que no anda el receptor, hay alguna forma de probarlo? Gracias, muy interesante la pagina, gracias a vos buscando cosas de Nintendo conoci al Arduino, aca desde Argentina 😛
Hola,
Prueba los siguiente si no lo has hecho ya:
Primero cargar en el Arduino el código blink para descartar si es problema de la placa.
Después monta todos los componentes de este proyecto, revisa que este todo en su sitio y carga el código.
Debería de funcionar, si no lo hace puede deberse al fototransistor, dependiendo del modelo las patillas pueden tener diferente orden (GND, V, Datos), o quizás tenga poco alcance.
En mi caso he probado con tres sensores diferentes, con el segundo de la imagen va fatal, apenas alcanza unos centímetros, sin embargo con los otros dos funciona a mas de 10 metros de distancia:
Saludos : )