the program have one sensor acs712 and moduleds1302
Dependencies: FATFileSystem mbed
Diff: main.cpp
- Revision:
- 0:b82abca089ac
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Thu Jun 08 20:17:34 2017 +0000 @@ -0,0 +1,200 @@ +#define SCLK p13 +#define IO p12 +#define CE p11 + +#define INITIAL_RUN + +#include "mbed.h" +#include <string.h> +#include "rtos.h" +#include "DS1302.h" +#include "ACS712.h"" + + +DigitalOut led(LED1); +DigitalIn button(p21); +DigitalIn mold1(p22); +DigitalIn mold2(p23); +DigitalIn seguridad(p24); +DigitalIn operacion(p25); +DigitalIn molder(p26); +DigitalIn molder1(p27); +int molde; +int molde2; +int cont; +int conta; +int piezas; +int pieza; +int contador=0; +int espera; +int moldeacti=0; +int moldeactir=0; +float bajos=0; +float altos=0; +int tred; +float descanso; +float retardo=0; +float gf; +float promedio; +float promaltos; +float prombajos; +float trabajo; +char LED[100]; +char Str[100]; + // ACS712 dev(p19); +Serial pc(USBTX, USBRX); +Serial blue(p9, p10); +DS1302 clk(SCLK, IO, CE); +Mutex stdio_mutex; + + + /*void mold_thread(void const *argument){ + while(1){ + if (mold1==1) + {blue.printf("MOLDE DE 2 PIEZAS\n\r");wait(0.5);} + } + } + +void moldt_thread(void const *argument){ + while(1){ + if (mold2==1) + {blue.printf("MOLDE DE 7 PIEZAS\n\r");wait(0.5);} + } + }*/ + +void segur_thread(void const *argument){ + while(1){ + time_t seconds = clk.time(NULL); + if (seguridad==1) + {blue.printf("SEGURIDAD VIOLADA ");wait(0.5);blue.printf("EN TIEMPO Y FECHA:%s\r", ctime(&seconds));} + } + } + +/*void pro_thread(void const *argument){ + while(1){ + if (operacion==1) + //{blue.printf("\rPROMEDIO DESCANSO=%f",promedio); blue.printf(" MINUTOS\n");wait(0.5); + {blue.printf("\rPROMEDIO DE TIEMPOS ALTOS= %f",promaltos);blue.printf(" SEGUNDOS\n");wait(0.5); + blue.printf("\rPROMEDIO DE TIEMPOS BAJOS= %f",prombajos);blue.printf(" SEGUNDOS\n\r");wait(0.5);} + } + } */ + +void modacti_thread(void const *argument){ + while(1){ +if (molder==1) + {molde=1;pc.printf("CONT MOLD1=%d\n",moldeacti);}else{molde=0;} + + if (molde==1) + {moldeacti++;wait(25);} + } +} +void modacti1_thread(void const *argument){ + while(1){ +if (molder1==1) + {molde2=1;pc.printf("CONT MOLD2=%d\n",moldeactir);}else{molde2=0;} + + if (molde2==1) + {moldeactir++;wait(25);} + } +} + +void prome_thread(void const *argument){ + while(1){ + if (tred==1) + {altos++; wait(1); pc.printf("altos= %f\n",altos);} + + if (tred==0 && contador>=1&& espera<=24) + {bajos++;wait(1); pc.printf("bajos= %f\n",bajos);} + + } +} + +void trans_thread(void const *argument){ + while(1) + { + if (blue.readable()) + { + blue.scanf("%s",&Str); + pc.printf("%s\n\r",Str); + strcpy(LED, strtok(Str , ",")); + + + if(strcmp(LED,"ACEPTAR")==0){led=1; + blue.printf("\rPROMEDIO DE TIEMPOS ALTOS= %f",promaltos);blue.printf(" SEGUNDOS\n");wait(0.5); + blue.printf("\rPROMEDIO DE TIEMPOS BAJOS= %f",prombajos);blue.printf(" SEGUNDOS\n\r");wait(0.5); + blue.printf("\rEL MOTOR SE ACTIVO= %d\n,",contador);blue.printf(" VECES\r\n"); + blue.printf("\rEL MOLDE DE 2 PZAS SE ACTIVO= %d\n,",moldeacti);blue.printf(" VECES\r\n"); + blue.printf("\rEL MOLDE DE 7 PZAS SE ACTIVO= %d\n,",moldeactir);blue.printf(" VECES\r\n");} + } + } + + } + + + + +int main() { + // Thread Hthread1 (mold_thread); + //Thread Hthread2 (moldt_thread); + Thread Hthread1 (segur_thread); + //Thread Hthread4 (pro_thread); + Thread Hthread2 (modacti_thread); + Thread Hthread3 (modacti1_thread); + Thread Hthread4 (prome_thread); + Thread Hthread5 (trans_thread); + blue.baud(9600); + + #ifdef INITIAL_RUN + clk.set_time(1496802000); + #endif + + char storedByte = clk.recallByte(0); + pc.printf("\r\nStored byte was %d, now increasing by one\r\n", storedByte); + clk.storeByte(0, storedByte + 1); + ACS712 dev(p18); + while (1) + { + time_t seconds = clk.time(NULL); + //pc.printf("Time as a basic string = %s\r", ctime(&seconds)); + pc.printf("Sensor Value: %2.2f A\n\r", float(dev)); + + + if (cont==0 && dev >= 0.02) + {cont=1; contador++;espera=0;tred=1;} + + if (cont==1 && dev <= -0.05) + { cont=0;tred=0;} + + if (dev <= -0.05 && contador>=1) + {espera++; pc.printf("espera=%d\n",espera);} + + //if (espera>=40) + //{descanso++;pc.printf("descanso=%f\n",descanso);pc.printf("retardo=%f\n",retardo);} + + if( gf==0 && espera>=40) + {gf=1;retardo++;} + + if (gf==1 && espera<=20) + {gf=0;} + + // promedio=(descanso/60)/retardo; + + promaltos=(altos)/contador; + + prombajos=(bajos)/(contador+1); + + pc.printf("conta=%d\n\r",contador); + wait(1); + + if (espera==20) + {blue.printf("EL PROCESO SE DETUVO EN TIEMPO Y FECHA:%s\r", ctime(&seconds));} + + if (espera >= 20 && dev >0.02) + {blue.printf("El PROCESO ARRANCO EN TIEMPO Y FECHA:%s\r", ctime(&seconds));} + + + //if (contador==1 && dev < 0) + //{blue.printf("INICIO DE PROCESO\n\r");} + + } +} \ No newline at end of file