Communication Class and Controller Class (ControllerForMbed Class)

Dependencies:   SoftPWM

Committer:
kikuchi8810
Date:
Thu Dec 23 08:56:26 2021 +0000
Revision:
2:fd0c21600586
modified

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kikuchi8810 2:fd0c21600586 1 #include "Button.h"
kikuchi8810 2:fd0c21600586 2
kikuchi8810 2:fd0c21600586 3 // コンストラクタ
kikuchi8810 2:fd0c21600586 4 Button::Button(PinName pin):input(pin){
kikuchi8810 2:fd0c21600586 5 pre_button_state = get_button_state();
kikuchi8810 2:fd0c21600586 6 initial_flag = true;
kikuchi8810 2:fd0c21600586 7 }
kikuchi8810 2:fd0c21600586 8
kikuchi8810 2:fd0c21600586 9 bool Button::get_button_state(){
kikuchi8810 2:fd0c21600586 10 return input.read();
kikuchi8810 2:fd0c21600586 11 }
kikuchi8810 2:fd0c21600586 12
kikuchi8810 2:fd0c21600586 13 bool Button::button_rise(){
kikuchi8810 2:fd0c21600586 14 bool ret = 0;
kikuchi8810 2:fd0c21600586 15 bool button_state = get_button_state();
kikuchi8810 2:fd0c21600586 16 if(initial_flag){
kikuchi8810 2:fd0c21600586 17 if(button_state == 0){
kikuchi8810 2:fd0c21600586 18 pre_button_state = button_state;
kikuchi8810 2:fd0c21600586 19 initial_flag = false;
kikuchi8810 2:fd0c21600586 20 }
kikuchi8810 2:fd0c21600586 21 }else{
kikuchi8810 2:fd0c21600586 22 if(button_state && !pre_button_state){
kikuchi8810 2:fd0c21600586 23 initial_flag = true;
kikuchi8810 2:fd0c21600586 24 ret = 1;
kikuchi8810 2:fd0c21600586 25 }
kikuchi8810 2:fd0c21600586 26 pre_button_state = button_state;
kikuchi8810 2:fd0c21600586 27 }
kikuchi8810 2:fd0c21600586 28 return ret;
kikuchi8810 2:fd0c21600586 29 }
kikuchi8810 2:fd0c21600586 30
kikuchi8810 2:fd0c21600586 31 bool Button::button_fall(){
kikuchi8810 2:fd0c21600586 32 bool ret = 0;
kikuchi8810 2:fd0c21600586 33 bool button_state = get_button_state();
kikuchi8810 2:fd0c21600586 34 if(initial_flag){
kikuchi8810 2:fd0c21600586 35 if(button_state == 1){
kikuchi8810 2:fd0c21600586 36 pre_button_state = button_state;
kikuchi8810 2:fd0c21600586 37 initial_flag = false;
kikuchi8810 2:fd0c21600586 38 }
kikuchi8810 2:fd0c21600586 39 }else{
kikuchi8810 2:fd0c21600586 40 if(!button_state && pre_button_state){
kikuchi8810 2:fd0c21600586 41 initial_flag = true;
kikuchi8810 2:fd0c21600586 42 ret = 1;
kikuchi8810 2:fd0c21600586 43 }
kikuchi8810 2:fd0c21600586 44 pre_button_state = button_state;
kikuchi8810 2:fd0c21600586 45 }
kikuchi8810 2:fd0c21600586 46 return ret;
kikuchi8810 2:fd0c21600586 47 }
kikuchi8810 2:fd0c21600586 48
kikuchi8810 2:fd0c21600586 49 bool Button::button_changed(){
kikuchi8810 2:fd0c21600586 50 bool ret = 0;
kikuchi8810 2:fd0c21600586 51 bool button_state = get_button_state();
kikuchi8810 2:fd0c21600586 52 if(initial_flag){
kikuchi8810 2:fd0c21600586 53 pre_button_state = button_state;
kikuchi8810 2:fd0c21600586 54 initial_flag = false;
kikuchi8810 2:fd0c21600586 55 }else{
kikuchi8810 2:fd0c21600586 56 if(button_state != pre_button_state){
kikuchi8810 2:fd0c21600586 57 initial_flag = true;
kikuchi8810 2:fd0c21600586 58 ret = 1;
kikuchi8810 2:fd0c21600586 59 }
kikuchi8810 2:fd0c21600586 60 pre_button_state = button_state;
kikuchi8810 2:fd0c21600586 61 }
kikuchi8810 2:fd0c21600586 62 return ret;
kikuchi8810 2:fd0c21600586 63 }