CoilGun
Diff: coilgun.cpp
- Revision:
- 7:95d16e38d0d8
- Parent:
- 6:4c75db8a43db
- Child:
- 8:eee78d8bfdb9
diff -r 4c75db8a43db -r 95d16e38d0d8 coilgun.cpp --- a/coilgun.cpp Wed Sep 18 11:20:31 2013 +0000 +++ b/coilgun.cpp Thu Sep 19 13:11:48 2013 +0000 @@ -14,8 +14,9 @@ } void Coilgun::kick(unsigned int length, bool change_state = true) { - if(change_state) //Used to keep state when discharging + if (change_state) {//Used to keep state when discharging changeState(kicking); + } chargePin = 0; // Maybe not needed anymore? (still a safety?) kickPin = 0; @@ -26,7 +27,7 @@ kickTimeout.detach(); kickPin = 1; - if(state != discharging){ //Used when discharging + if (state != discharging){ //Used when discharging chargePin = 1; // Don't start charging again state = idle; //(let state stay "discharging") } @@ -49,10 +50,12 @@ dischargeTimeout.attach(this, &Coilgun::dischargeEnd, 10.0); // End discharging after 10 seconds discharger.attach_us(this, &Coilgun::dischargeKick, 5000); // calls short kick every 5ms } + void Coilgun::dischargeEnd(void) { discharger.detach(); state = idle; } + void Coilgun::dischargeKick(void) { kick(500, false); } @@ -60,20 +63,20 @@ void Coilgun::changeState(State new_state){ switch(state){ case idle: - //nothing to end. - break; + //nothing to end. + break; case kicking: - kickEnd(); - break; + kickEnd(); + break; case charging: - chargeEnd(); - break; + chargeEnd(); + break; case discharging: - dischargeEnd(); - break; + dischargeEnd(); + break; default: - //error - no such state - break; + //error - no such state + break; } //set new state state = new_state;