Main Program

Dependencies:   mbed AQM1602 HMC6352 PID

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?

UserRevisionLine numberNew 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 }