CoilGun

coilgun.h

Committer:
Reiko
Date:
2013-09-18
Revision:
6:4c75db8a43db
Parent:
4:0e2bdd3d52bc
Child:
8:eee78d8bfdb9

File content as of revision 6:4c75db8a43db:

#ifndef COILGUN_H
#define COILGUN_H
 
#include "mbed.h"
 
/** Class for controlling coilgun */
class Coilgun {
public:
    Coilgun(PinName kickPinName ,PinName chargePinName, PinName donePinName);
    void kick(unsigned int length);
    void kickEnd(void);
    
    void charge(void);
    void chargeEnd(void);
    
    void discharge(void);
    void dischargeEnd(void);
    
    
private:
    enum State {idle, kicking, charging, discharging};
    State state;
    
    DigitalOut kickPin;
    DigitalOut chargePin;
    InterruptIn donePin;
 
    Timeout kickTimeout; // This will end kicking
    Timeout dischargeTimeout; // This will end discharging
    Ticker discharger; // Calls short kicks during discharge
    
    void changeState(State new_state);
    void dischargeKick(void);
    void kick(unsigned int length, bool change_state);
};
 
#endif