Trying to separate read/write mode from typing mode
Dependencies: SDFileSystem emic2 mbed-rtos mbed
Fork of BAT_senior_design_Nhi by
button.cpp
- Committer:
- aismail1997
- Date:
- 2017-12-04
- Revision:
- 42:bdb6f132a609
- Parent:
- 41:560ee7866781
File content as of revision 42:bdb6f132a609:
#include "mbed.h"
#include "button.h"
#include "emic2.h"
//emic2 myTTS(p28, p27); //serial RX,TX pins to emic
DigitalOut led4(LED4);
DigitalOut led3(LED3);
DigitalOut led2(LED2);
// button constructor
button::button(PwmOut servo, DigitalIn pb, int id)
: servo(servo), pb(pb), state(0), press(0), id(id), type(0) {}
// FUNCTIONS
int button::getPress()
{
//pc.printf("%d", press);
return press;
}
// move servo into the slot
void button::moveServoIn()
{
//myled = 1;
// rotate 90 degrees one way
for(int i=4; i<=7; i++) {
servo = i/100.0;
wait(0.01);
}
//press = 1;
switch (id) {
case 1:
led2 = 0;
led3 = 0;
led4 = 1;
break;
case 2:
led2 = 0;
led3 = 1;
led4 = 0;
break;
case 3:
led2 = 0;
led3 = 1;
led4 = 1;
break;
case 4:
led2 = 1;
led3 = 0;
led4 = 0;
break;
case 5:
led2 = 1;
led3 = 0;
led4 = 1;
break;
case 6:
led2 = 1;
led3 = 1;
led4 = 0;
break;
}
}
// move servo out of the slot
void button::moveServoOut()
{
//myled = 0;
for(int i=7; i>4; i--) {
servo = i/100.0;
wait(0.01);
}
led2 = 0;
led3 = 0;
led4 = 0;
}
// get servo pin
void button::setMode(int mymode)
{
type = mymode;
}
int button::updateState()
{ if (type == 0) {
//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;
}
} else {
state = pb;
press = pb;
}
return state;
}
void button::setup() {
for(int i=0; i<=4; i++) {
servo = i/100.0;
wait(0.01);
}
}
