Felícito Manzano
/
DTK_Guaria2_ABInBev
Proyecto ABInBev para la tarjeta Guaria 1/2.
Embed:
(wiki syntax)
Show/hide line numbers
inputDebounce.cpp
Go to the documentation of this file.
00001 /** 00002 * @file inputDebounce.cpp 00003 * @author Felícito Manzano (felicito.manzano@detektor.com.sv) 00004 * @brief 00005 * @version 0.1 00006 * @date 2020-10-01 00007 * 00008 * @copyright Copyright (c) 2020 00009 * 00010 */ 00011 00012 #include "mbed.h" 00013 00014 00015 /** 00016 * @brief 00017 * 00018 */ 00019 const int SAMPLES_INPUT = 4; 00020 const int SAMPLES_RAIN = 10; 00021 00022 00023 00024 /** 00025 * @brief 00026 * 00027 * @param Ign 00028 * @param arrayIgn 00029 * @param actIgn 00030 * @param preIgn 00031 * @param cont 00032 * @return int 00033 */ 00034 int exeIgnition (DigitalIn *Ign, bool arrayIgn[], bool *actIgn, bool *preIgn, int *cont) { 00035 bool are_equal = false; 00036 int answer = 0; 00037 int i; 00038 00039 arrayIgn[*cont] = Ign -> read(); 00040 *cont = *cont + 1; 00041 00042 if (*cont == SAMPLES_INPUT) { 00043 *cont = 0; 00044 00045 //are_equal = (((arrayIgn[0] == arrayIgn[1]) == arrayIgn[2]) == arrayIgn[3]); 00046 for (i = 0; i < SAMPLES_INPUT; i++) { 00047 if (arrayIgn[i] != arrayIgn[0]) { 00048 are_equal = false; 00049 break; 00050 } else { 00051 are_equal = true; 00052 } 00053 } 00054 if(are_equal) { 00055 *actIgn = arrayIgn[0]; 00056 if (*actIgn != *preIgn) { 00057 *preIgn = *actIgn; 00058 if (*actIgn) { 00059 answer = 1; 00060 } else { 00061 answer = -1; 00062 } 00063 } else { 00064 answer = 0; 00065 } 00066 } 00067 } 00068 return(answer); 00069 } 00070 00071 00072 00073 /** 00074 * @brief 00075 * 00076 * @param my_Input 00077 * @param my_arrayInput 00078 * @param my_Input_read 00079 * @param my_Input_previous 00080 * @param cont 00081 * @return int 00082 */ 00083 int exeDigInput (DigitalIn *my_Input, bool my_arrayInput[], bool *my_Input_read, bool *my_Input_previous, int *cont) { 00084 bool are_equal = false; 00085 int answer = 0; 00086 int i; 00087 00088 my_arrayInput[*cont] = my_Input -> read(); 00089 *cont = *cont + 1; 00090 00091 if (*cont == SAMPLES_INPUT) { 00092 *cont = 0; 00093 //are_equal = (((my_arrayInput[0] == my_arrayInput[1]) == my_arrayInput[2]) == my_arrayInput[3]); 00094 for (i = 0; i < SAMPLES_INPUT; i++) { 00095 if (my_arrayInput[i] != my_arrayInput[0]) { 00096 are_equal = false; 00097 break; 00098 } else { 00099 are_equal = true; 00100 } 00101 } 00102 00103 00104 if (are_equal) { 00105 *my_Input_read = my_arrayInput[0]; 00106 if (*my_Input_read != *my_Input_previous) { 00107 *my_Input_previous = *my_Input_read; 00108 if (*my_Input_read) { 00109 answer = 1; 00110 } else { 00111 answer = -1; 00112 } 00113 } 00114 } else { 00115 answer = 0; 00116 } 00117 } 00118 return(answer); 00119 } 00120 00121 00122 /** 00123 * @brief 00124 * 00125 * @param my_Input 00126 * @param my_arrayInput 00127 * @param my_Input_read 00128 * @param my_Input_previous 00129 * @param cont 00130 * @return int 00131 */ 00132 int exeDigRain (DigitalIn *my_Input, bool my_arrayInput[], bool *my_Input_read, bool *my_Input_previous, int *cont) { 00133 bool are_equal = false; 00134 int answer = 0; 00135 int i; 00136 00137 my_arrayInput[*cont] = my_Input -> read(); 00138 *cont = *cont + 1; 00139 00140 if (*cont == SAMPLES_RAIN) { 00141 *cont = 0; 00142 //are_equal = (((my_arrayInput[0] == my_arrayInput[1]) == my_arrayInput[2]) == my_arrayInput[3]); 00143 //are_equal = (((are_equal == my_arrayInput[4]) == my_arrayInput[5]) == my_arrayInput[6]); 00144 //are_equal = (((are_equal == my_arrayInput[7]) == my_arrayInput[8]) == my_arrayInput[9]); 00145 for (i = 0; i < SAMPLES_RAIN; i++) { 00146 if (my_arrayInput[i] != my_arrayInput[0]) { 00147 are_equal = false; 00148 break; 00149 } else { 00150 are_equal = true; 00151 } 00152 } 00153 00154 00155 if (are_equal) { 00156 *my_Input_read = my_arrayInput[0]; 00157 if (*my_Input_read != *my_Input_previous) { 00158 *my_Input_previous = *my_Input_read; 00159 if (*my_Input_read) { 00160 answer = 1; 00161 } else { 00162 answer = -1; 00163 } 00164 } 00165 } else { 00166 answer = 0; 00167 } 00168 } 00169 return(answer); 00170 } 00171
Generated on Thu Jul 28 2022 19:27:02 by 1.7.2