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 Mitchell Pang

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?

UserRevisionLine numberNew 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__ */