the program have one sensor acs712 and moduleds1302

Dependencies:   FATFileSystem mbed

Committer:
RUBENTEC
Date:
Thu Jun 08 20:17:34 2017 +0000
Revision:
0:b82abca089ac
ds1302-bluetooth-acs712

Who changed what in which revision?

UserRevisionLine numberNew 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 }