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.
main.cpp@0:7cd6baddb768, 2015-05-28 (annotated)
- Committer:
- Jamess
- Date:
- Thu May 28 18:37:18 2015 +0000
- Revision:
- 0:7cd6baddb768
How to use a state machine with Switch Case;
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| Jamess | 0:7cd6baddb768 | 1 | /*****************************************************************/ |
| Jamess | 0:7cd6baddb768 | 2 | /* How to use State Machines in C */ |
| Jamess | 0:7cd6baddb768 | 3 | /* Switch|Case */ |
| Jamess | 0:7cd6baddb768 | 4 | /*****************************************************************/ |
| Jamess | 0:7cd6baddb768 | 5 | |
| Jamess | 0:7cd6baddb768 | 6 | // Librarys: |
| Jamess | 0:7cd6baddb768 | 7 | #include "mbed.h" |
| Jamess | 0:7cd6baddb768 | 8 | |
| Jamess | 0:7cd6baddb768 | 9 | // Configuration: |
| Jamess | 0:7cd6baddb768 | 10 | DigitalOut led(LED1); |
| Jamess | 0:7cd6baddb768 | 11 | Serial pc(USBTX,USBRX); |
| Jamess | 0:7cd6baddb768 | 12 | |
| Jamess | 0:7cd6baddb768 | 13 | //Functions |
| Jamess | 0:7cd6baddb768 | 14 | |
| Jamess | 0:7cd6baddb768 | 15 | |
| Jamess | 0:7cd6baddb768 | 16 | int main(){ |
| Jamess | 0:7cd6baddb768 | 17 | /************STATES**************/ |
| Jamess | 0:7cd6baddb768 | 18 | enum states{ |
| Jamess | 0:7cd6baddb768 | 19 | LED_OF_1S, |
| Jamess | 0:7cd6baddb768 | 20 | LED_ON_2S, |
| Jamess | 0:7cd6baddb768 | 21 | LED_OF_3S, |
| Jamess | 0:7cd6baddb768 | 22 | LED_ON_4S |
| Jamess | 0:7cd6baddb768 | 23 | }; |
| Jamess | 0:7cd6baddb768 | 24 | enum states state = LED_OF_1S; |
| Jamess | 0:7cd6baddb768 | 25 | while(1){ |
| Jamess | 0:7cd6baddb768 | 26 | switch(state){ |
| Jamess | 0:7cd6baddb768 | 27 | case LED_OF_1S: |
| Jamess | 0:7cd6baddb768 | 28 | |
| Jamess | 0:7cd6baddb768 | 29 | //Led off for 1 second: |
| Jamess | 0:7cd6baddb768 | 30 | led=0; |
| Jamess | 0:7cd6baddb768 | 31 | pc.printf("LED_OF"); |
| Jamess | 0:7cd6baddb768 | 32 | wait(1); |
| Jamess | 0:7cd6baddb768 | 33 | state = LED_ON_2S; |
| Jamess | 0:7cd6baddb768 | 34 | |
| Jamess | 0:7cd6baddb768 | 35 | break; |
| Jamess | 0:7cd6baddb768 | 36 | case LED_ON_2S: |
| Jamess | 0:7cd6baddb768 | 37 | |
| Jamess | 0:7cd6baddb768 | 38 | //Led on for 2 seconds: |
| Jamess | 0:7cd6baddb768 | 39 | led=1; |
| Jamess | 0:7cd6baddb768 | 40 | pc.printf("LED_ON"); |
| Jamess | 0:7cd6baddb768 | 41 | wait(2); |
| Jamess | 0:7cd6baddb768 | 42 | state = LED_OF_3S; |
| Jamess | 0:7cd6baddb768 | 43 | |
| Jamess | 0:7cd6baddb768 | 44 | break; |
| Jamess | 0:7cd6baddb768 | 45 | case LED_OF_3S: |
| Jamess | 0:7cd6baddb768 | 46 | |
| Jamess | 0:7cd6baddb768 | 47 | //Led off for 3 seconds: |
| Jamess | 0:7cd6baddb768 | 48 | led=0; |
| Jamess | 0:7cd6baddb768 | 49 | pc.printf("LED_OF"); |
| Jamess | 0:7cd6baddb768 | 50 | wait(3); |
| Jamess | 0:7cd6baddb768 | 51 | state = LED_ON_4S; |
| Jamess | 0:7cd6baddb768 | 52 | break; |
| Jamess | 0:7cd6baddb768 | 53 | case LED_ON_4S: |
| Jamess | 0:7cd6baddb768 | 54 | |
| Jamess | 0:7cd6baddb768 | 55 | //Led on for 4 seconds: |
| Jamess | 0:7cd6baddb768 | 56 | led=1; |
| Jamess | 0:7cd6baddb768 | 57 | pc.printf("LED_ON"); |
| Jamess | 0:7cd6baddb768 | 58 | wait(4); |
| Jamess | 0:7cd6baddb768 | 59 | state = LED_OF_1S; |
| Jamess | 0:7cd6baddb768 | 60 | break; |
| Jamess | 0:7cd6baddb768 | 61 | } |
| Jamess | 0:7cd6baddb768 | 62 | } |
| Jamess | 0:7cd6baddb768 | 63 | } |
| Jamess | 0:7cd6baddb768 | 64 |