LineSensTest for Bertl16

Dependencies:   mbed

Fork of B16Test4 by michael hollegha

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Bertl16.h Source File

Bertl16.h

00001 #include "mbed.h"
00002 
00003 //              main=1 LS=2  ENC=4
00004 BusOut boardPow(P2_13, P2_5, P2_2); // B16/17
00005 
00006 DigitalOut LedFL1(P1_10); // D1
00007 DigitalOut LedFL2(P1_11); // D2
00008 DigitalOut LedFR1(P1_12); // D4
00009 DigitalOut LedFR2(P1_13); // D5
00010 
00011 DigitalOut LedBL1(P1_14); // D6
00012 DigitalOut LedBL2(P1_15); // D7
00013 DigitalOut LedBR1(P1_16); // D8
00014 DigitalOut LedBR2(P1_17); // D9
00015 
00016 DigitalOut LedD10(P1_18); DigitalOut LedD11(P2_16); DigitalOut LedD12(P1_20);
00017 DigitalOut LedD13(P1_21);
00018 
00019 // Links / Rechts wenn man von hinten auf den Bertl draufschaut
00020 DigitalIn BtnBM(P1_26); //TA4
00021 DigitalIn BtnBR(P1_28); //TA6
00022 DigitalIn BtnBL(P1_27); //TA5
00023 
00024 DigitalIn BtnFM(P1_23); //TA1 
00025 DigitalIn BtnFR(P1_24); //TA2
00026 DigitalIn BtnFL(P1_25); //TA3
00027 DigitalIn BtnFRR(P1_30); //TA7
00028 DigitalIn BtnFLL(P1_31); //TA8
00029 
00030 DigitalIn xx1(P2_8), xx2(P2_9); // the useless Encoder-Inputs
00031 
00032 
00033 int GetPin(PinName aName)
00034 {
00035   return (aName >> PIN_SHIFT) & 0x0000003F;
00036 }
00037 
00038 int GetPort(PinName aName)
00039 {
00040   return (aName >> PORT_SHIFT) & 0x0000003F;
00041 }
00042 
00043 
00044 class Motor {
00045     public:
00046         Motor(PinName pwm, PinName fwd, PinName rev);
00047     void SetBrake(int aOnOff);
00048         void SetPow(float aPow);
00049     void SetPow2(float aPow);
00050     protected:
00051     PwmOut _pwm;
00052     DigitalOut _fwd;
00053     DigitalOut _rev;
00054     int16_t    _running;
00055 };
00056 
00057 Motor mL(P1_19,P2_15,P2_14); Motor mR(P2_19,P2_20,P2_21);
00058 
00059 Motor::Motor(PinName pwm, PinName fwd, PinName rev) :
00060 _pwm(pwm), _fwd(fwd), _rev(rev) 
00061 {
00062     _pwm.period(0.001); _pwm=0;
00063     _fwd=0; _rev=0; _running=0;
00064 }
00065 
00066 void Motor::SetBrake(int aOnOff)
00067 {
00068   _pwm=0;
00069   if( aOnOff )
00070     { _fwd=0; _rev=0; }
00071   else
00072     { _fwd=1; _rev=1; }
00073 }
00074 
00075 void Motor::SetPow(float aPow)
00076 {
00077     if( aPow==0 ) {
00078     _pwm=0; _running=0; return;
00079   }
00080     if( aPow>=0.0 ) {
00081         _fwd=1; _rev=0;
00082         _pwm = aPow;
00083     }
00084     else {
00085         _fwd=0; _rev=1;
00086         _pwm = -aPow;
00087     }
00088     _running=1;
00089 }
00090 
00091 void Motor::SetPow2(float aPow)
00092 {
00093   float pow;
00094   if( aPow==0 ) {
00095     _pwm=0; _running=0; return;
00096   }
00097     if( aPow>=0.0 ) {
00098         _fwd=1; _rev=0;
00099         pow = aPow;
00100     }
00101     else {
00102         _fwd=0; _rev=1;
00103         pow = -aPow;
00104     }
00105   if( !_running && (pow<0.3) ) {
00106     _pwm = 0.3;
00107     wait_ms(20); // 50
00108   }
00109   _pwm = pow;
00110   _running = 1;
00111 }
00112 
00113 
00114 void AllLedsOff()
00115 {
00116   LedFL1=1;
00117   LedFL2=LedFR1=LedFR2=LedBL1=LedBL2=LedBR1=LedBR2=1;
00118   LedD10=LedD11=LedD12=LedD13=1;
00119 }
00120 
00121 
00122 /* DigitalInHL public DigitalIn {
00123   public:
00124     DigitalInHL(PinName pin) : DigitalIn(pin) {}
00125 
00126     int MultiCheck(int aState=0)
00127     {
00128       int cnt=0;
00129       for(int i=1; i<=10; i++)
00130         {
00131             if( read()==aState )
00132                 cnt++;
00133       }
00134       if( cnt>=10 )
00135         return 1;
00136       return 0;
00137     }
00138 }; */
00139 
00140 
00141 class AnalogInHL2 : public AnalogIn {
00142   public:
00143     AnalogInHL2(PinName pin) : AnalogIn(pin) {}
00144     int Read()
00145             { return read_u16()>>4; }
00146 };
00147 
00148 
00149 
00150 
00151