demo.ino 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. // полное демо
  2. #include <Arduino.h>
  3. // #define EB_NO_FOR // отключить поддержку pressFor/holdFor/stepFor и счётчик степов (экономит 2 байта оперативки)
  4. // #define EB_NO_CALLBACK // отключить обработчик событий attach (экономит 2 байта оперативки)
  5. // #define EB_NO_COUNTER // отключить счётчик энкодера (экономит 4 байта оперативки)
  6. // #define EB_NO_BUFFER // отключить буферизацию энкодера (экономит 1 байт оперативки)
  7. // #define EB_DEB_TIME 50 // таймаут гашения дребезга кнопки (кнопка)
  8. // #define EB_CLICK_TIME 500 // таймаут ожидания кликов (кнопка)
  9. // #define EB_HOLD_TIME 600 // таймаут удержания (кнопка)
  10. // #define EB_STEP_TIME 200 // таймаут импульсного удержания (кнопка)
  11. // #define EB_FAST_TIME 30 // таймаут быстрого поворота (энкодер)
  12. // #define EB_TOUT_TIME 1000 // таймаут действия (кнопка и энкодер)
  13. #include <EncButton.h>
  14. EncButton eb(2, 3, 4);
  15. // EncButton eb(2, 3, 4, INPUT); // + режим пинов энкодера
  16. // EncButton eb(2, 3, 4, INPUT, INPUT_PULLUP); // + режим пинов кнопки
  17. void setup() {
  18. Serial.begin(115200);
  19. // показаны значения по умолчанию
  20. eb.setBtnLevel(LOW);
  21. eb.setClickTimeout(500);
  22. eb.setDebTimeout(50);
  23. eb.setHoldTimeout(600);
  24. eb.setStepTimeout(200);
  25. eb.setTimeout(1000);
  26. eb.setEncReverse(0);
  27. eb.setEncType(EB_STEP4_LOW);
  28. eb.setFastTimeout(30);
  29. // сбросить счётчик энкодера
  30. eb.counter = 0;
  31. }
  32. void loop() {
  33. eb.tick();
  34. // обработка поворота общая
  35. if (eb.turn()) {
  36. Serial.print("turn: dir ");
  37. Serial.print(eb.dir());
  38. Serial.print(", fast ");
  39. Serial.print(eb.fast());
  40. Serial.print(", hold ");
  41. Serial.print(eb.pressing());
  42. Serial.print(", counter ");
  43. Serial.print(eb.counter);
  44. Serial.print(", clicks ");
  45. Serial.println(eb.getClicks());
  46. }
  47. // обработка поворота раздельная
  48. if (eb.left()) Serial.println("left");
  49. if (eb.right()) Serial.println("right");
  50. if (eb.leftH()) Serial.println("leftH");
  51. if (eb.rightH()) Serial.println("rightH");
  52. // кнопка
  53. if (eb.press()) Serial.println("press");
  54. if (eb.click()) Serial.println("click");
  55. if (eb.release()) {
  56. Serial.println("release");
  57. Serial.print("clicks: ");
  58. Serial.print(eb.getClicks());
  59. Serial.print(", steps: ");
  60. Serial.print(eb.getSteps());
  61. Serial.print(", press for: ");
  62. Serial.print(eb.pressFor());
  63. Serial.print(", hold for: ");
  64. Serial.print(eb.holdFor());
  65. Serial.print(", step for: ");
  66. Serial.println(eb.stepFor());
  67. }
  68. // состояния
  69. // Serial.println(eb.pressing());
  70. // Serial.println(eb.holding());
  71. // Serial.println(eb.busy());
  72. // Serial.println(eb.waiting());
  73. // таймаут
  74. if (eb.timeout()) Serial.println("timeout!");
  75. // удержание
  76. if (eb.hold()) Serial.println("hold");
  77. if (eb.hold(3)) Serial.println("hold 3");
  78. // импульсное удержание
  79. if (eb.step()) Serial.println("step");
  80. if (eb.step(3)) Serial.println("step 3");
  81. // отпущена после импульсного удержания
  82. if (eb.releaseStep()) Serial.println("release step");
  83. if (eb.releaseStep(3)) Serial.println("release step 3");
  84. // отпущена после удержания
  85. if (eb.releaseHold()) Serial.println("release hold");
  86. if (eb.releaseHold(2)) Serial.println("release hold 2");
  87. // проверка на количество кликов
  88. if (eb.hasClicks(3)) Serial.println("has 3 clicks");
  89. // вывести количество кликов
  90. if (eb.hasClicks()) {
  91. Serial.print("has clicks: ");
  92. Serial.println(eb.getClicks());
  93. }
  94. }