Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of CoilGun by
Revision 8:eee78d8bfdb9, committed 2013-09-19
- 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};
