Guest User

Untitled

a guest
Apr 22nd, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.92 KB | None | 0 0
  1. // --- IR ---------------------------------------------
  2.  
  3. #include <IRremote.h>
  4. //#include <IRrecv.h>
  5. //#include <IRutils.h>
  6.  
  7. const int receivePin = 2;
  8. IRrecv irrecv(receivePin);
  9. decode_results results;
  10.  
  11. const int minimumPressTime = 100; // ms to keep the key pressed for
  12.  
  13. bool repeatable = false;
  14. unsigned long pressTime = 0;
  15. bool pressingKeys = false;
  16.  
  17. void setup() {
  18. Serial.begin(74880);
  19. while (!Serial);
  20. Serial.println("Start");
  21.  
  22. pinMode(LED_BUILTIN, OUTPUT);
  23. pinMode(3, OUTPUT);
  24.  
  25. // --- IR ---------------------------------------------
  26.  
  27. Serial.println("Start the IR receiver...");
  28. irrecv.enableIRIn();
  29.  
  30. Serial.println("Init relay down...");
  31. digitalWrite(3, LOW);
  32.  
  33. Serial.println("Done");
  34. }
  35.  
  36. void blink(int up, int down) {
  37. digitalWrite(LED_BUILTIN, HIGH);
  38. delay(up);
  39. digitalWrite(LED_BUILTIN, LOW);
  40. delay(down);
  41. }
  42.  
  43.  
  44.  
  45. void loop() {
  46. if (irrecv.decode(&results)) {
  47.  
  48. Serial.print("ir code : ");
  49. Serial.print(results.value, HEX);
  50. Serial.println("");
  51.  
  52. switch (results.value) {
  53. case 0xFFFFFFFF: // Repeat code
  54. // Don't release the key unless it's a non repeatable key.
  55. if (repeatable) {
  56. pressTime = millis(); // Keep the timer running.
  57. }
  58. break;
  59.  
  60. case 0x10ED609F: // UP
  61. Serial.println("UP");
  62. repeatable = false;
  63. digitalWrite(3, HIGH);
  64. // Show something
  65. blink(50, 10);
  66. break;
  67.  
  68. case 0x10ED6897: // DOWN
  69. Serial.println("DOWN");
  70. repeatable = false;
  71. digitalWrite(3, LOW);
  72. // Show something
  73. blink(50, 10);
  74. break;
  75.  
  76. // Non-matching IR
  77. default:
  78. repeatable = false;
  79. break;
  80. }
  81.  
  82. // Receive the next value
  83. delay(25);
  84. irrecv.resume();
  85. }
  86. else {
  87. unsigned long now = millis();
  88. if ((now - pressTime > minimumPressTime) && pressingKeys) {
  89. //releaseAll();
  90. pressingKeys = false;
  91. }
  92. // { else repeat ? }
  93. }
  94. }
Add Comment
Please, Sign In to add comment