CoilGun
coilgun.h@9:b663ba6a53fe, 2013-11-04 (annotated)
- Committer:
- Reiko
- Date:
- Mon Nov 04 17:06:58 2013 +0000
- Revision:
- 9:b663ba6a53fe
- Parent:
- 8:eee78d8bfdb9
Removed done interrupt handling
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Reiko | 0:2d5820be7f51 | 1 | #ifndef COILGUN_H |
Reiko | 0:2d5820be7f51 | 2 | #define COILGUN_H |
Reiko | 6:4c75db8a43db | 3 | |
Reiko | 0:2d5820be7f51 | 4 | #include "mbed.h" |
Reiko | 6:4c75db8a43db | 5 | |
Reiko | 6:4c75db8a43db | 6 | /** Class for controlling coilgun */ |
Reiko | 6:4c75db8a43db | 7 | class Coilgun { |
Reiko | 0:2d5820be7f51 | 8 | public: |
mlaane | 8:eee78d8bfdb9 | 9 | /** Create an instance of the Coilgun connected to specfied pins */ |
Reiko | 6:4c75db8a43db | 10 | Coilgun(PinName kickPinName ,PinName chargePinName, PinName donePinName); |
mlaane | 8:eee78d8bfdb9 | 11 | |
mlaane | 8:eee78d8bfdb9 | 12 | /** Kick with coilgun */ |
Reiko | 2:781ea1999ad3 | 13 | void kick(unsigned int length); |
mlaane | 8:eee78d8bfdb9 | 14 | /** Stop kick */ |
Reiko | 2:781ea1999ad3 | 15 | void kickEnd(void); |
mlaane | 3:7273ba733560 | 16 | |
mlaane | 8:eee78d8bfdb9 | 17 | /** Charge capacitor */ |
Reiko | 6:4c75db8a43db | 18 | void charge(void); |
mlaane | 8:eee78d8bfdb9 | 19 | /** Stop charging capacitor */ |
Reiko | 6:4c75db8a43db | 20 | void chargeEnd(void); |
Reiko | 6:4c75db8a43db | 21 | |
mlaane | 8:eee78d8bfdb9 | 22 | /** Discharge capacitor */ |
Reiko | 6:4c75db8a43db | 23 | void discharge(void); |
mlaane | 8:eee78d8bfdb9 | 24 | /** Stop discharging */ |
Reiko | 6:4c75db8a43db | 25 | void dischargeEnd(void); |
Reiko | 6:4c75db8a43db | 26 | |
mlaane | 8:eee78d8bfdb9 | 27 | /** Read only |
mlaane | 8:eee78d8bfdb9 | 28 | * Will be set to true, when charge() is called, |
mlaane | 8:eee78d8bfdb9 | 29 | * false, when discharge is called. |
mlaane | 8:eee78d8bfdb9 | 30 | * NB! if discharge is interrupted, capacitor may still have some charge on it. |
mlaane | 8:eee78d8bfdb9 | 31 | */ |
mlaane | 8:eee78d8bfdb9 | 32 | bool isCharged; |
Reiko | 6:4c75db8a43db | 33 | |
Reiko | 6:4c75db8a43db | 34 | private: |
Reiko | 6:4c75db8a43db | 35 | enum State {idle, kicking, charging, discharging}; |
Reiko | 6:4c75db8a43db | 36 | State state; |
Reiko | 6:4c75db8a43db | 37 | |
Reiko | 6:4c75db8a43db | 38 | DigitalOut kickPin; |
Reiko | 6:4c75db8a43db | 39 | DigitalOut chargePin; |
Reiko | 6:4c75db8a43db | 40 | InterruptIn donePin; |
Reiko | 6:4c75db8a43db | 41 | |
Reiko | 6:4c75db8a43db | 42 | Timeout kickTimeout; // This will end kicking |
mlaane | 3:7273ba733560 | 43 | Timeout dischargeTimeout; // This will end discharging |
mlaane | 3:7273ba733560 | 44 | Ticker discharger; // Calls short kicks during discharge |
Reiko | 6:4c75db8a43db | 45 | |
Reiko | 6:4c75db8a43db | 46 | void changeState(State new_state); |
Reiko | 6:4c75db8a43db | 47 | void dischargeKick(void); |
Reiko | 6:4c75db8a43db | 48 | void kick(unsigned int length, bool change_state); |
Reiko | 0:2d5820be7f51 | 49 | }; |
Reiko | 6:4c75db8a43db | 50 | |
Reiko | 0:2d5820be7f51 | 51 | #endif |