the program have one sensor acs712 and moduleds1302
Dependencies: FATFileSystem mbed
main.cpp@0:b82abca089ac, 2017-06-08 (annotated)
- Committer:
- RUBENTEC
- Date:
- Thu Jun 08 20:17:34 2017 +0000
- Revision:
- 0:b82abca089ac
ds1302-bluetooth-acs712
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
RUBENTEC | 0:b82abca089ac | 1 | #define SCLK p13 |
RUBENTEC | 0:b82abca089ac | 2 | #define IO p12 |
RUBENTEC | 0:b82abca089ac | 3 | #define CE p11 |
RUBENTEC | 0:b82abca089ac | 4 | |
RUBENTEC | 0:b82abca089ac | 5 | #define INITIAL_RUN |
RUBENTEC | 0:b82abca089ac | 6 | |
RUBENTEC | 0:b82abca089ac | 7 | #include "mbed.h" |
RUBENTEC | 0:b82abca089ac | 8 | #include <string.h> |
RUBENTEC | 0:b82abca089ac | 9 | #include "rtos.h" |
RUBENTEC | 0:b82abca089ac | 10 | #include "DS1302.h" |
RUBENTEC | 0:b82abca089ac | 11 | #include "ACS712.h"" |
RUBENTEC | 0:b82abca089ac | 12 | |
RUBENTEC | 0:b82abca089ac | 13 | |
RUBENTEC | 0:b82abca089ac | 14 | DigitalOut led(LED1); |
RUBENTEC | 0:b82abca089ac | 15 | DigitalIn button(p21); |
RUBENTEC | 0:b82abca089ac | 16 | DigitalIn mold1(p22); |
RUBENTEC | 0:b82abca089ac | 17 | DigitalIn mold2(p23); |
RUBENTEC | 0:b82abca089ac | 18 | DigitalIn seguridad(p24); |
RUBENTEC | 0:b82abca089ac | 19 | DigitalIn operacion(p25); |
RUBENTEC | 0:b82abca089ac | 20 | DigitalIn molder(p26); |
RUBENTEC | 0:b82abca089ac | 21 | DigitalIn molder1(p27); |
RUBENTEC | 0:b82abca089ac | 22 | int molde; |
RUBENTEC | 0:b82abca089ac | 23 | int molde2; |
RUBENTEC | 0:b82abca089ac | 24 | int cont; |
RUBENTEC | 0:b82abca089ac | 25 | int conta; |
RUBENTEC | 0:b82abca089ac | 26 | int piezas; |
RUBENTEC | 0:b82abca089ac | 27 | int pieza; |
RUBENTEC | 0:b82abca089ac | 28 | int contador=0; |
RUBENTEC | 0:b82abca089ac | 29 | int espera; |
RUBENTEC | 0:b82abca089ac | 30 | int moldeacti=0; |
RUBENTEC | 0:b82abca089ac | 31 | int moldeactir=0; |
RUBENTEC | 0:b82abca089ac | 32 | float bajos=0; |
RUBENTEC | 0:b82abca089ac | 33 | float altos=0; |
RUBENTEC | 0:b82abca089ac | 34 | int tred; |
RUBENTEC | 0:b82abca089ac | 35 | float descanso; |
RUBENTEC | 0:b82abca089ac | 36 | float retardo=0; |
RUBENTEC | 0:b82abca089ac | 37 | float gf; |
RUBENTEC | 0:b82abca089ac | 38 | float promedio; |
RUBENTEC | 0:b82abca089ac | 39 | float promaltos; |
RUBENTEC | 0:b82abca089ac | 40 | float prombajos; |
RUBENTEC | 0:b82abca089ac | 41 | float trabajo; |
RUBENTEC | 0:b82abca089ac | 42 | char LED[100]; |
RUBENTEC | 0:b82abca089ac | 43 | char Str[100]; |
RUBENTEC | 0:b82abca089ac | 44 | // ACS712 dev(p19); |
RUBENTEC | 0:b82abca089ac | 45 | Serial pc(USBTX, USBRX); |
RUBENTEC | 0:b82abca089ac | 46 | Serial blue(p9, p10); |
RUBENTEC | 0:b82abca089ac | 47 | DS1302 clk(SCLK, IO, CE); |
RUBENTEC | 0:b82abca089ac | 48 | Mutex stdio_mutex; |
RUBENTEC | 0:b82abca089ac | 49 | |
RUBENTEC | 0:b82abca089ac | 50 | |
RUBENTEC | 0:b82abca089ac | 51 | /*void mold_thread(void const *argument){ |
RUBENTEC | 0:b82abca089ac | 52 | while(1){ |
RUBENTEC | 0:b82abca089ac | 53 | if (mold1==1) |
RUBENTEC | 0:b82abca089ac | 54 | {blue.printf("MOLDE DE 2 PIEZAS\n\r");wait(0.5);} |
RUBENTEC | 0:b82abca089ac | 55 | } |
RUBENTEC | 0:b82abca089ac | 56 | } |
RUBENTEC | 0:b82abca089ac | 57 | |
RUBENTEC | 0:b82abca089ac | 58 | void moldt_thread(void const *argument){ |
RUBENTEC | 0:b82abca089ac | 59 | while(1){ |
RUBENTEC | 0:b82abca089ac | 60 | if (mold2==1) |
RUBENTEC | 0:b82abca089ac | 61 | {blue.printf("MOLDE DE 7 PIEZAS\n\r");wait(0.5);} |
RUBENTEC | 0:b82abca089ac | 62 | } |
RUBENTEC | 0:b82abca089ac | 63 | }*/ |
RUBENTEC | 0:b82abca089ac | 64 | |
RUBENTEC | 0:b82abca089ac | 65 | void segur_thread(void const *argument){ |
RUBENTEC | 0:b82abca089ac | 66 | while(1){ |
RUBENTEC | 0:b82abca089ac | 67 | time_t seconds = clk.time(NULL); |
RUBENTEC | 0:b82abca089ac | 68 | if (seguridad==1) |
RUBENTEC | 0:b82abca089ac | 69 | {blue.printf("SEGURIDAD VIOLADA ");wait(0.5);blue.printf("EN TIEMPO Y FECHA:%s\r", ctime(&seconds));} |
RUBENTEC | 0:b82abca089ac | 70 | } |
RUBENTEC | 0:b82abca089ac | 71 | } |
RUBENTEC | 0:b82abca089ac | 72 | |
RUBENTEC | 0:b82abca089ac | 73 | /*void pro_thread(void const *argument){ |
RUBENTEC | 0:b82abca089ac | 74 | while(1){ |
RUBENTEC | 0:b82abca089ac | 75 | if (operacion==1) |
RUBENTEC | 0:b82abca089ac | 76 | //{blue.printf("\rPROMEDIO DESCANSO=%f",promedio); blue.printf(" MINUTOS\n");wait(0.5); |
RUBENTEC | 0:b82abca089ac | 77 | {blue.printf("\rPROMEDIO DE TIEMPOS ALTOS= %f",promaltos);blue.printf(" SEGUNDOS\n");wait(0.5); |
RUBENTEC | 0:b82abca089ac | 78 | blue.printf("\rPROMEDIO DE TIEMPOS BAJOS= %f",prombajos);blue.printf(" SEGUNDOS\n\r");wait(0.5);} |
RUBENTEC | 0:b82abca089ac | 79 | } |
RUBENTEC | 0:b82abca089ac | 80 | } */ |
RUBENTEC | 0:b82abca089ac | 81 | |
RUBENTEC | 0:b82abca089ac | 82 | void modacti_thread(void const *argument){ |
RUBENTEC | 0:b82abca089ac | 83 | while(1){ |
RUBENTEC | 0:b82abca089ac | 84 | if (molder==1) |
RUBENTEC | 0:b82abca089ac | 85 | {molde=1;pc.printf("CONT MOLD1=%d\n",moldeacti);}else{molde=0;} |
RUBENTEC | 0:b82abca089ac | 86 | |
RUBENTEC | 0:b82abca089ac | 87 | if (molde==1) |
RUBENTEC | 0:b82abca089ac | 88 | {moldeacti++;wait(25);} |
RUBENTEC | 0:b82abca089ac | 89 | } |
RUBENTEC | 0:b82abca089ac | 90 | } |
RUBENTEC | 0:b82abca089ac | 91 | void modacti1_thread(void const *argument){ |
RUBENTEC | 0:b82abca089ac | 92 | while(1){ |
RUBENTEC | 0:b82abca089ac | 93 | if (molder1==1) |
RUBENTEC | 0:b82abca089ac | 94 | {molde2=1;pc.printf("CONT MOLD2=%d\n",moldeactir);}else{molde2=0;} |
RUBENTEC | 0:b82abca089ac | 95 | |
RUBENTEC | 0:b82abca089ac | 96 | if (molde2==1) |
RUBENTEC | 0:b82abca089ac | 97 | {moldeactir++;wait(25);} |
RUBENTEC | 0:b82abca089ac | 98 | } |
RUBENTEC | 0:b82abca089ac | 99 | } |
RUBENTEC | 0:b82abca089ac | 100 | |
RUBENTEC | 0:b82abca089ac | 101 | void prome_thread(void const *argument){ |
RUBENTEC | 0:b82abca089ac | 102 | while(1){ |
RUBENTEC | 0:b82abca089ac | 103 | if (tred==1) |
RUBENTEC | 0:b82abca089ac | 104 | {altos++; wait(1); pc.printf("altos= %f\n",altos);} |
RUBENTEC | 0:b82abca089ac | 105 | |
RUBENTEC | 0:b82abca089ac | 106 | if (tred==0 && contador>=1&& espera<=24) |
RUBENTEC | 0:b82abca089ac | 107 | {bajos++;wait(1); pc.printf("bajos= %f\n",bajos);} |
RUBENTEC | 0:b82abca089ac | 108 | |
RUBENTEC | 0:b82abca089ac | 109 | } |
RUBENTEC | 0:b82abca089ac | 110 | } |
RUBENTEC | 0:b82abca089ac | 111 | |
RUBENTEC | 0:b82abca089ac | 112 | void trans_thread(void const *argument){ |
RUBENTEC | 0:b82abca089ac | 113 | while(1) |
RUBENTEC | 0:b82abca089ac | 114 | { |
RUBENTEC | 0:b82abca089ac | 115 | if (blue.readable()) |
RUBENTEC | 0:b82abca089ac | 116 | { |
RUBENTEC | 0:b82abca089ac | 117 | blue.scanf("%s",&Str); |
RUBENTEC | 0:b82abca089ac | 118 | pc.printf("%s\n\r",Str); |
RUBENTEC | 0:b82abca089ac | 119 | strcpy(LED, strtok(Str , ",")); |
RUBENTEC | 0:b82abca089ac | 120 | |
RUBENTEC | 0:b82abca089ac | 121 | |
RUBENTEC | 0:b82abca089ac | 122 | if(strcmp(LED,"ACEPTAR")==0){led=1; |
RUBENTEC | 0:b82abca089ac | 123 | blue.printf("\rPROMEDIO DE TIEMPOS ALTOS= %f",promaltos);blue.printf(" SEGUNDOS\n");wait(0.5); |
RUBENTEC | 0:b82abca089ac | 124 | blue.printf("\rPROMEDIO DE TIEMPOS BAJOS= %f",prombajos);blue.printf(" SEGUNDOS\n\r");wait(0.5); |
RUBENTEC | 0:b82abca089ac | 125 | blue.printf("\rEL MOTOR SE ACTIVO= %d\n,",contador);blue.printf(" VECES\r\n"); |
RUBENTEC | 0:b82abca089ac | 126 | blue.printf("\rEL MOLDE DE 2 PZAS SE ACTIVO= %d\n,",moldeacti);blue.printf(" VECES\r\n"); |
RUBENTEC | 0:b82abca089ac | 127 | blue.printf("\rEL MOLDE DE 7 PZAS SE ACTIVO= %d\n,",moldeactir);blue.printf(" VECES\r\n");} |
RUBENTEC | 0:b82abca089ac | 128 | } |
RUBENTEC | 0:b82abca089ac | 129 | } |
RUBENTEC | 0:b82abca089ac | 130 | |
RUBENTEC | 0:b82abca089ac | 131 | } |
RUBENTEC | 0:b82abca089ac | 132 | |
RUBENTEC | 0:b82abca089ac | 133 | |
RUBENTEC | 0:b82abca089ac | 134 | |
RUBENTEC | 0:b82abca089ac | 135 | |
RUBENTEC | 0:b82abca089ac | 136 | int main() { |
RUBENTEC | 0:b82abca089ac | 137 | // Thread Hthread1 (mold_thread); |
RUBENTEC | 0:b82abca089ac | 138 | //Thread Hthread2 (moldt_thread); |
RUBENTEC | 0:b82abca089ac | 139 | Thread Hthread1 (segur_thread); |
RUBENTEC | 0:b82abca089ac | 140 | //Thread Hthread4 (pro_thread); |
RUBENTEC | 0:b82abca089ac | 141 | Thread Hthread2 (modacti_thread); |
RUBENTEC | 0:b82abca089ac | 142 | Thread Hthread3 (modacti1_thread); |
RUBENTEC | 0:b82abca089ac | 143 | Thread Hthread4 (prome_thread); |
RUBENTEC | 0:b82abca089ac | 144 | Thread Hthread5 (trans_thread); |
RUBENTEC | 0:b82abca089ac | 145 | blue.baud(9600); |
RUBENTEC | 0:b82abca089ac | 146 | |
RUBENTEC | 0:b82abca089ac | 147 | #ifdef INITIAL_RUN |
RUBENTEC | 0:b82abca089ac | 148 | clk.set_time(1496802000); |
RUBENTEC | 0:b82abca089ac | 149 | #endif |
RUBENTEC | 0:b82abca089ac | 150 | |
RUBENTEC | 0:b82abca089ac | 151 | char storedByte = clk.recallByte(0); |
RUBENTEC | 0:b82abca089ac | 152 | pc.printf("\r\nStored byte was %d, now increasing by one\r\n", storedByte); |
RUBENTEC | 0:b82abca089ac | 153 | clk.storeByte(0, storedByte + 1); |
RUBENTEC | 0:b82abca089ac | 154 | ACS712 dev(p18); |
RUBENTEC | 0:b82abca089ac | 155 | while (1) |
RUBENTEC | 0:b82abca089ac | 156 | { |
RUBENTEC | 0:b82abca089ac | 157 | time_t seconds = clk.time(NULL); |
RUBENTEC | 0:b82abca089ac | 158 | //pc.printf("Time as a basic string = %s\r", ctime(&seconds)); |
RUBENTEC | 0:b82abca089ac | 159 | pc.printf("Sensor Value: %2.2f A\n\r", float(dev)); |
RUBENTEC | 0:b82abca089ac | 160 | |
RUBENTEC | 0:b82abca089ac | 161 | |
RUBENTEC | 0:b82abca089ac | 162 | if (cont==0 && dev >= 0.02) |
RUBENTEC | 0:b82abca089ac | 163 | {cont=1; contador++;espera=0;tred=1;} |
RUBENTEC | 0:b82abca089ac | 164 | |
RUBENTEC | 0:b82abca089ac | 165 | if (cont==1 && dev <= -0.05) |
RUBENTEC | 0:b82abca089ac | 166 | { cont=0;tred=0;} |
RUBENTEC | 0:b82abca089ac | 167 | |
RUBENTEC | 0:b82abca089ac | 168 | if (dev <= -0.05 && contador>=1) |
RUBENTEC | 0:b82abca089ac | 169 | {espera++; pc.printf("espera=%d\n",espera);} |
RUBENTEC | 0:b82abca089ac | 170 | |
RUBENTEC | 0:b82abca089ac | 171 | //if (espera>=40) |
RUBENTEC | 0:b82abca089ac | 172 | //{descanso++;pc.printf("descanso=%f\n",descanso);pc.printf("retardo=%f\n",retardo);} |
RUBENTEC | 0:b82abca089ac | 173 | |
RUBENTEC | 0:b82abca089ac | 174 | if( gf==0 && espera>=40) |
RUBENTEC | 0:b82abca089ac | 175 | {gf=1;retardo++;} |
RUBENTEC | 0:b82abca089ac | 176 | |
RUBENTEC | 0:b82abca089ac | 177 | if (gf==1 && espera<=20) |
RUBENTEC | 0:b82abca089ac | 178 | {gf=0;} |
RUBENTEC | 0:b82abca089ac | 179 | |
RUBENTEC | 0:b82abca089ac | 180 | // promedio=(descanso/60)/retardo; |
RUBENTEC | 0:b82abca089ac | 181 | |
RUBENTEC | 0:b82abca089ac | 182 | promaltos=(altos)/contador; |
RUBENTEC | 0:b82abca089ac | 183 | |
RUBENTEC | 0:b82abca089ac | 184 | prombajos=(bajos)/(contador+1); |
RUBENTEC | 0:b82abca089ac | 185 | |
RUBENTEC | 0:b82abca089ac | 186 | pc.printf("conta=%d\n\r",contador); |
RUBENTEC | 0:b82abca089ac | 187 | wait(1); |
RUBENTEC | 0:b82abca089ac | 188 | |
RUBENTEC | 0:b82abca089ac | 189 | if (espera==20) |
RUBENTEC | 0:b82abca089ac | 190 | {blue.printf("EL PROCESO SE DETUVO EN TIEMPO Y FECHA:%s\r", ctime(&seconds));} |
RUBENTEC | 0:b82abca089ac | 191 | |
RUBENTEC | 0:b82abca089ac | 192 | if (espera >= 20 && dev >0.02) |
RUBENTEC | 0:b82abca089ac | 193 | {blue.printf("El PROCESO ARRANCO EN TIEMPO Y FECHA:%s\r", ctime(&seconds));} |
RUBENTEC | 0:b82abca089ac | 194 | |
RUBENTEC | 0:b82abca089ac | 195 | |
RUBENTEC | 0:b82abca089ac | 196 | //if (contador==1 && dev < 0) |
RUBENTEC | 0:b82abca089ac | 197 | //{blue.printf("INICIO DE PROCESO\n\r");} |
RUBENTEC | 0:b82abca089ac | 198 | |
RUBENTEC | 0:b82abca089ac | 199 | } |
RUBENTEC | 0:b82abca089ac | 200 | } |