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: mbed QEI HIDScope MODSERIAL FXOS8700Q
Revision 2:5730195cf595, committed 2019-10-14
- Comitter:
- ehopman
- Date:
- Mon Oct 14 12:14:18 2019 +0000
- Parent:
- 1:268bf7dbb15c
- Commit message:
- dok
Changed in this revision
| Opzet_Eli.cpp | Show annotated file Show diff for this revision Revisions of this file |
| QEI.lib | Show annotated file Show diff for this revision Revisions of this file |
--- a/Opzet_Eli.cpp Mon Oct 07 08:26:51 2019 +0000
+++ b/Opzet_Eli.cpp Mon Oct 14 12:14:18 2019 +0000
@@ -1,14 +1,17 @@
// Robot states
#include "mbed.h"
#include "HIDScope.h"
+#include "QEI.h"
#include "MODSERIAL.h"
// Define objects
-DigitalOut led1(LED_RED);
-DigitalOut led2(LED_BLUE);
-DigitalOut led3(LED_GREEN);
-DigitalIn ptc1(PTC6); //Button 1
-DigitalIn ptc2(PTA4); //Button 2
+MODSERIAL pc(USBTX,USBRX);
+DigitalOut led_red(LED_RED);
+DigitalOut led_blue(LED_BLUE);
+DigitalOut led_green(LED_GREEN);
+InterruptIn button_Mbed(PTC6); //Button 1 Mbed
+InterruptIn button_1(PTB10); //Button 2 BRS
+InterruptIn button_2(PTB11); // Button 3 BRS
// Functions
enum states{START,KAL_ME,KAL_EMG,MOVE_START,READY_START,DEMO,MOVE,WAIT,OFF};
@@ -16,6 +19,8 @@
states CurrentState = START;
bool StateChanged = true; // this is the initialization of the first state
+// Function START_TO_KAL_ME
+
void StateMachine(void)
{
switch(CurrentState)
@@ -24,37 +29,34 @@
if (StateChanged)
{
pc.printf("Start state, red led is on. If button 1 pressed, go to kal_me state");
- led1 = 0; // Red led is on
- led2 = 1;
- led3 = 1;
+ led_red = 0; // Red led is on
+ led_blue = 1;
+ led_green = 1;
StateChanged = false;
}
- if (ptc1 = 0) // State switches when button pressed
+ if (button_Mbed.mode (PullDown)== false; ) // State switches when button pressed
{
CurrentState = KAL_ME;
StateChanged = true;
+ wait(0.2f);
+
}
break; // end of state START
case KAL_ME:
if (StateChanged)
{
- pc.printf("Calibration ME state, red ld flickers slow.
- while(true) // Red lef flickers slow
- {
- led2 = 1;
- led3 = 1;
- led1 = !led1;
- wait(0.7);
- }
+ pc.printf("Calibration ME state, red ld flickers slow");
+ //FUNCTION Red led flickers slow
- // FUNCTION Move to mechanical stop, include v_motor
+
+ // FUNCTION Move to mechanical stop, include v_motor, t_passed
// FUNCTION Reset encoders
StateChanged = false;
}
- if (v_motor == 0; t_passed > 2) // FUNCTION t_passed, included in v_motor?
+ if (v_motor == 0 && t_passed > 2) // FUNCTION t_passed, included in v_motor?
{
CurrentState = KAL_EMG;
StateChanged = true;
@@ -64,14 +66,9 @@
case KAL_EMG:
if (StateChanged)
{
- while(true) // Red led flickers fast
- {
- led2 = 1;
- led3 = 1;
- led1 = !led1;
- wait(0.2);
- }
- //FUNCTION Measure EMG_max
+ // FUCNTION Red led flickers fast
+
+ //FUNCTION Measure EMG_max, EMG variable meten, t_passed
StateChanged = false;
}
@@ -86,43 +83,57 @@
case MOVE_START:
if(StateChanged)
{
- led1 = 1;
- led2 = 1;
- led3 = 0; // Green led is on
+ led_red = 1;
+ led_blue = 1;
+ led_green = 0; // Green led is on
- // define start position
+ // FUNCTION move to start, t_passed
+ // Define current_position & start_position
+ StateChanged = false;
+ }
- if //position realised and tmie passed
+ if (current_position == start_position && t_passed > 2) // FUNCTIO t_passed
{
- // Stop moving
CurrentState = READY_START;
StateChanged = true;
}
break; // end of state MOVE_START
case READY_START:
- while(true)
+ if (StateChanged)
{
- led1 = 1;
- led2 = 1;
- led3 = 0;
+ led_red = 1;
+ led_blue = 1;
+ led_green = 0; // Green led is on
+
+ StateChanged = false;
}
- if (ptc1 == 0)
+ if (button_1.read() == false) // Button 1
{
CurrentState = DEMO;
StateChanged = true;
+ wait(0.2f);
}
- else if (ptc2 == 0) // or EMG signal >= 20% max
+ else if (button_2.read() == false || EMG > 0.2*EMG_max) // Button 2 or 20% EMG_max
{
CurrentState = MOVE;
StateChanged = true;
+ wait(0.2f);
}
break; // end of state READY_START
case DEMO:
- //perform straight movements in some way, dunno how to make that here yet
- if //position = end and time
+ if (StateChanged)
+ {
+ //FUNCTION Blue led blink fast
+
+ //FUNCTION perform straight movements for demo
+
+ StateChanged = false;
+ }
+
+ if (current_position == end_position && t_passed > 2)
{
CurrentState = MOVE_START;
StateChanged = true;
@@ -130,38 +141,69 @@
break; // end of state DEMO
case MOVE:
- if // no movement for 2 sec after input
+ if (StateChanged)
+ {
+ led_red = 1;
+ led_green = 1;
+ led_blue = 0; //Blue led is on
+
+ // FUNCTION Play the game with EMG signal
+
+ StateChanged = false;
+ }
+
+ if (button_Mbed.read() == false)
+ {
+ CurrentState = OFF;
+ StateChanged = true;
+ wait(0.2f);
+ }
+
+ else if (button_1.read() == false || EMG < 0.2*EMG_max)
{
CurrentState = WAIT;
StateChanged = true;
+ wait(0.2f);
}
- else if // input signal
- {
- // move in direction linked to EMG
- }
- // Iets met dat oranje lichtje maar snap die stap niet helemaal
- break; // end of state MOVE
+ break; // end of state MOVE
case WAIT:
- if (ptc1 == 0)
+ if (StateChanged)
+ {
+ led_red = 0; // Pink led iS on
+ led_blue = 0;
+ led_green = 1
+
+ if (button_Mbed.read() == false) // For five second, too hard
{
- CurrentState = READY_START;
+ CurrentState = OFF;
StateChanged = true;
+ wait(0.2f);
)
- else if (ptc2 == 0) // or EMG>= 20%max
+ else if (button_1.read() == false)
+ {
+ CurrentState = MOVE_START;
+ StateChanged = true;
+ wait(0.2f);
+ }
+ else if (button_2.read() == false || EMG > 0.2*EMG_max)
{
CurrentState = MOVE;
StateChanged = true;
+ wait(0.2f);
}
- else if (ptc1 == 0) //maar dan heel lang achter elkaar
+
break; // end of state WAIT
case OFF:
- // turns all of
+ led_red = 0; // White led is on
+ led_blue = 0;
+ led_green = 0;
+
break; // end of state OFF
default:
- TurnMotorsoff();
+ TurnMotorsoff(); //FUNCTION
printf("Unknown state reached");
} // End of the switch, all states are prescribed
}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/QEI.lib Mon Oct 14 12:14:18 2019 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/aberk/code/QEI/#5c2ad81551aa