CoilGun

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?

UserRevisionLine numberNew 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