Advertisement
Guest User

IRRecv

a guest
Aug 29th, 2014
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.64 KB | None | 0 0
  1. #include <IRremote.h>
  2. #include <IRremoteInt.h>
  3.  
  4. /* LAMPARA RGB
  5. ******************
  6. Controlada por infrarrojo, para control remoto de lampara Cocoon.
  7. 4 LEDS RGB
  8. 1 RECEPTOR INFRARROJO
  9. 12 RESISTENCIAS 300 Ohm
  10. ******************
  11. FRECUENCIAS */
  12. int cOn = 0xFFF807;
  13. int cOff = 0xFF7887;
  14. int cBlanco = 0xFF28D7;
  15. int cRojo = 0xFF18E7;
  16. int cVerde = 0xFF9867;
  17. int cAzul = 0xFF58A7; // NO sirven estas variables...
  18.  
  19. int encendido = 0;
  20. int rojo = 9;
  21. int verde = 10; // DEFINICIONES DE PINES
  22. int azul = 11;
  23. int receptor = 3;
  24. IRrecv irrecv(receptor);
  25. decode_results results; // NECESARIO POR LA API DEL RECEPTOR INFRARROJO
  26.  
  27. void setup() {
  28.  
  29. pinMode(rojo, OUTPUT); // Ponemos los pines...
  30. pinMode(verde, OUTPUT);
  31. pinMode(azul, OUTPUT);
  32. Serial.begin(9600);
  33. irrecv.enableIRIn();
  34.  
  35. }
  36.  
  37. void loop() {
  38. if (irrecv.decode(&results)) {
  39.  
  40. Serial.print("Codigo recibido: ");
  41. Serial.println(results.value, HEX);
  42. 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.
  43. switch (results.value) { // Chequea a ver que boton se ha pulsado
  44. case 0xFFF807: encendido = 1; // ON
  45. Serial.println("Encendido");
  46. analogWrite(rojo, 1023);
  47. analogWrite(verde, 0);
  48. analogWrite(azul, 0);
  49. break;
  50. case 0xFF7887: encendido = 0; // OFF
  51. Serial.println("Apagado");
  52. analogWrite(rojo, 0);
  53. analogWrite(verde, 0);
  54. analogWrite(azul, 0);
  55. break;
  56. case 0xFF28D7: if (encendido == 1) {
  57. analogWrite(rojo, 1023);
  58. analogWrite(verde, 1023);
  59. analogWrite(azul, 1023);
  60. }
  61. break;
  62. case 0xFF18E7: if (encendido == 1) {
  63. analogWrite(rojo, 1023);
  64. analogWrite(verde, 0);
  65. analogWrite(azul, 0);
  66. }
  67. break;
  68. case 0xFF9867: if (encendido == 1) {
  69. analogWrite(rojo, 0);
  70. analogWrite(verde, 1023);
  71. analogWrite(azul, 0);
  72. }
  73. break;
  74. 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...
  75. Serial.println("Azul"); // Obviando, que el blanco y el color de mas abajo - un poco purpura - tampoco funcionan correctamente
  76. 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
  77. analogWrite(verde, 0); // en el que se va por todos los colores (incluido el blanco). MISMOS PINES, MISMAS CONEXIONES, MISMOS LEDs!!!
  78. analogWrite(azul, 1023); // Que cosa mas rara! Ademas, el IR empieza a dar valores muy raros. Requiere un Reset de arduino...
  79. }
  80. break;
  81. case 0xFF609F: if (encendido == 1) {
  82. analogWrite(rojo, 40);
  83. analogWrite(verde, 0);
  84. analogWrite(azul, 1023);
  85. }
  86. break;
  87. default: Serial.println("Err1: Codigo desconocido.");
  88. break;
  89. }
  90.  
  91.  
  92. } else {
  93. Serial.println("Err2: Codigo invalido. Introducir de nuevo?");
  94. }
  95. irrecv.resume();
  96.  
  97. }
  98.  
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement