michael hollegha
/
LineSensTest_B16
LineSensTest for Bertl16
Fork of B16Test4 by
Embed:
(wiki syntax)
Show/hide line numbers
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
Generated on Wed Jul 20 2022 16:06:08 by 1.7.2