Control a solenoid using a power MOSFET circuit

Dependencies:   mbed

Committer:
Nydrel
Date:
Wed Feb 14 09:39:54 2018 +0000
Revision:
0:9a9311d745c3
Changed the solenoid to pin21;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Nydrel 0:9a9311d745c3 1 #include "mbed.h"
Nydrel 0:9a9311d745c3 2 //Solenoid Hello World
Nydrel 0:9a9311d745c3 3 DigitalOut myled(LED1);
Nydrel 0:9a9311d745c3 4 //Non blocking with auto off delay using timer interrupt setup by class
Nydrel 0:9a9311d745c3 5 class Solenoid
Nydrel 0:9a9311d745c3 6 {
Nydrel 0:9a9311d745c3 7 public:
Nydrel 0:9a9311d745c3 8 Solenoid (PinName pin, float delay=0.5);
Nydrel 0:9a9311d745c3 9 void write(bool state);
Nydrel 0:9a9311d745c3 10 Solenoid& operator= (bool value);
Nydrel 0:9a9311d745c3 11
Nydrel 0:9a9311d745c3 12 private:
Nydrel 0:9a9311d745c3 13 void Solenoid_Off_Int();
Nydrel 0:9a9311d745c3 14 DigitalOut _pin;
Nydrel 0:9a9311d745c3 15 Timeout tint;
Nydrel 0:9a9311d745c3 16 float ontime;
Nydrel 0:9a9311d745c3 17 };
Nydrel 0:9a9311d745c3 18 Solenoid::Solenoid(PinName pin, float delay) : _pin(pin), ontime(delay)
Nydrel 0:9a9311d745c3 19 {
Nydrel 0:9a9311d745c3 20 _pin=0;
Nydrel 0:9a9311d745c3 21 }
Nydrel 0:9a9311d745c3 22 void Solenoid::Solenoid_Off_Int()
Nydrel 0:9a9311d745c3 23 {
Nydrel 0:9a9311d745c3 24 _pin=0;//timer interrupt routine to auto turn off solenoid
Nydrel 0:9a9311d745c3 25 }
Nydrel 0:9a9311d745c3 26 void Solenoid::write(bool value)
Nydrel 0:9a9311d745c3 27 {
Nydrel 0:9a9311d745c3 28 _pin = value;
Nydrel 0:9a9311d745c3 29 if (value!=0) //do auto off with timer interrupt
Nydrel 0:9a9311d745c3 30 tint.attach(this,&Solenoid::Solenoid_Off_Int,ontime);//setup a timer interrupt
Nydrel 0:9a9311d745c3 31 }
Nydrel 0:9a9311d745c3 32 Solenoid& Solenoid::operator= (bool value)
Nydrel 0:9a9311d745c3 33 {
Nydrel 0:9a9311d745c3 34 write(value);
Nydrel 0:9a9311d745c3 35 return *this;
Nydrel 0:9a9311d745c3 36 }
Nydrel 0:9a9311d745c3 37
Nydrel 0:9a9311d745c3 38 Solenoid mySolenoid(p21);
Nydrel 0:9a9311d745c3 39 int main()
Nydrel 0:9a9311d745c3 40 {
Nydrel 0:9a9311d745c3 41 while(1) {
Nydrel 0:9a9311d745c3 42 mySolenoid = 1; //ON with timer auto off
Nydrel 0:9a9311d745c3 43 myled = 1;
Nydrel 0:9a9311d745c3 44 wait(.5); //just for LEDs - solenoid turns off with timer interrupt
Nydrel 0:9a9311d745c3 45 myled = 0;
Nydrel 0:9a9311d745c3 46 wait(2.0);
Nydrel 0:9a9311d745c3 47 }
Nydrel 0:9a9311d745c3 48 }