DoubleCoilGun

Dependents:   Telliskivi2_2014

Fork of CoilGun by Reiko Randoja

Committer:
Reiko
Date:
Wed Sep 18 11:20:31 2013 +0000
Revision:
6:4c75db8a43db
Parent:
4:0e2bdd3d52bc
Child:
8:eee78d8bfdb9
Code formatting

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:
Reiko 6:4c75db8a43db 9 Coilgun(PinName kickPinName ,PinName chargePinName, PinName donePinName);
Reiko 2:781ea1999ad3 10 void kick(unsigned int length);
Reiko 2:781ea1999ad3 11 void kickEnd(void);
mlaane 3:7273ba733560 12
Reiko 6:4c75db8a43db 13 void charge(void);
Reiko 6:4c75db8a43db 14 void chargeEnd(void);
Reiko 6:4c75db8a43db 15
Reiko 6:4c75db8a43db 16 void discharge(void);
Reiko 6:4c75db8a43db 17 void dischargeEnd(void);
Reiko 6:4c75db8a43db 18
Reiko 6:4c75db8a43db 19
Reiko 6:4c75db8a43db 20 private:
Reiko 6:4c75db8a43db 21 enum State {idle, kicking, charging, discharging};
Reiko 6:4c75db8a43db 22 State state;
Reiko 6:4c75db8a43db 23
Reiko 6:4c75db8a43db 24 DigitalOut kickPin;
Reiko 6:4c75db8a43db 25 DigitalOut chargePin;
Reiko 6:4c75db8a43db 26 InterruptIn donePin;
Reiko 6:4c75db8a43db 27
Reiko 6:4c75db8a43db 28 Timeout kickTimeout; // This will end kicking
mlaane 3:7273ba733560 29 Timeout dischargeTimeout; // This will end discharging
mlaane 3:7273ba733560 30 Ticker discharger; // Calls short kicks during discharge
Reiko 6:4c75db8a43db 31
Reiko 6:4c75db8a43db 32 void changeState(State new_state);
Reiko 6:4c75db8a43db 33 void dischargeKick(void);
Reiko 6:4c75db8a43db 34 void kick(unsigned int length, bool change_state);
Reiko 0:2d5820be7f51 35 };
Reiko 6:4c75db8a43db 36
Reiko 0:2d5820be7f51 37 #endif