Change of code in Solenoid taken from Jim Hamblen's Notebook page on solenoids. https://developer.mbed.org/users/4180_1/notebook/an-introduction-to-solenoids/ Changed action of Solenoid class. Removed off delay functionality. Added on delay functionality and renamed for clarity between on delay and on time.
Fork of Solenoid by
Solenoid.h@1:b87c9e1546c5, 2015-12-09 (annotated)
- Committer:
- mitchpang
- Date:
- Wed Dec 09 19:46:01 2015 +0000
- Revision:
- 1:b87c9e1546c5
- Parent:
- 0:bd163b4ce456
Changed action of Solenoid class. Removed off delay functionality. Added on delay functionality and renamed for clarity between on delay and on time.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mitchpang | 0:bd163b4ce456 | 1 | //Found on Jim Hamblen's Solenoid Notebook page at https://developer.mbed.org/users/4180_1/notebook/an-introduction-to-solenoids/ |
mitchpang | 0:bd163b4ce456 | 2 | |
mitchpang | 0:bd163b4ce456 | 3 | #ifndef __SOLENOID_H__ |
mitchpang | 0:bd163b4ce456 | 4 | #define __SOLENOID_H__ |
mitchpang | 0:bd163b4ce456 | 5 | |
mitchpang | 0:bd163b4ce456 | 6 | #include "mbed.h" |
mitchpang | 0:bd163b4ce456 | 7 | |
mitchpang | 0:bd163b4ce456 | 8 | class Solenoid |
mitchpang | 0:bd163b4ce456 | 9 | { |
mitchpang | 0:bd163b4ce456 | 10 | public: |
mitchpang | 1:b87c9e1546c5 | 11 | Solenoid (PinName pin, float onTime=0.25, float onDelay=0.095); |
mitchpang | 0:bd163b4ce456 | 12 | void write(bool state); |
mitchpang | 0:bd163b4ce456 | 13 | Solenoid& operator= (bool value); |
mitchpang | 0:bd163b4ce456 | 14 | |
mitchpang | 0:bd163b4ce456 | 15 | private: |
mitchpang | 0:bd163b4ce456 | 16 | void Solenoid_Off_Int(); |
mitchpang | 1:b87c9e1546c5 | 17 | void Solenoid_On_Int(); |
mitchpang | 0:bd163b4ce456 | 18 | DigitalOut _pin; |
mitchpang | 0:bd163b4ce456 | 19 | Timeout tint; |
mitchpang | 1:b87c9e1546c5 | 20 | Timeout tondelay; |
mitchpang | 0:bd163b4ce456 | 21 | float ontime; |
mitchpang | 1:b87c9e1546c5 | 22 | float delaytime; |
mitchpang | 0:bd163b4ce456 | 23 | }; |
mitchpang | 1:b87c9e1546c5 | 24 | Solenoid::Solenoid(PinName pin, float onTime, float onDelay) : _pin(pin), ontime(onTime), delaytime(onDelay) |
mitchpang | 0:bd163b4ce456 | 25 | { |
mitchpang | 0:bd163b4ce456 | 26 | _pin=0; |
mitchpang | 0:bd163b4ce456 | 27 | |
mitchpang | 0:bd163b4ce456 | 28 | } |
mitchpang | 0:bd163b4ce456 | 29 | void Solenoid::Solenoid_Off_Int() |
mitchpang | 0:bd163b4ce456 | 30 | { |
mitchpang | 0:bd163b4ce456 | 31 | _pin=0;//OFF timer interrupt routine to auto turn off solenoid |
mitchpang | 1:b87c9e1546c5 | 32 | } |
mitchpang | 1:b87c9e1546c5 | 33 | void Solenoid::Solenoid_On_Int() |
mitchpang | 1:b87c9e1546c5 | 34 | { |
mitchpang | 1:b87c9e1546c5 | 35 | _pin = 1; |
mitchpang | 1:b87c9e1546c5 | 36 | tint.attach(this,&Solenoid::Solenoid_Off_Int,ontime);//setup a timer interrupt for on time |
mitchpang | 0:bd163b4ce456 | 37 | } |
mitchpang | 0:bd163b4ce456 | 38 | void Solenoid::write(bool value) |
mitchpang | 0:bd163b4ce456 | 39 | { |
mitchpang | 0:bd163b4ce456 | 40 | if (value!=0) {//ON so do auto off with timer interrupt |
mitchpang | 1:b87c9e1546c5 | 41 | tondelay.attach(this,&Solenoid::Solenoid_On_Int,delaytime); |
mitchpang | 0:bd163b4ce456 | 42 | } else |
mitchpang | 1:b87c9e1546c5 | 43 | _pin = value;//solenoid turned off with a write call (not timers) |
mitchpang | 0:bd163b4ce456 | 44 | } |
mitchpang | 0:bd163b4ce456 | 45 | Solenoid& Solenoid::operator= (bool value) |
mitchpang | 0:bd163b4ce456 | 46 | { |
mitchpang | 0:bd163b4ce456 | 47 | write(value); |
mitchpang | 0:bd163b4ce456 | 48 | return *this; |
mitchpang | 0:bd163b4ce456 | 49 | } |
mitchpang | 0:bd163b4ce456 | 50 | |
mitchpang | 0:bd163b4ce456 | 51 | #endif /* __SOLENOID_H__ */ |