Frästisch mit elektronischer Höhenverstellung mittels Schrittmotoren.
Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. /*
  2. * Implementation of ExEzButton.h
  3. *
  4. * Erstellt: 05.01.2021
  5. * Autor: Flo Smilari
  6. */
  7. #include "ExEzButton.h"
  8. /*****************
  9. ** Constructors.
  10. ****************/
  11. ExEzButton::ExEzButton(int pin) :
  12. ExEzButton(pin, false) {
  13. }
  14. ExEzButton::ExEzButton(int pin, bool _inverted) :
  15. ExEzButton(pin, _inverted, 2000) {
  16. }
  17. ExEzButton::ExEzButton(int pin, bool _inverted, int _longpressTime) :
  18. ezButton(pin) {
  19. inverted = _inverted;
  20. longpressTime = _longpressTime;
  21. pressedTime = 0;
  22. releasedTime = 0;
  23. }
  24. /******************
  25. ** Public methods
  26. *****************/
  27. void ExEzButton::loop(void) {
  28. int lastSteadyStateBefore = getState();
  29. ezButton::loop();
  30. int lastSteadyStateAfter = ezButton::getState();
  31. if (lastSteadyStateBefore != lastSteadyStateAfter) {
  32. if (!inverted) {
  33. if (lastSteadyStateBefore == LOW && lastSteadyStateAfter == HIGH) {
  34. pressedTime = millis();
  35. releasedTime = 0;
  36. } else if (lastSteadyStateBefore == HIGH && lastSteadyStateAfter == LOW) {
  37. releasedTime = millis();
  38. }
  39. } else {
  40. if (lastSteadyStateBefore == HIGH && lastSteadyStateAfter == LOW) {
  41. pressedTime = millis();
  42. releasedTime = 0;
  43. } else if (lastSteadyStateBefore == LOW && lastSteadyStateAfter == HIGH) {
  44. releasedTime = millis();
  45. }
  46. }
  47. }
  48. }
  49. bool ExEzButton::isPressed() {
  50. bool pressed;
  51. if (!inverted) {
  52. pressed = ezButton::isPressed();
  53. } else {
  54. pressed = (ezButton::getPreviousState() == LOW && ezButton::getState() == HIGH);
  55. }
  56. return (pressed && pressedTime > 0 && releasedTime > 0 && (releasedTime - pressedTime) < longpressTime);
  57. }
  58. bool ExEzButton::isLongPressed() {
  59. if (releasedTime != 0) {
  60. unsigned long long pressDuration = releasedTime - pressedTime;
  61. bool longPressed = (pressDuration > longpressTime);
  62. if (longPressed) {
  63. pressedTime = 0;
  64. releasedTime = 0;
  65. }
  66. return longPressed;
  67. }
  68. return false;
  69. }
  70. bool ExEzButton::isPressing() {
  71. return ezButton::getState() == HIGH;
  72. }