lknds
Dependencies: mbed TrapezoidControl Pulse QEI
Switch.cpp
00001 #include "Switch.h" 00002 00003 #include <stdint.h> 00004 #include "mbed.h" 00005 00006 namespace SWITCH { 00007 DigitalIn dipSw[] = { 00008 DigitalIn(DIP0_PIN), 00009 DigitalIn(DIP1_PIN), 00010 DigitalIn(DIP2_PIN), 00011 DigitalIn(DIP3_PIN), 00012 }; 00013 00014 DigitalIn limitSw(LS_PIN); 00015 00016 DigitalOut selectPin[] = { 00017 DigitalOut(SELECT0_PIN), 00018 DigitalOut(SELECT1_PIN), 00019 DigitalOut(SELECT2_PIN), 00020 DigitalOut(SELECT3_PIN), 00021 }; 00022 00023 DigitalIn limitSw_N[] = { 00024 DigitalIn(LS_16), 00025 DigitalIn(LS_17), 00026 DigitalIn(LS_18), 00027 DigitalIn(LS_19), 00028 DigitalIn(LS_20), 00029 }; 00030 00031 void DipSw::Initialize() { 00032 for(uint8_t i=0; i < sizeof(dipSw)/sizeof(dipSw[0]); i++) { 00033 dipSw[i].mode(PullUp); 00034 } 00035 } 00036 00037 uint8_t DipSw::GetStatus() { 00038 if(DIP0 == SW_ON) return 0; 00039 else if(DIP1 == SW_ON) return 1; 00040 else if(DIP2 == SW_ON) return 2; 00041 else if(DIP3 == SW_ON) return 3; 00042 00043 return 0; 00044 } 00045 00046 void LimitSw::Initialize() { 00047 for(uint8_t i=0; i<4; i++) selectPin[i] = 0; 00048 limitSw.mode(PullUp); 00049 } 00050 00051 bool LimitSw::IsPressed(int index) { 00052 00053 MP_Channel ch; 00054 bool button; 00055 00056 switch(index){ 00057 case 0: 00058 ch.all = 9; 00059 break; 00060 case 1: 00061 ch.all = 11; 00062 break; 00063 case 2: 00064 ch.all = 13; 00065 break; 00066 case 3: 00067 ch.all = 15; 00068 break; 00069 case 4: 00070 ch.all = 8; 00071 break; 00072 case 5: 00073 ch.all = 10; 00074 break; 00075 case 6: 00076 ch.all = 12; 00077 break; 00078 case 7: 00079 ch.all = 14; 00080 break; 00081 case 8: 00082 ch.all = 7; 00083 break; 00084 case 9: 00085 ch.all = 4; 00086 break; 00087 case 10: 00088 ch.all = 2; 00089 break; 00090 case 11: 00091 ch.all = 0; 00092 break; 00093 case 12: 00094 ch.all = 6; 00095 break; 00096 case 13: 00097 ch.all = 5; 00098 break; 00099 case 14: 00100 ch.all = 3; 00101 break; 00102 case 15: 00103 ch.all = 1; 00104 break; 00105 case 16: 00106 button = limitSw_N[0]; 00107 break; 00108 case 17: 00109 button = limitSw_N[1]; 00110 break; 00111 case 18: 00112 button = limitSw_N[2]; 00113 break; 00114 case 19: 00115 button = limitSw_N[3]; 00116 break; 00117 case 20: 00118 button = limitSw_N[4]; 00119 break; 00120 } 00121 00122 00123 selectPin[0] = ch.s0; 00124 selectPin[1] = ch.s1; 00125 selectPin[2] = ch.s2; 00126 selectPin[3] = ch.s3; 00127 00128 wait_us(1); 00129 00130 if(index < 16) return limitSw ? false : true; 00131 else return button ? false : true; 00132 } 00133 }
Generated on Sun Jul 17 2022 15:33:13 by 1.7.2