The last version programs

Dependencies:   mbed TrapezoidControl Pulse QEI

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Switch.cpp Source File

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 }