A safe using the mbed, dc motor, solenoid, and more!

Dependencies:   4DGL-uLCD-SE DebounceIn Motordriver PinDetect SDFileSystem mbed-rtos mbed

Committer:
adamlawrence
Date:
Fri Apr 29 20:01:29 2016 +0000
Revision:
0:6b5c0ae5acc6
initial commit;

Who changed what in which revision?

UserRevisionLine numberNew 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