Test fork nhi

Dependencies:   SDFileSystem mbed-rtos mbed emic2

Fork of BAT_senior_design by BAT

button.cpp

Committer:
aismail1997
Date:
2017-10-27
Revision:
19:ceac47be2e64
Parent:
14:581a3b02f4c3
Child:
21:c5df903f068a

File content as of revision 19:ceac47be2e64:

#include "mbed.h"
#include "button.h"

// button constructor
button::button(PwmOut servo, DigitalIn pb)
    : servo(servo), pb(pb), press(0), state(0) {}
//button::button(PwmOut servo, DigitalIn pb, AnalogIn lp)
//    : servo(servo), pb(pb), linpot(lp), mode(0), state(0) {}

// FUNCTIONS

// get servo pin
PwmOut button::getServoPin()
{
    return servo;
}

// get servo pin
void button::setState(int mystate)
{
    state = mystate;
}

// get servo pin
/*void button::setMode(int mymode)
{
    mode = mymode;
}*/

// get current state of the button
int button::getState()
{
    return state;
}

int button::getPress()
{
    return press;
}


// move servo into the slot
void button::moveServoIn()
{
    //myled = 1;
    // rotate 90 degrees one way
    for(int i=3; i<=7; i++) {
        servo = i/100.0;
        wait(0.01);
    }
}

// move servo out of the slot
void button::moveServoOut()
{
    //myled = 0;
    for(int i=7; i>3; i--) {
        servo = i/100.0;
        wait(0.01);
    }
}

int button::updateState()
{
    //myled = 0;
    // state 0 - button is up, pb = 0
    if (pb == 0 && state == 3) {
        // nothing happens here, servo is still
        state = 0;
    }
    // state 1 - button is moving down, pb = 1
    if (pb == 1 && state == 0) {
        moveServoIn();
        state = 1;
        press = 1;
    }
    // state 2 - button is down, pb = 0
    if (pb == 0 && state == 1) {
        // nothing happens here, servo is still
        state = 2;
    }
    // state 3 - button is moving up, pb = 1
    if (pb == 1 && state == 2) {
        moveServoOut();
        state = 3;
        press = 0;
    }
    // state 4 - handle debouncing while button is down
    /*if (pb1 = 1 && state == 2) {
        count++;
    }*/
    return state;
}