Reiko Randoja / DoubleCoilGun

Dependents:   Telliskivi2_2014

Fork of CoilGun by Reiko Randoja

Files at this revision

API Documentation at this revision

Comitter:
mlaane
Date:
Thu Sep 19 14:29:24 2013 +0000
Parent:
7:95d16e38d0d8
Child:
9:b663ba6a53fe
Commit message:
Moved variable isCharged inside Coilgun class.; - Removed bug: kick charges capacitor, but "isCharged" stays false; Added some documentation;

Changed in this revision

coilgun.cpp Show annotated file Show diff for this revision Revisions of this file
coilgun.h Show annotated file Show diff for this revision Revisions of this file
--- a/coilgun.cpp	Thu Sep 19 13:11:48 2013 +0000
+++ b/coilgun.cpp	Thu Sep 19 14:29:24 2013 +0000
@@ -3,10 +3,13 @@
 Coilgun::Coilgun(PinName kickPinName ,PinName chargePinName, PinName donePinName): 
     kickPin(kickPinName),chargePin(chargePinName), donePin(donePinName) 
 {
+    isCharged = false;
     state = idle;
     kickPin = 1;
     chargePin = 0;
     donePin.fall(this, &Coilgun::chargeEnd);
+    
+    discharge(); // For safety reasons.
 }
 
 void Coilgun::kick(unsigned int length) {
@@ -38,6 +41,7 @@
     changeState(charging);
     kickPin = 1;
     chargePin = 1; 
+    isCharged = true;
 }
 
 void Coilgun::chargeEnd(){
@@ -49,6 +53,7 @@
     changeState(discharging);
     dischargeTimeout.attach(this, &Coilgun::dischargeEnd, 10.0); // End discharging after 10 seconds
     discharger.attach_us(this, &Coilgun::dischargeKick, 5000); // calls short kick every 5ms
+    isCharged = false;
 }
 
 void Coilgun::dischargeEnd(void) {
--- a/coilgun.h	Thu Sep 19 13:11:48 2013 +0000
+++ b/coilgun.h	Thu Sep 19 14:29:24 2013 +0000
@@ -6,16 +6,30 @@
 /** Class for controlling coilgun */
 class Coilgun {
 public:
+    /** Create an instance of the Coilgun connected to specfied pins */
     Coilgun(PinName kickPinName ,PinName chargePinName, PinName donePinName);
+    
+    /** Kick with coilgun */
     void kick(unsigned int length);
+    /** Stop kick */
     void kickEnd(void);
     
+    /** Charge capacitor */
     void charge(void);
+    /** Stop charging capacitor */
     void chargeEnd(void);
     
+    /** Discharge capacitor */
     void discharge(void);
+    /** Stop discharging */
     void dischargeEnd(void);
     
+    /** Read only
+     * Will be set to true, when charge() is called,
+     * false, when discharge is called.
+     * NB! if discharge is interrupted, capacitor may still have some charge on it.
+     */
+    bool isCharged;
     
 private:
     enum State {idle, kicking, charging, discharging};