Nagano kosen robocon
Embed:
(wiki syntax)
Show/hide line numbers
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 DigitalOut selectPin[] = { 00016 DigitalOut(SELECT0_PIN), 00017 DigitalOut(SELECT1_PIN), 00018 DigitalOut(SELECT2_PIN), 00019 DigitalOut(SELECT3_PIN), 00020 }; 00021 00022 DigitalIn pushSw[] = { 00023 DigitalIn(SW0_PIN), 00024 DigitalIn(SW1_PIN), 00025 DigitalIn(SW2_PIN), 00026 DigitalIn(SW3_PIN), 00027 DigitalIn(SW4_PIN), 00028 }; 00029 00030 void DipSw::Initialize() { 00031 for(uint8_t i=0; i < sizeof(dipSw)/sizeof(dipSw[0]); i++) { 00032 dipSw[i].mode(PullUp); 00033 } 00034 } 00035 00036 uint8_t DipSw::GetStatus() { 00037 if(DIP0 == SW_ON) return 0; 00038 else if(DIP1 == SW_ON) return 1; 00039 else if(DIP2 == SW_ON) return 2; 00040 else if(DIP3 == SW_ON) return 3; 00041 00042 return 0; 00043 } 00044 00045 void LimitSw::Initialize() { 00046 for(uint8_t i=0; i<4; i++) selectPin[i] = 0; 00047 limitSw.mode(PullUp); 00048 } 00049 00050 bool LimitSw::IsPressed(uint8_t index) { 00051 // if(index > 0x0f) return false; 00052 MP_Channel ch; 00053 ch.all = 15-index; 00054 00055 selectPin[0] = ch.s0; 00056 selectPin[1] = ch.s1; 00057 selectPin[2] = ch.s2; 00058 selectPin[3] = ch.s3; 00059 00060 // while(1); 00061 wait_us(10); 00062 00063 return limitSw ? false : true; 00064 } 00065 00066 void PushSw::Initialize() { 00067 for(uint8_t i=0; i<4; i++) pushSw[i].mode(PullUp); 00068 pushSw[4].mode(PullNone); 00069 } 00070 00071 bool PushSw::IsPressed(uint8_t index) { 00072 return pushSw[index] ? false : true; 00073 } 00074 } 00075
Generated on Wed Jul 13 2022 00:47:24 by
1.7.2