aa

Dependencies:   mbed

Fork of AnalogOut-HelloWorld by Mbed

Committer:
fewerhy
Date:
Mon Oct 10 20:40:05 2016 +0000
Revision:
5:e6536d2d5aba
stable

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fewerhy 5:e6536d2d5aba 1 #include "mdevice.h"
fewerhy 5:e6536d2d5aba 2
fewerhy 5:e6536d2d5aba 3 mdevice::mdevice()
fewerhy 5:e6536d2d5aba 4 {
fewerhy 5:e6536d2d5aba 5 mSpeedPort0.period(0.00002857142f);
fewerhy 5:e6536d2d5aba 6 mSpeedPort1.period(0.00002857142f);
fewerhy 5:e6536d2d5aba 7 mIndexSig0=true;
fewerhy 5:e6536d2d5aba 8 mIndexSig1=true;
fewerhy 5:e6536d2d5aba 9 mPos0=0;
fewerhy 5:e6536d2d5aba 10 mPos1=0;
fewerhy 5:e6536d2d5aba 11 mDir0=1;
fewerhy 5:e6536d2d5aba 12 mDir1=1;
fewerhy 5:e6536d2d5aba 13 mButton=0;
fewerhy 5:e6536d2d5aba 14 mPreButton=0;
fewerhy 5:e6536d2d5aba 15 mButtonEdge=0;
fewerhy 5:e6536d2d5aba 16 }
fewerhy 5:e6536d2d5aba 17
fewerhy 5:e6536d2d5aba 18 void mdevice::updateButton()
fewerhy 5:e6536d2d5aba 19 {
fewerhy 5:e6536d2d5aba 20 if (buttonPort>0.3f)
fewerhy 5:e6536d2d5aba 21 {
fewerhy 5:e6536d2d5aba 22 mButton=1;
fewerhy 5:e6536d2d5aba 23 }
fewerhy 5:e6536d2d5aba 24 else
fewerhy 5:e6536d2d5aba 25 {
fewerhy 5:e6536d2d5aba 26 mButton=0;
fewerhy 5:e6536d2d5aba 27 }
fewerhy 5:e6536d2d5aba 28
fewerhy 5:e6536d2d5aba 29 //detect up edge
fewerhy 5:e6536d2d5aba 30 if (mPreButton==0&& mButton==1)
fewerhy 5:e6536d2d5aba 31 {
fewerhy 5:e6536d2d5aba 32 mButtonEdge=1;
fewerhy 5:e6536d2d5aba 33 }
fewerhy 5:e6536d2d5aba 34 //detect down edge
fewerhy 5:e6536d2d5aba 35 else if (mPreButton==1&& mButton==0)
fewerhy 5:e6536d2d5aba 36 {
fewerhy 5:e6536d2d5aba 37 mButtonEdge=-1;
fewerhy 5:e6536d2d5aba 38 }
fewerhy 5:e6536d2d5aba 39 else
fewerhy 5:e6536d2d5aba 40 {
fewerhy 5:e6536d2d5aba 41 mButtonEdge=0;
fewerhy 5:e6536d2d5aba 42 }
fewerhy 5:e6536d2d5aba 43 mPreButton=mButton;
fewerhy 5:e6536d2d5aba 44 }
fewerhy 5:e6536d2d5aba 45
fewerhy 5:e6536d2d5aba 46 void mdevice::runMotor0(float s)
fewerhy 5:e6536d2d5aba 47 {
fewerhy 5:e6536d2d5aba 48 if (s>0.001)
fewerhy 5:e6536d2d5aba 49 {
fewerhy 5:e6536d2d5aba 50 mDir0=1;
fewerhy 5:e6536d2d5aba 51 mDirPort0=1;
fewerhy 5:e6536d2d5aba 52 mSpeedPort0.write(s);
fewerhy 5:e6536d2d5aba 53 }
fewerhy 5:e6536d2d5aba 54 else if (s<-0.001)
fewerhy 5:e6536d2d5aba 55 {
fewerhy 5:e6536d2d5aba 56 mDir0=-1;
fewerhy 5:e6536d2d5aba 57 mDirPort0=0;
fewerhy 5:e6536d2d5aba 58 mSpeedPort0.write(-s);
fewerhy 5:e6536d2d5aba 59 }
fewerhy 5:e6536d2d5aba 60 else
fewerhy 5:e6536d2d5aba 61 {
fewerhy 5:e6536d2d5aba 62 mSpeedPort0.write(0.0f);
fewerhy 5:e6536d2d5aba 63 }
fewerhy 5:e6536d2d5aba 64 }
fewerhy 5:e6536d2d5aba 65
fewerhy 5:e6536d2d5aba 66 void mdevice::runMotor1(float s)
fewerhy 5:e6536d2d5aba 67 {
fewerhy 5:e6536d2d5aba 68 if (s>0.001)
fewerhy 5:e6536d2d5aba 69 {
fewerhy 5:e6536d2d5aba 70 mDir1=1;
fewerhy 5:e6536d2d5aba 71 mDirPort1=1;
fewerhy 5:e6536d2d5aba 72 mSpeedPort1.write(s);
fewerhy 5:e6536d2d5aba 73 }
fewerhy 5:e6536d2d5aba 74 else if (s<-0.001)
fewerhy 5:e6536d2d5aba 75 {
fewerhy 5:e6536d2d5aba 76 mDir1=-1;
fewerhy 5:e6536d2d5aba 77 mDirPort1=0;
fewerhy 5:e6536d2d5aba 78 mSpeedPort1.write(-s);
fewerhy 5:e6536d2d5aba 79 }
fewerhy 5:e6536d2d5aba 80 else
fewerhy 5:e6536d2d5aba 81 {
fewerhy 5:e6536d2d5aba 82 mSpeedPort1.write(0.0f);
fewerhy 5:e6536d2d5aba 83 }
fewerhy 5:e6536d2d5aba 84 }
fewerhy 5:e6536d2d5aba 85
fewerhy 5:e6536d2d5aba 86 void mdevice::updateEncoder0()
fewerhy 5:e6536d2d5aba 87 {
fewerhy 5:e6536d2d5aba 88 if (encoderPort0<0.3f )
fewerhy 5:e6536d2d5aba 89 {
fewerhy 5:e6536d2d5aba 90 if (mIndexSig0==true)
fewerhy 5:e6536d2d5aba 91 {
fewerhy 5:e6536d2d5aba 92 mIndexSig0=false;
fewerhy 5:e6536d2d5aba 93 mPos0=mPos0+mDir0;
fewerhy 5:e6536d2d5aba 94 }
fewerhy 5:e6536d2d5aba 95 }
fewerhy 5:e6536d2d5aba 96 else
fewerhy 5:e6536d2d5aba 97 {
fewerhy 5:e6536d2d5aba 98 mIndexSig0=true;
fewerhy 5:e6536d2d5aba 99 }
fewerhy 5:e6536d2d5aba 100 }
fewerhy 5:e6536d2d5aba 101
fewerhy 5:e6536d2d5aba 102 void mdevice::updateEncoder1()
fewerhy 5:e6536d2d5aba 103 {
fewerhy 5:e6536d2d5aba 104 if (encoderPort1<0.3f )
fewerhy 5:e6536d2d5aba 105 {
fewerhy 5:e6536d2d5aba 106 if (mIndexSig1==true)
fewerhy 5:e6536d2d5aba 107 {
fewerhy 5:e6536d2d5aba 108 mIndexSig1=false;
fewerhy 5:e6536d2d5aba 109 mPos1=mPos1+mDir1;
fewerhy 5:e6536d2d5aba 110 }
fewerhy 5:e6536d2d5aba 111 }
fewerhy 5:e6536d2d5aba 112 else
fewerhy 5:e6536d2d5aba 113 {
fewerhy 5:e6536d2d5aba 114 mIndexSig1=true;
fewerhy 5:e6536d2d5aba 115 }
fewerhy 5:e6536d2d5aba 116 }
fewerhy 5:e6536d2d5aba 117
fewerhy 5:e6536d2d5aba 118 void mdevice::updateDeviceStatus()
fewerhy 5:e6536d2d5aba 119 {
fewerhy 5:e6536d2d5aba 120 updateEncoder0();
fewerhy 5:e6536d2d5aba 121 updateEncoder1();
fewerhy 5:e6536d2d5aba 122 updateButton();
fewerhy 5:e6536d2d5aba 123 }
fewerhy 5:e6536d2d5aba 124
fewerhy 5:e6536d2d5aba 125 int mdevice::getButton()
fewerhy 5:e6536d2d5aba 126 {
fewerhy 5:e6536d2d5aba 127 return mButton;
fewerhy 5:e6536d2d5aba 128 }
fewerhy 5:e6536d2d5aba 129
fewerhy 5:e6536d2d5aba 130 int mdevice::getMotorPos0()
fewerhy 5:e6536d2d5aba 131 {
fewerhy 5:e6536d2d5aba 132 return mPos0;
fewerhy 5:e6536d2d5aba 133 }
fewerhy 5:e6536d2d5aba 134
fewerhy 5:e6536d2d5aba 135 int mdevice::getMotorPos1()
fewerhy 5:e6536d2d5aba 136 {
fewerhy 5:e6536d2d5aba 137 return mPos1;
fewerhy 5:e6536d2d5aba 138 }
fewerhy 5:e6536d2d5aba 139
fewerhy 5:e6536d2d5aba 140 int mdevice::getButtonEdge()
fewerhy 5:e6536d2d5aba 141 {
fewerhy 5:e6536d2d5aba 142 return mButtonEdge;
fewerhy 5:e6536d2d5aba 143 }
fewerhy 5:e6536d2d5aba 144