Advertisement
Guest User

Aash

a guest
Oct 14th, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.77 KB | None | 0 0
  1. int main()
  2. {
  3. static enum State {disabled, enabled, waitingSecondPress,
  4. powerIndicator_LED, powerIndicator_PAUSE} state = disabled;
  5. enableRed();
  6. static int button = readButtonPressPin(); // assuming 0 = LOW 1 = HIGH
  7. static int buttonEdgeTrigger = 1;
  8. static int buttonState = 1;
  9. static unsigned long int timeStamp;
  10.  
  11. int powerLevel = 0; // 0, 1, 2, 3 - highest
  12. int countLED = 0;
  13. while(1){
  14. // Edge Trigger //
  15. if (button == 0) {
  16. buttonState = 0;
  17. } else if(buttonState == 0) {
  18. buttonEdgeTrigger = 0;
  19. buttonState = 1;
  20. }
  21. // Edge Trigger //
  22.  
  23. switch(state){
  24. case disabled:
  25. if (buttonEdgeTrigger == 0) {
  26. state = enabled;
  27. DisableRed();
  28. EnableGreen();
  29. buttonEdgeTrigger = 1;
  30. }
  31. break;
  32. case enabled:
  33. if (buttonEdgeTrigger == 0) {
  34. state = waitingSecondPress;
  35. buttonEdgeTrigger = 1;
  36. timeStamp = GetCurrentMillis();
  37. }
  38. break;
  39. case waitingSecondPress:
  40. if (buttonEdgeTrigger == 0) {
  41. state = powerIndicator_PAUSE;
  42. disableGreen();
  43. timeStamp = GetCurrentMillis();
  44. } else if ((GetCurrentMillis() - timeStamp) > 50) {
  45. state = disabled;
  46. DisableGreen();
  47. EnableRed();
  48. }
  49. break;
  50. case powerIndicator_PAUSE:
  51. if ((GetCurrentMillis - timeStamp) > 500) {
  52. timeStamp = GetCurrentMillis();
  53. if (countLED <= powerLevel) {
  54. countLED++;
  55. EnableGreen();
  56. state = powerIndicator_LED;
  57. timeStamp = GetCurrentMillis();
  58. } else {
  59. EnableRed();
  60. countLED = 0;
  61. state = disabled;
  62. }
  63. }
  64. break;
  65. case powerIndicator_LED:
  66. if ((GetCurrentMillis - timeStamp) > 250) {
  67. DisableGreen();
  68. state = powerIndicator_PAUSE;
  69. timeStamp = GetCurrentMillis();
  70. }
  71. break;
  72. }
  73. }
  74.  
  75.  
  76. return 0;
  77. }
  78.  
  79. EnableGreen();
  80. DisableGreen();
  81.  
  82. EnableRed();
  83. DisableRed();
  84.  
  85. int readButtonPressPin() {
  86. // TODO:
  87. return 0;
  88. }
  89.  
  90. unsigned long int GetCurrentMillis() {
  91. //TODO:
  92. return 1;
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement