ジャパンオープン用のメインプログラム

Dependencies:   mbed AQM1602 HMC6352 PID

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers switch.cpp Source File

switch.cpp

00001 #include "mbed.h"
00002 #include "extern.h"
00003 
00004 
00005 uint8_t _samples[4]={0};
00006 uint8_t _output[4]={0};
00007 uint8_t _output_last[4]={0};
00008 uint8_t _rising_flag[4]={0};
00009 
00010 void Sw_sample(void) {
00011     int i;
00012     for(i=0; i<4; i++){
00013         _output_last[i] = _output[i];
00014         _output[i] = Sw[i].read();
00015         if (!_output[i] && _output_last[i])
00016         {
00017             _rising_flag[i]++;
00018         }
00019     }
00020     //pc.printf("food%d\r\n",_output_last[0]);
00021 }
00022 // return number of rising edges
00023 uint8_t Sw_count(uint8_t pin) {
00024     //pin...from 0 to 3
00025     if(pin>=4) return 0;
00026      uint8_t return_value = _rising_flag[pin]; 
00027      _rising_flag[pin] = 0;
00028      return(return_value);
00029  }
00030 // return the debounced status
00031 uint8_t ReadSw(void){
00032 /******
00033  *return : sw_state
00034  *スイッチを押したときの動作はdef.hを参照
00035  *チャタリング防止ライブラリ採用式
00036  *同時押しは判別されない
00037  *****/
00038     uint8_t i,result;
00039     for(i=result=0; i<4; i++){
00040         if(Sw_count(i) > 0){
00041             result = i+1;
00042         }
00043     }
00044     return result;
00045 }
00046 uint8_t CountSw(uint8_t pin){
00047 /******
00048  *return : sw_state
00049  *スイッチを押したときの動作はdef.hを参照
00050  *チャタリング防止ライブラリ採用式
00051  *同時押しは判別されない
00052  *****/
00053     return (Sw_count(pin) > 0);
00054 }