![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
statemachine opzet
Revision 0:64c100cd152a, committed 2018-10-31
- Comitter:
- onnoderkman
- Date:
- Wed Oct 31 10:47:46 2018 +0000
- Commit message:
- State machine opzet. Overgangen van state naar state zijn nog niet compleet.
Changed in this revision
diff -r 000000000000 -r 64c100cd152a .gitignore --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.gitignore Wed Oct 31 10:47:46 2018 +0000 @@ -0,0 +1,4 @@ +.build +.mbed +projectfiles +*.py*
diff -r 000000000000 -r 64c100cd152a MODSERIAL.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/MODSERIAL.lib Wed Oct 31 10:47:46 2018 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/Sissors/code/MODSERIAL/#a3b2bc878529
diff -r 000000000000 -r 64c100cd152a README.md --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/README.md Wed Oct 31 10:47:46 2018 +0000 @@ -0,0 +1,57 @@ +# Getting started with Blinky on mbed OS + +This guide reviews the steps required to get Blinky working on an mbed OS platform. + +Please install [mbed CLI](https://github.com/ARMmbed/mbed-cli#installing-mbed-cli). + +## Import the example application + +From the command-line, import the example: + +``` +mbed import mbed-os-example-blinky +cd mbed-os-example-blinky +``` + +### Now compile + +Invoke `mbed compile`, and specify the name of your platform and your favorite toolchain (`GCC_ARM`, `ARM`, `IAR`). For example, for the ARM Compiler 5: + +``` +mbed compile -m K64F -t ARM +``` + +Your PC may take a few minutes to compile your code. At the end, you see the following result: + +``` +[snip] ++----------------------------+-------+-------+------+ +| Module | .text | .data | .bss | ++----------------------------+-------+-------+------+ +| Misc | 13939 | 24 | 1372 | +| core/hal | 16993 | 96 | 296 | +| core/rtos | 7384 | 92 | 4204 | +| features/FEATURE_IPV4 | 80 | 0 | 176 | +| frameworks/greentea-client | 1830 | 60 | 44 | +| frameworks/utest | 2392 | 512 | 292 | +| Subtotals | 42618 | 784 | 6384 | ++----------------------------+-------+-------+------+ +Allocated Heap: unknown +Allocated Stack: unknown +Total Static RAM memory (data + bss): 7168 bytes +Total RAM memory (data + bss + heap + stack): 7168 bytes +Total Flash memory (text + data + misc): 43402 bytes +Image: .\.build\K64F\ARM\mbed-os-example-blinky.bin +``` + +### Program your board + +1. Connect your mbed device to the computer over USB. +1. Copy the binary file to the mbed device. +1. Press the reset button to start the program. + +The LED on your platform turns on and off. + +## Troubleshooting + +If you have problems, you can review the [documentation](https://os.mbed.com/docs/latest/tutorials/debugging.html) for suggestions on what could be wrong and how to fix it.
diff -r 000000000000 -r 64c100cd152a main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Oct 31 10:47:46 2018 +0000 @@ -0,0 +1,166 @@ +#include "mbed.h" +#include "MODSERIAL.h" + +DigitalOut ledr(LED1); +DigitalOut ledg(LED2); +DigitalOut ledb(LED3); +DigitalIn button1(SW2); +DigitalIn button2(SW3); +MODSERIAL pc(USBTX, USBRX); +enum states{WAITING, EMG_CAL, BCM, FAIL}; +states CurrentState = WAITING; +bool StateChanged = true; +volatile int x = 0; +bool failure = false; + +void ProcessStateMachine(void) +{ + switch(CurrentState) + { + case WAITING: //This state is used to only start calibrating upon user input + //State initialization + if(StateChanged) + { + pc.printf("Entering WAITING\r\n"); + ledr = 0; + ledg = 1; + ledb = 1; + StateChanged = false; + } + //State actions + pc.printf("Still WAITING\r\n"); + while(button1) + { + } + //State transition + CurrentState = EMG_CAL; + StateChanged = true; + break; // End of WAITING + case EMG_CAL: //State for calibrating EMG channels + //State initialization + if(StateChanged) + { + pc.printf("Entering EMG calibration\r\n"); + x = 0; + ledr = 1; + ledg = 0; + ledb = 1; + StateChanged = false; + } + //State actions + pc.printf("EMG calibration starting\r\n"); + wait(0.3f); //Dit moet nog veranderd worden naar timer die opneemt hoe lang hij in WAITING zit. + // calibratiestappen voor de emg hier invoegen + while(x < 4 && !failure) + { + if(x == 1) + { + //Functie die het eerste EMG signaal calibreert + } + if(x == 2) + { + //Functie die het tweede EMG signaal calibreert + } + if(x == 3) + { + //Functie die het derde EMG signaal calibreert + } + if(!button2) + { + failure = true; + } + if(!button1) + { + x++; + pc.printf("EMG calibration %i is now running\r\n", x); + wait(0.2f); + } + } + //State transition + if(failure) + { + CurrentState = FAIL; + StateChanged = true; + } + else + { + CurrentState = BCM; + StateChanged = true; + } + break; //End of EMG_CAL state + case BCM: //State for moving the robot + //State initialization + if(StateChanged) + { + pc.printf("Entering Basic Control Mode\r\n"); + ledr = 1; + ledg = 1; + ledb = 0; + StateChanged = false; + } + //State actions + pc.printf("Basic Control Mode is active\r\n"); + while(button1 && !failure) + { + if(!button2) + { + failure = true; + } + } + //State transition + if(failure) + { + pc.printf("Go to fail mode\r\n"); + CurrentState = FAIL; + StateChanged = true; + } + else + { + CurrentState = WAITING; + StateChanged = true; + } + break; //End of BCM state + case FAIL: //Fail state + //State initialization + if(StateChanged) + { + pc.printf("Fail mode is entered\r\n"); + failure = false; + StateChanged = false; + } + //State actions + pc.printf("Fail mode is active. Press button1 to enter WAITING\r\n"); + while(button1) + { + } + //State transition + CurrentState = WAITING; + StateChanged = true; + break; //End of FAIL state + default: //Emergency state for when something unexpected happens + //motoren uit enzo + pc.printf("SOS SOS SOS\r\n"); + ledr = 0; + ledg = 0; + ledb = 0; + while(button1) + { + ledr = !ledr; + wait(0.3f); + } + CurrentState = WAITING; + StateChanged = true; + } +} + +int main() +{ + pc.baud(115200); + ledr = 1; + ledg = 1; + ledb = 1; + while (true) + { + ProcessStateMachine(); //Activates state machine + } +} \ No newline at end of file
diff -r 000000000000 -r 64c100cd152a mbed-os.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-os.lib Wed Oct 31 10:47:46 2018 +0000 @@ -0,0 +1,1 @@ +https://github.com/ARMmbed/mbed-os/#e1bea44212b8275f7d8ce7253e758c2e25c57482