A safe using the mbed, dc motor, solenoid, and more!
Dependencies: 4DGL-uLCD-SE DebounceIn Motordriver PinDetect SDFileSystem mbed-rtos mbed
solenoid.cpp@0:6b5c0ae5acc6, 2016-04-29 (annotated)
- Committer:
- adamlawrence
- Date:
- Fri Apr 29 20:01:29 2016 +0000
- Revision:
- 0:6b5c0ae5acc6
initial commit;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
adamlawrence | 0:6b5c0ae5acc6 | 1 | #include "mbed.h" |
adamlawrence | 0:6b5c0ae5acc6 | 2 | #include "solenoid.h" |
adamlawrence | 0:6b5c0ae5acc6 | 3 | Solenoid::Solenoid(PinName pin, float ondelay, float offdelay) : _pin(pin), ontime(ondelay), offtime(offdelay) |
adamlawrence | 0:6b5c0ae5acc6 | 4 | { |
adamlawrence | 0:6b5c0ae5acc6 | 5 | _pin=0; |
adamlawrence | 0:6b5c0ae5acc6 | 6 | offtimer.start(); |
adamlawrence | 0:6b5c0ae5acc6 | 7 | |
adamlawrence | 0:6b5c0ae5acc6 | 8 | } |
adamlawrence | 0:6b5c0ae5acc6 | 9 | void Solenoid::Solenoid_Off_Int() |
adamlawrence | 0:6b5c0ae5acc6 | 10 | { |
adamlawrence | 0:6b5c0ae5acc6 | 11 | _pin=0;//OFF timer interrupt routine to auto turn off solenoid |
adamlawrence | 0:6b5c0ae5acc6 | 12 | offtimer.start(); //start off-time delay count |
adamlawrence | 0:6b5c0ae5acc6 | 13 | } |
adamlawrence | 0:6b5c0ae5acc6 | 14 | void Solenoid::write(bool value) |
adamlawrence | 0:6b5c0ae5acc6 | 15 | { |
adamlawrence | 0:6b5c0ae5acc6 | 16 | if (value!=0) {//ON so do auto off with timer interrupt |
adamlawrence | 0:6b5c0ae5acc6 | 17 | while(offtimer.read() < offtime); //wait for min OFF time before next ON allowed |
adamlawrence | 0:6b5c0ae5acc6 | 18 | offtimer.stop(); |
adamlawrence | 0:6b5c0ae5acc6 | 19 | offtimer.reset(); //reset off timer delay count |
adamlawrence | 0:6b5c0ae5acc6 | 20 | tint.attach(this,&Solenoid::Solenoid_Off_Int,ontime);//setup a timer interrupt for on time |
adamlawrence | 0:6b5c0ae5acc6 | 21 | } else |
adamlawrence | 0:6b5c0ae5acc6 | 22 | offtimer.start(); //solenoid turned off with a write call (not timers) so start off count |
adamlawrence | 0:6b5c0ae5acc6 | 23 | _pin = value; |
adamlawrence | 0:6b5c0ae5acc6 | 24 | } |
adamlawrence | 0:6b5c0ae5acc6 | 25 | Solenoid& Solenoid::operator= (bool value) |
adamlawrence | 0:6b5c0ae5acc6 | 26 | { |
adamlawrence | 0:6b5c0ae5acc6 | 27 | write(value); |
adamlawrence | 0:6b5c0ae5acc6 | 28 | return *this; |
adamlawrence | 0:6b5c0ae5acc6 | 29 | } |
adamlawrence | 0:6b5c0ae5acc6 | 30 |