せとうちオープン用のメインプログラム

Dependencies:   mbed AQM1602 HMC6352 PID

Committer:
lilac0112_1
Date:
Sun May 01 06:30:37 2016 +0000
Revision:
0:b910276f9da2
from 2v10

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lilac0112_1 0:b910276f9da2 1 #include "mbed.h"
lilac0112_1 0:b910276f9da2 2 #include "extern.h"
lilac0112_1 0:b910276f9da2 3
lilac0112_1 0:b910276f9da2 4
lilac0112_1 0:b910276f9da2 5 uint8_t _samples[4]={0};
lilac0112_1 0:b910276f9da2 6 uint8_t _output[4]={0};
lilac0112_1 0:b910276f9da2 7 uint8_t _output_last[4]={0};
lilac0112_1 0:b910276f9da2 8 uint8_t _rising_flag[4]={0};
lilac0112_1 0:b910276f9da2 9
lilac0112_1 0:b910276f9da2 10 void Sw_sample(void) {
lilac0112_1 0:b910276f9da2 11 int i;
lilac0112_1 0:b910276f9da2 12 for(i=0; i<4; i++){
lilac0112_1 0:b910276f9da2 13 _output_last[i] = _output[i];
lilac0112_1 0:b910276f9da2 14 _output[i] = Sw[i].read();
lilac0112_1 0:b910276f9da2 15 if (!_output[i] && _output_last[i])
lilac0112_1 0:b910276f9da2 16 {
lilac0112_1 0:b910276f9da2 17 _rising_flag[i]++;
lilac0112_1 0:b910276f9da2 18 }
lilac0112_1 0:b910276f9da2 19 }
lilac0112_1 0:b910276f9da2 20 //pc.printf("food%d\r\n",_output_last[0]);
lilac0112_1 0:b910276f9da2 21 }
lilac0112_1 0:b910276f9da2 22 // return number of rising edges
lilac0112_1 0:b910276f9da2 23 uint8_t Sw_count(uint8_t pin) {
lilac0112_1 0:b910276f9da2 24 //pin...from 0 to 3
lilac0112_1 0:b910276f9da2 25 if(pin>=4) return 0;
lilac0112_1 0:b910276f9da2 26 uint8_t return_value = _rising_flag[pin];
lilac0112_1 0:b910276f9da2 27 _rising_flag[pin] = 0;
lilac0112_1 0:b910276f9da2 28 return(return_value);
lilac0112_1 0:b910276f9da2 29 }
lilac0112_1 0:b910276f9da2 30 // return the debounced status
lilac0112_1 0:b910276f9da2 31 uint8_t ReadSw(void){
lilac0112_1 0:b910276f9da2 32 /******
lilac0112_1 0:b910276f9da2 33 *return : sw_state
lilac0112_1 0:b910276f9da2 34 *スイッチを押したときの動作はdef.hを参照
lilac0112_1 0:b910276f9da2 35 *チャタリング防止ライブラリ採用式
lilac0112_1 0:b910276f9da2 36 *同時押しは判別されない
lilac0112_1 0:b910276f9da2 37 *****/
lilac0112_1 0:b910276f9da2 38 uint8_t i,result;
lilac0112_1 0:b910276f9da2 39 for(i=result=0; i<4; i++){
lilac0112_1 0:b910276f9da2 40 if(Sw_count(i) > 0){
lilac0112_1 0:b910276f9da2 41 result = i+1;
lilac0112_1 0:b910276f9da2 42 }
lilac0112_1 0:b910276f9da2 43 }
lilac0112_1 0:b910276f9da2 44 return result;
lilac0112_1 0:b910276f9da2 45 }
lilac0112_1 0:b910276f9da2 46 uint8_t CountSw(uint8_t pin){
lilac0112_1 0:b910276f9da2 47 /******
lilac0112_1 0:b910276f9da2 48 *return : sw_state
lilac0112_1 0:b910276f9da2 49 *スイッチを押したときの動作はdef.hを参照
lilac0112_1 0:b910276f9da2 50 *チャタリング防止ライブラリ採用式
lilac0112_1 0:b910276f9da2 51 *同時押しは判別されない
lilac0112_1 0:b910276f9da2 52 *****/
lilac0112_1 0:b910276f9da2 53 return (Sw_count(pin) > 0);
lilac0112_1 0:b910276f9da2 54 }