Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: SDFileSystem emic2 mbed-rtos mbed
Fork of BAT_senior_design_Testnew by
Diff: button.cpp
- Revision:
- 0:5887cb744114
- Child:
- 1:f3d363ca2343
diff -r 000000000000 -r 5887cb744114 button.cpp
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/button.cpp Mon Dec 04 19:58:40 2017 +0000
@@ -0,0 +1,170 @@
+#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) {}
+/*button::button(PwmOut servo, DigitalIn pb, AnalogIn lp)
+ : servo(servo), pb(pb), linpot(lp), press(0), state(0) {}
+*/
+//Serial pc(USBTX, USBRX);
+
+// FUNCTIONS
+
+// get servo pin
+PwmOut button::getServoPin()
+{
+ return servo;
+}
+
+// get servo pin
+void button::setState(int mystate)
+{
+ state = mystate;
+}
+
+void button::setPress(int mypress)
+{
+ press = mypress;
+}
+
+// get servo pin
+/*void button::setMode(int mymode)
+{
+ mode = mymode;
+}*/
+
+// get current state of the button
+int button::getState()
+{
+ return state;
+}
+
+int button::getID()
+{
+ return id;
+}
+
+
+int button::getPress()
+{
+ //pc.printf("%d", press);
+ return press;
+}
+
+// get current state of the button
+int button::getLp()
+{
+ /* if (linpot < 2)
+ return 1;
+ else*/
+ return 0;
+}
+
+// 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;
+}
+
+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;
+
+ // Speaker says stuff
+ /*myTTS.volume(18); //max volume
+ myTTS.speakf("S");//Speak command starts with "S"
+ myTTS.speakf("Hey, you pressed a pin!"); // Send the desired string to convert to speech
+ myTTS.speakf("\r"); //marks end of speak command*/
+ }
+ // 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;
+}
+
+void button::setup() {
+ for(int i=0; i<=4; i++) {
+ servo = i/100.0;
+ wait(0.01);
+ }
+}
