My modifications/additions to the code
Dependencies: ADXL345 ADXL345_I2C IMUfilter ITG3200 Servo fishgait mbed-rtos mbed pixy_cam
Fork of robotic_fish_ver_4_8 by
MainController.h@15:dc5753a5b83e, 2014-02-12 (annotated)
- Committer:
- rkk
- Date:
- Wed Feb 12 23:57:01 2014 +0000
- Revision:
- 15:dc5753a5b83e
- Parent:
- 13:5ed8fd870723
- Child:
- 17:6970aef8154b
added the ability to use the rudder to control the amplitude
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
rkk | 11:8ec915eb70f6 | 1 | #ifndef MBED_MAINCONTROLLER_H |
rkk | 11:8ec915eb70f6 | 2 | #define MBED_MAINCONTROLLER_H |
rkk | 11:8ec915eb70f6 | 3 | |
rkk | 11:8ec915eb70f6 | 4 | #include "mbed.h" |
rkk | 11:8ec915eb70f6 | 5 | #include "PwmIn.h" |
rkk | 11:8ec915eb70f6 | 6 | #include "motor_controller.h" |
rkk | 12:7eeb29892625 | 7 | #include "guardian.h" |
rkk | 12:7eeb29892625 | 8 | //#include "IMU.h" |
rkk | 12:7eeb29892625 | 9 | |
rkk | 11:8ec915eb70f6 | 10 | |
rkk | 11:8ec915eb70f6 | 11 | #define MATH_PI 3.14159265359 |
rkk | 11:8ec915eb70f6 | 12 | |
rkk | 11:8ec915eb70f6 | 13 | /** MainController class to get control inputs and place them onto the system |
rkk | 11:8ec915eb70f6 | 14 | * |
rkk | 11:8ec915eb70f6 | 15 | * |
rkk | 11:8ec915eb70f6 | 16 | */ |
rkk | 11:8ec915eb70f6 | 17 | class MainController { |
rkk | 11:8ec915eb70f6 | 18 | public: |
rkk | 11:8ec915eb70f6 | 19 | /** Create a MainController |
rkk | 11:8ec915eb70f6 | 20 | * |
rkk | 11:8ec915eb70f6 | 21 | * @param |
rkk | 11:8ec915eb70f6 | 22 | */ |
rkk | 11:8ec915eb70f6 | 23 | MainController() ; |
rkk | 11:8ec915eb70f6 | 24 | |
rkk | 11:8ec915eb70f6 | 25 | /** Start the main controller |
rkk | 11:8ec915eb70f6 | 26 | * |
rkk | 11:8ec915eb70f6 | 27 | * @returns |
rkk | 11:8ec915eb70f6 | 28 | */ |
rkk | 11:8ec915eb70f6 | 29 | void start(); |
rkk | 11:8ec915eb70f6 | 30 | |
rkk | 11:8ec915eb70f6 | 31 | float getDutyCycle(); |
rkk | 11:8ec915eb70f6 | 32 | float getFrequency(); |
rkk | 11:8ec915eb70f6 | 33 | float getVolume(); |
rkk | 11:8ec915eb70f6 | 34 | float getAmplitude(); |
rkk | 12:7eeb29892625 | 35 | float getRudder(); |
rkk | 11:8ec915eb70f6 | 36 | |
rkk | 11:8ec915eb70f6 | 37 | /** Stop the main controller |
rkk | 11:8ec915eb70f6 | 38 | * |
rkk | 11:8ec915eb70f6 | 39 | * @returns |
rkk | 11:8ec915eb70f6 | 40 | */ |
rkk | 11:8ec915eb70f6 | 41 | void stop(); |
rkk | 11:8ec915eb70f6 | 42 | |
rkk | 11:8ec915eb70f6 | 43 | |
rkk | 11:8ec915eb70f6 | 44 | protected: |
rkk | 11:8ec915eb70f6 | 45 | void control(); |
rkk | 11:8ec915eb70f6 | 46 | float calculateFrequency(); |
rkk | 11:8ec915eb70f6 | 47 | float calculateVolume(); |
rkk | 12:7eeb29892625 | 48 | float calculateRudder(); |
rkk | 13:5ed8fd870723 | 49 | float signum(float input); |
rkk | 15:dc5753a5b83e | 50 | float saturate(float input); |
rkk | 11:8ec915eb70f6 | 51 | |
rkk | 11:8ec915eb70f6 | 52 | private: |
rkk | 11:8ec915eb70f6 | 53 | PwmIn ch3; |
rkk | 12:7eeb29892625 | 54 | PwmIn ch4; |
rkk | 11:8ec915eb70f6 | 55 | PwmIn ch6; |
rkk | 11:8ec915eb70f6 | 56 | PololuMController mcon; |
rkk | 12:7eeb29892625 | 57 | Guardian ap; |
rkk | 12:7eeb29892625 | 58 | |
rkk | 12:7eeb29892625 | 59 | |
rkk | 11:8ec915eb70f6 | 60 | Timer timer1; |
rkk | 11:8ec915eb70f6 | 61 | Ticker ticker1; |
rkk | 11:8ec915eb70f6 | 62 | float vol; |
rkk | 11:8ec915eb70f6 | 63 | float frq; |
rkk | 11:8ec915eb70f6 | 64 | float dutyCycle; |
rkk | 11:8ec915eb70f6 | 65 | float curTime; |
rkk | 11:8ec915eb70f6 | 66 | float frqMin; |
rkk | 11:8ec915eb70f6 | 67 | float frqMax; |
rkk | 11:8ec915eb70f6 | 68 | float amplitude; |
rkk | 12:7eeb29892625 | 69 | float rud; |
rkk | 13:5ed8fd870723 | 70 | float goofftime; |
rkk | 13:5ed8fd870723 | 71 | bool switched; |
rkk | 11:8ec915eb70f6 | 72 | }; |
rkk | 11:8ec915eb70f6 | 73 | |
rkk | 11:8ec915eb70f6 | 74 | #endif |
rkk | 11:8ec915eb70f6 | 75 | |
rkk | 11:8ec915eb70f6 | 76 |