callback2.ino 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. // опрос событий через функцию-обработчик
  2. #include <Arduino.h>
  3. #include <EncButton.h>
  4. EncButton eb(2, 3, 4);
  5. void cb() {
  6. // здесь EB_self - указатель на сам объект
  7. Serial.print("callback: ");
  8. switch (eb.getAction()) {
  9. case EBAction::Press:
  10. Serial.println("press");
  11. break;
  12. case EBAction::Hold:
  13. Serial.println("hold");
  14. break;
  15. case EBAction::Step:
  16. Serial.println("step");
  17. break;
  18. case EBAction::Release:
  19. Serial.print("release. steps: ");
  20. Serial.print(eb.getSteps());
  21. Serial.print(", press for: ");
  22. Serial.print(eb.pressFor());
  23. Serial.print(", hold for: ");
  24. Serial.print(eb.holdFor());
  25. Serial.print(", step for: ");
  26. Serial.println(eb.stepFor());
  27. break;
  28. case EBAction::Click:
  29. Serial.println("click");
  30. break;
  31. case EBAction::Clicks:
  32. Serial.print("clicks ");
  33. Serial.println(eb.getClicks());
  34. break;
  35. case EBAction::Turn:
  36. Serial.print("turn ");
  37. Serial.print(eb.dir());
  38. Serial.print(" ");
  39. Serial.print(eb.fast());
  40. Serial.print(" ");
  41. Serial.println(eb.pressing());
  42. break;
  43. case EBAction::ReleaseHold:
  44. Serial.println("release hold");
  45. break;
  46. case EBAction::ReleaseHoldClicks:
  47. Serial.print("release hold clicks ");
  48. Serial.println(eb.getClicks());
  49. break;
  50. case EBAction::ReleaseStep:
  51. Serial.println("release step");
  52. break;
  53. case EBAction::ReleaseStepClicks:
  54. Serial.print("release step clicks ");
  55. Serial.println(eb.getClicks());
  56. break;
  57. case EBAction::Timeout:
  58. Serial.println("timeout");
  59. break;
  60. default: break;
  61. }
  62. }
  63. void setup() {
  64. Serial.begin(115200);
  65. eb.attach(cb);
  66. }
  67. void loop() {
  68. eb.tick();
  69. }