Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int main()
- {
- static enum State {disabled, enabled, waitingSecondPress,
- powerIndicator_LED, powerIndicator_PAUSE} state = disabled;
- enableRed();
- static int button = readButtonPressPin(); // assuming 0 = LOW 1 = HIGH
- static int buttonEdgeTrigger = 1;
- static int buttonState = 1;
- static unsigned long int timeStamp;
- int powerLevel = 0; // 0, 1, 2, 3 - highest
- int countLED = 0;
- while(1){
- // Edge Trigger //
- if (button == 0) {
- buttonState = 0;
- } else if(buttonState == 0) {
- buttonEdgeTrigger = 0;
- buttonState = 1;
- }
- // Edge Trigger //
- switch(state){
- case disabled:
- if (buttonEdgeTrigger == 0) {
- state = enabled;
- DisableRed();
- EnableGreen();
- buttonEdgeTrigger = 1;
- }
- break;
- case enabled:
- if (buttonEdgeTrigger == 0) {
- state = waitingSecondPress;
- buttonEdgeTrigger = 1;
- timeStamp = GetCurrentMillis();
- }
- break;
- case waitingSecondPress:
- if (buttonEdgeTrigger == 0) {
- state = powerIndicator_PAUSE;
- disableGreen();
- timeStamp = GetCurrentMillis();
- } else if ((GetCurrentMillis() - timeStamp) > 50) {
- state = disabled;
- DisableGreen();
- EnableRed();
- }
- break;
- case powerIndicator_PAUSE:
- if ((GetCurrentMillis - timeStamp) > 500) {
- timeStamp = GetCurrentMillis();
- if (countLED <= powerLevel) {
- countLED++;
- EnableGreen();
- state = powerIndicator_LED;
- timeStamp = GetCurrentMillis();
- } else {
- EnableRed();
- countLED = 0;
- state = disabled;
- }
- }
- break;
- case powerIndicator_LED:
- if ((GetCurrentMillis - timeStamp) > 250) {
- DisableGreen();
- state = powerIndicator_PAUSE;
- timeStamp = GetCurrentMillis();
- }
- break;
- }
- }
- return 0;
- }
- EnableGreen();
- DisableGreen();
- EnableRed();
- DisableRed();
- int readButtonPressPin() {
- // TODO:
- return 0;
- }
- unsigned long int GetCurrentMillis() {
- //TODO:
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement