Main Program
Dependencies: mbed AQM1602 HMC6352 PID
minilib/switch.cpp@45:c23f25c00d0d, 2016-02-25 (annotated)
- Committer:
- lilac0112_1
- Date:
- Thu Feb 25 06:12:47 2016 +0000
- Revision:
- 45:c23f25c00d0d
- Parent:
- 17:61edad76efd7
Hokushinetsu(20:1)
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
lilac0112_1 | 16:6900f47fa0b5 | 1 | #include "mbed.h" |
lilac0112_1 | 16:6900f47fa0b5 | 2 | #include "extern.h" |
lilac0112_1 | 16:6900f47fa0b5 | 3 | |
lilac0112_1 | 17:61edad76efd7 | 4 | |
lilac0112_1 | 17:61edad76efd7 | 5 | uint8_t _samples[4]={0}; |
lilac0112_1 | 17:61edad76efd7 | 6 | uint8_t _output[4]={0}; |
lilac0112_1 | 17:61edad76efd7 | 7 | uint8_t _output_last[4]={0}; |
lilac0112_1 | 17:61edad76efd7 | 8 | uint8_t _rising_flag[4]={0}; |
lilac0112_1 | 17:61edad76efd7 | 9 | |
lilac0112_1 | 17:61edad76efd7 | 10 | void Sw_sample(void) { |
lilac0112_1 | 17:61edad76efd7 | 11 | int i; |
lilac0112_1 | 17:61edad76efd7 | 12 | for(i=0; i<4; i++){ |
lilac0112_1 | 17:61edad76efd7 | 13 | _output_last[i] = _output[i]; |
lilac0112_1 | 17:61edad76efd7 | 14 | _output[i] = Sw[i].read(); |
lilac0112_1 | 17:61edad76efd7 | 15 | if (!_output[i] && _output_last[i]) |
lilac0112_1 | 17:61edad76efd7 | 16 | { |
lilac0112_1 | 17:61edad76efd7 | 17 | _rising_flag[i]++; |
lilac0112_1 | 17:61edad76efd7 | 18 | } |
lilac0112_1 | 17:61edad76efd7 | 19 | } |
lilac0112_1 | 17:61edad76efd7 | 20 | //pc.printf("food%d\r\n",_output_last[0]); |
lilac0112_1 | 17:61edad76efd7 | 21 | } |
lilac0112_1 | 17:61edad76efd7 | 22 | // return number of rising edges |
lilac0112_1 | 17:61edad76efd7 | 23 | uint8_t Sw_count(uint8_t pin) { |
lilac0112_1 | 17:61edad76efd7 | 24 | //pin...from 0 to 3 |
lilac0112_1 | 17:61edad76efd7 | 25 | if(pin>=4) return 0; |
lilac0112_1 | 17:61edad76efd7 | 26 | uint8_t return_value = _rising_flag[pin]; |
lilac0112_1 | 17:61edad76efd7 | 27 | _rising_flag[pin] = 0; |
lilac0112_1 | 17:61edad76efd7 | 28 | return(return_value); |
lilac0112_1 | 17:61edad76efd7 | 29 | } |
lilac0112_1 | 17:61edad76efd7 | 30 | // return the debounced status |
lilac0112_1 | 16:6900f47fa0b5 | 31 | uint8_t ReadSw(void){ |
lilac0112_1 | 16:6900f47fa0b5 | 32 | /****** |
lilac0112_1 | 16:6900f47fa0b5 | 33 | *return : sw_state |
lilac0112_1 | 16:6900f47fa0b5 | 34 | *スイッチを押したときの動作はdef.hを参照 |
lilac0112_1 | 16:6900f47fa0b5 | 35 | *チャタリング防止ライブラリ採用式 |
lilac0112_1 | 16:6900f47fa0b5 | 36 | *同時押しは判別されない |
lilac0112_1 | 16:6900f47fa0b5 | 37 | *****/ |
lilac0112_1 | 16:6900f47fa0b5 | 38 | uint8_t i,result; |
lilac0112_1 | 16:6900f47fa0b5 | 39 | for(i=result=0; i<4; i++){ |
lilac0112_1 | 17:61edad76efd7 | 40 | if(Sw_count(i) > 0){ |
lilac0112_1 | 16:6900f47fa0b5 | 41 | result = i+1; |
lilac0112_1 | 16:6900f47fa0b5 | 42 | } |
lilac0112_1 | 16:6900f47fa0b5 | 43 | } |
lilac0112_1 | 16:6900f47fa0b5 | 44 | return result; |
lilac0112_1 | 16:6900f47fa0b5 | 45 | } |
lilac0112_1 | 17:61edad76efd7 | 46 | uint8_t CountSw(uint8_t pin){ |
lilac0112_1 | 16:6900f47fa0b5 | 47 | /****** |
lilac0112_1 | 16:6900f47fa0b5 | 48 | *return : sw_state |
lilac0112_1 | 16:6900f47fa0b5 | 49 | *スイッチを押したときの動作はdef.hを参照 |
lilac0112_1 | 16:6900f47fa0b5 | 50 | *チャタリング防止ライブラリ採用式 |
lilac0112_1 | 16:6900f47fa0b5 | 51 | *同時押しは判別されない |
lilac0112_1 | 16:6900f47fa0b5 | 52 | *****/ |
lilac0112_1 | 17:61edad76efd7 | 53 | return (Sw_count(pin) > 0); |
lilac0112_1 | 16:6900f47fa0b5 | 54 | } |