Kai Lauterbach
/
MBedToBrainMachine
mbed to brain machine firmware. See http://klautesblog.blogspot.com for further information.
main.h@0:cf8c942ef95b, 2011-04-09 (annotated)
- Committer:
- klaute
- Date:
- Sat Apr 09 12:35:35 2011 +0000
- Revision:
- 0:cf8c942ef95b
- Child:
- 1:90922bda2b17
v0.1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
klaute | 0:cf8c942ef95b | 1 | /** |
klaute | 0:cf8c942ef95b | 2 | * firmware for the mbed to brain machine project |
klaute | 0:cf8c942ef95b | 3 | * see http://klautesblog.blogspot.com for further information. |
klaute | 0:cf8c942ef95b | 4 | * |
klaute | 0:cf8c942ef95b | 5 | * Licensed under GPLv3 - http://www.gnu.org/licenses/gpl.html |
klaute | 0:cf8c942ef95b | 6 | * |
klaute | 0:cf8c942ef95b | 7 | * Written by Kai Lauterbach (klaute at gmail dot com) 04/2011 |
klaute | 0:cf8c942ef95b | 8 | */ |
klaute | 0:cf8c942ef95b | 9 | |
klaute | 0:cf8c942ef95b | 10 | #include "mbed.h" |
klaute | 0:cf8c942ef95b | 11 | |
klaute | 0:cf8c942ef95b | 12 | /*************************************************************************************************/ |
klaute | 0:cf8c942ef95b | 13 | |
klaute | 0:cf8c942ef95b | 14 | #define HZ_14_4 0.06940000 |
klaute | 0:cf8c942ef95b | 15 | #define HZ_14_4_HALF 0.03470000 |
klaute | 0:cf8c942ef95b | 16 | |
klaute | 0:cf8c942ef95b | 17 | #define HZ_11_1 0.09009009 |
klaute | 0:cf8c942ef95b | 18 | #define HZ_11_1_HALF 0.04504504 |
klaute | 0:cf8c942ef95b | 19 | |
klaute | 0:cf8c942ef95b | 20 | #define HZ_6 0.16666666 |
klaute | 0:cf8c942ef95b | 21 | #define HZ_6_HALF 0.08333333 |
klaute | 0:cf8c942ef95b | 22 | |
klaute | 0:cf8c942ef95b | 23 | #define HZ_2_2 0.45454545 |
klaute | 0:cf8c942ef95b | 24 | #define HZ_2_2_HALF 0.22727272 |
klaute | 0:cf8c942ef95b | 25 | |
klaute | 0:cf8c942ef95b | 26 | #define HZ_414_4 0.00241312 |
klaute | 0:cf8c942ef95b | 27 | #define HZ_411_1 0.00243249 |
klaute | 0:cf8c942ef95b | 28 | #define HZ_406 0.00246305 |
klaute | 0:cf8c942ef95b | 29 | #define HZ_402_2 0.00248632 |
klaute | 0:cf8c942ef95b | 30 | #define HZ_400 0.00250000 |
klaute | 0:cf8c942ef95b | 31 | |
klaute | 0:cf8c942ef95b | 32 | #define ALFA 0 |
klaute | 0:cf8c942ef95b | 33 | #define BETA 1 |
klaute | 0:cf8c942ef95b | 34 | #define DELTA 2 |
klaute | 0:cf8c942ef95b | 35 | #define THETA 3 |
klaute | 0:cf8c942ef95b | 36 | |
klaute | 0:cf8c942ef95b | 37 | #define BRAINWAVE_CTRL_DELAY 1 // in seconds |
klaute | 0:cf8c942ef95b | 38 | |
klaute | 0:cf8c942ef95b | 39 | /*************************************************************************************************/ |
klaute | 0:cf8c942ef95b | 40 | |
klaute | 0:cf8c942ef95b | 41 | DigitalOut LEDStatus1 (LED1); |
klaute | 0:cf8c942ef95b | 42 | DigitalOut LEDStatus2 (LED2); |
klaute | 0:cf8c942ef95b | 43 | |
klaute | 0:cf8c942ef95b | 44 | /*************************************************************************************************/ |
klaute | 0:cf8c942ef95b | 45 | |
klaute | 0:cf8c942ef95b | 46 | Ticker timer0; |
klaute | 0:cf8c942ef95b | 47 | Ticker timer1; |
klaute | 0:cf8c942ef95b | 48 | Ticker timer2; |
klaute | 0:cf8c942ef95b | 49 | |
klaute | 0:cf8c942ef95b | 50 | /*************************************************************************************************/ |
klaute | 0:cf8c942ef95b | 51 | |
klaute | 0:cf8c942ef95b | 52 | PwmOut ledStatusLeft (LED3); |
klaute | 0:cf8c942ef95b | 53 | PwmOut ledStatusRight (LED4); |
klaute | 0:cf8c942ef95b | 54 | PwmOut ledLeft (p21); |
klaute | 0:cf8c942ef95b | 55 | PwmOut ledRight (p22); |
klaute | 0:cf8c942ef95b | 56 | |
klaute | 0:cf8c942ef95b | 57 | /*************************************************************************************************/ |
klaute | 0:cf8c942ef95b | 58 | |
klaute | 0:cf8c942ef95b | 59 | DigitalOut audioRight (p23); |
klaute | 0:cf8c942ef95b | 60 | DigitalOut audioLeft (p24); |
klaute | 0:cf8c942ef95b | 61 | |
klaute | 0:cf8c942ef95b | 62 | /*************************************************************************************************/ |
klaute | 0:cf8c942ef95b | 63 | typedef struct Brainwave { |
klaute | 0:cf8c942ef95b | 64 | int type; // 0 = Alpha; 1 = Beta; 2 = Delta; 3 = Theta |
klaute | 0:cf8c942ef95b | 65 | float duration; // in seconds |
klaute | 0:cf8c942ef95b | 66 | bool isEnd; // true = brainwave sequence end. |
klaute | 0:cf8c942ef95b | 67 | } Brainwave_t; |
klaute | 0:cf8c942ef95b | 68 | |
klaute | 0:cf8c942ef95b | 69 | Brainwave_t brainwaves[44]; |
klaute | 0:cf8c942ef95b | 70 | |
klaute | 0:cf8c942ef95b | 71 | int bw_pos = 0; |
klaute | 0:cf8c942ef95b | 72 | int bw_duration = 0; |
klaute | 0:cf8c942ef95b | 73 | |
klaute | 0:cf8c942ef95b | 74 | /*************************************************************************************************/ |