Advertisement
Guest User

Button Debounce

a guest
Dec 11th, 2019
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.07 KB | None | 0 0
  1. unsigned long ButtonTime;
  2. enum button {ButtonIdle, ButtonWait, ButtonLow};
  3. enum button ButtonState;
  4. int ButtonInitialize()
  5. {
  6. pinMode(4, INPUT);
  7. pinMode(13, OUTPUT);
  8. ButtonState = ButtonWait;
  9. }
  10. int ButtonNextState(int press)
  11. {
  12. switch (ButtonState) {
  13. case ButtonIdle:
  14. if (press == LOW)
  15. {
  16. ButtonTime = millis(); // time is measured in milliseconds
  17. ButtonState = ButtonWait;
  18. }
  19. break;
  20. case ButtonWait:
  21. if (press == HIGH)
  22. {
  23. ButtonState = ButtonIdle;
  24. }
  25. else if (millis() - ButtonTime >= 5)
  26. {
  27. ButtonState = ButtonLow;
  28. return 1;
  29. }
  30. break;
  31. case ButtonLow:
  32. if (press == HIGH) {
  33. //ButtonState == ButtonIdle;
  34. if (millis() - ButtonTime < 1000 )
  35. {
  36. ButtonState = ButtonIdle;
  37. return 2;
  38. }
  39. else
  40. {
  41. ButtonState = ButtonIdle;
  42. return 3;
  43. }
  44. //Serial.println(2);
  45. }
  46. break;
  47. }
  48. return 0; //Serial.println(0);
  49. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement