DoubleCoilGun
Fork of CoilGun by
coilgun.h@12:7cc6aeaa4bf8, 2016-09-17 (annotated)
- Committer:
- Reiko
- Date:
- Sat Sep 17 11:50:59 2016 +0000
- Revision:
- 12:7cc6aeaa4bf8
- Parent:
- 10:7518047a0375
Shorter discharge kicks
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 | 10:7518047a0375 | 10 | Coilgun(PinName kickPinName, PinName chipPinName, PinName chargePinName, PinName donePinName); |
mlaane | 8:eee78d8bfdb9 | 11 | |
mlaane | 8:eee78d8bfdb9 | 12 | /** Kick with coilgun */ |
Reiko | 10:7518047a0375 | 13 | void kick(unsigned int kickLength, unsigned int kickDelay, unsigned int chipLength, unsigned int chipDelay); |
mlaane | 8:eee78d8bfdb9 | 14 | /** Stop kick */ |
Reiko | 2:781ea1999ad3 | 15 | void kickEnd(void); |
Reiko | 10:7518047a0375 | 16 | void chipEnd(void); |
mlaane | 3:7273ba733560 | 17 | |
mlaane | 8:eee78d8bfdb9 | 18 | /** Charge capacitor */ |
Reiko | 6:4c75db8a43db | 19 | void charge(void); |
mlaane | 8:eee78d8bfdb9 | 20 | /** Stop charging capacitor */ |
Reiko | 6:4c75db8a43db | 21 | void chargeEnd(void); |
Reiko | 6:4c75db8a43db | 22 | |
mlaane | 8:eee78d8bfdb9 | 23 | /** Discharge capacitor */ |
Reiko | 6:4c75db8a43db | 24 | void discharge(void); |
mlaane | 8:eee78d8bfdb9 | 25 | /** Stop discharging */ |
Reiko | 6:4c75db8a43db | 26 | void dischargeEnd(void); |
Reiko | 6:4c75db8a43db | 27 | |
mlaane | 8:eee78d8bfdb9 | 28 | /** Read only |
mlaane | 8:eee78d8bfdb9 | 29 | * Will be set to true, when charge() is called, |
mlaane | 8:eee78d8bfdb9 | 30 | * false, when discharge is called. |
mlaane | 8:eee78d8bfdb9 | 31 | * NB! if discharge is interrupted, capacitor may still have some charge on it. |
mlaane | 8:eee78d8bfdb9 | 32 | */ |
mlaane | 8:eee78d8bfdb9 | 33 | bool isCharged; |
Reiko | 6:4c75db8a43db | 34 | |
Reiko | 6:4c75db8a43db | 35 | private: |
Reiko | 6:4c75db8a43db | 36 | enum State {idle, kicking, charging, discharging}; |
Reiko | 6:4c75db8a43db | 37 | State state; |
Reiko | 6:4c75db8a43db | 38 | |
Reiko | 10:7518047a0375 | 39 | unsigned int currentKickLength; |
Reiko | 10:7518047a0375 | 40 | unsigned int currentKickDelay; |
Reiko | 10:7518047a0375 | 41 | unsigned int currentChipLength; |
Reiko | 10:7518047a0375 | 42 | unsigned int currentChipDelay; |
Reiko | 10:7518047a0375 | 43 | |
Reiko | 6:4c75db8a43db | 44 | DigitalOut kickPin; |
Reiko | 10:7518047a0375 | 45 | DigitalOut chipPin; |
Reiko | 6:4c75db8a43db | 46 | DigitalOut chargePin; |
Reiko | 6:4c75db8a43db | 47 | InterruptIn donePin; |
Reiko | 6:4c75db8a43db | 48 | |
Reiko | 6:4c75db8a43db | 49 | Timeout kickTimeout; // This will end kicking |
Reiko | 10:7518047a0375 | 50 | Timeout kickDelayTimeout; |
Reiko | 10:7518047a0375 | 51 | Timeout chipTimeout; |
Reiko | 10:7518047a0375 | 52 | Timeout chipDelayTimeout; |
Reiko | 10:7518047a0375 | 53 | |
Reiko | 10:7518047a0375 | 54 | bool kickActive; |
Reiko | 10:7518047a0375 | 55 | bool chipActive; |
Reiko | 10:7518047a0375 | 56 | |
mlaane | 3:7273ba733560 | 57 | Timeout dischargeTimeout; // This will end discharging |
mlaane | 3:7273ba733560 | 58 | Ticker discharger; // Calls short kicks during discharge |
Reiko | 6:4c75db8a43db | 59 | |
Reiko | 10:7518047a0375 | 60 | void kickDelayEnd(void); |
Reiko | 10:7518047a0375 | 61 | void chipDelayEnd(void); |
Reiko | 10:7518047a0375 | 62 | |
Reiko | 6:4c75db8a43db | 63 | void changeState(State new_state); |
Reiko | 6:4c75db8a43db | 64 | void dischargeKick(void); |
Reiko | 10:7518047a0375 | 65 | void kick(unsigned int kickLength, unsigned int kickDelay, unsigned int chipLength, unsigned int chipDelay, bool change_state); |
Reiko | 0:2d5820be7f51 | 66 | }; |
Reiko | 6:4c75db8a43db | 67 | |
Reiko | 0:2d5820be7f51 | 68 | #endif |