EJERCICIO 1 - TERMINADO - SOTELO - D´ANDREA

Dependencies:   mbed tsi_sensor DHT11

Files at this revision

API Documentation at this revision

Comitter:
feede_dandrea
Date:
Tue Jun 18 13:49:41 2019 +0000
Commit message:
EJERCICIO 1 - TERMINADO;

Changed in this revision

DHT11.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
tsi_sensor.lib Show annotated file Show diff for this revision Revisions of this file
diff -r 000000000000 -r 39a6762ddcc1 DHT11.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/DHT11.lib	Tue Jun 18 13:49:41 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/fossum_13/code/DHT11/#5da6f6de3e42
diff -r 000000000000 -r 39a6762ddcc1 main.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Tue Jun 18 13:49:41 2019 +0000
@@ -0,0 +1,187 @@
+//TRABAJO PRACTICO 1 - COOLER
+
+#include "mbed.h"
+#include <stdlib.h>     /* srand, rand */
+#include <time.h>       /* time */
+#include "tsi_sensor.h"
+#include "Dht11.h" /* LIBRERIA SENSOR */
+
+/* This defines will be replaced by PinNames soon */
+#if defined (TARGET_KL25Z) || defined (TARGET_KL46Z)
+#define ELEC0 9
+#define ELEC1 10
+#elif defined (TARGET_KL05Z)
+#define ELEC0 9
+#define ELEC1 8
+#else
+#error TARGET NOT DEFINED
+#endif
+
+
+
+TSIAnalogSlider tsi(ELEC0, ELEC1, 40);
+
+
+DigitalOut rojo(LED_RED);
+DigitalOut verde(LED_GREEN);
+DigitalOut azul(LED_BLUE);
+
+DigitalIn vueltas(PTD2);
+    
+InterruptIn vuel(PTD4);
+    
+Dht11 sensor(PTD7); 
+
+
+AnalogIn potenciometro(PTB0);
+
+PwmOut cooler(PTB3);  //Menos significativo unidad
+
+Ticker tiempo;
+
+Ticker escritura;
+enum {INICIO,GENERADOR,DETECCION,CHEQUEO};
+enum {COMIENZO,ABIERTO,CERRADO};
+enum {ROJO,VERDE,AZUL,ON,OFF};
+
+int estado=0, modo=0,comienza_juego,color=0,segundos=0,giros=0,RPM=0,entrada=0,escritura_hab=OFF;
+
+float p=0,incr=0.0005;
+
+DigitalOut myled(LED1);
+
+void sumav(){
+    giros++; //por cada vuelta del cooler incrementa un giro
+    }
+
+
+void segundo_reset() //cada un segundo toma el valor de los giros, predice su valor en RPM, los guarda en otra variable y resetea los giros
+{
+    segundos++;
+    if(segundos==1) {
+        RPM=giros*60;
+        giros=0;
+        segundos=0;
+    }
+}
+void escritura_cooler() //cada cierto tiempo escribe al a salida del PWM
+{
+    cooler.period(0.5f);
+    cooler.write(p);
+}
+void cooler_automatizado()//funcion principal que controla los modos
+{
+    switch(estado) {
+        case COMIENZO:
+            if(modo==CERRADO) {//se activa el modo cerrado
+                printf("MODO CERRADO ACTIVADO\n\r");
+                escritura_hab=OFF;
+                estado=CERRADO;
+            }
+            if(modo==ABIERTO) {//se activa el modo abierto
+                printf("MODO ABIERTO ACTIVADO\n\r");
+                escritura_hab=OFF;
+                estado=ABIERTO;
+            }
+            break;
+        case CERRADO:
+            sensor.read(); //indica que se va a leer el DHT11
+            if(sensor.getCelsius()==20){ //si la temperatura es 20 se mantiene en 3000 RPM
+                if(RPM>3000){
+                p=p-incr;
+                }
+                else{
+                p=p+incr;
+                }
+            }
+            if((sensor.getCelsius()>20)&&(sensor.getCelsius()<70)){//en el rango de 20 y 70 grados hace una regla de tres y saca el RPM equivalente y trata de llevar su velocidad al RPM indicado
+                int cel = sensor.getCelsius();//lee el sensor en celsius
+                int resultado = (cel * 10000) / 70;
+                printf("TEMP: %d resultado: %d RPM: %d\r\n",cel,resultado,RPM);//
+                if(RPM>resultado){
+                p=p-(float)0.0005;//disminuye la velocidad
+                }
+                else{
+                p=p+(float)0.0005;//aumenta la velocidad
+                }
+                if(p>(float)1){
+                p=(float)1;//el cooler al maximo
+                }
+            }
+            if(sensor.getCelsius()>=70){
+                p=(float)1;//mas de 70c al maximo
+            }
+            if(escritura_hab==OFF) {
+                escritura.attach(&escritura_cooler,0.2);//se acrtualiza la info del duty cada 200ms
+                escritura_hab=ON;
+            }
+            break;
+
+        case ABIERTO:
+    printf("RPM: %d\n\r",RPM);
+            if(RPM>=3000){
+             p=potenciometro;//si la velocidad es mas grande que la minima le presta atencion al potenciometro
+            }
+            else{
+            p=p+incr;//de lo contrario se incrementa la velocidad
+            }
+            if(escritura_hab==OFF) {
+                escritura.attach(&escritura_cooler,0.2);
+                escritura_hab=ON;
+            }
+                if(p>(float)1){
+                p=(float)1;
+                }
+            break;
+    }
+}
+
+
+
+
+
+int main()
+{
+    rojo=1;
+    verde=1;
+    azul=1;
+    
+    tiempo.attach(&segundo_reset,1);
+    vuel.rise(&sumav);
+    
+    while(1) {
+        cooler_automatizado();
+
+        float v = tsi.readPercentage();
+
+        if((v>(float)0.15)&&(v<(float)0.4)) {
+            rojo=0;
+            verde=1;
+            azul=1;
+            estado=COMIENZO;
+            modo=ABIERTO;
+            v=0;
+
+        } else if((v>(float)0.3)&&(v<(float)0.6)) {
+            rojo=1;
+            verde=0;
+            azul=1;
+        } else if((v>(float)0.5)&&(v<(float)0.9)) {
+            rojo=1;
+            verde=1;
+            azul=0;
+            estado=COMIENZO;
+            modo=CERRADO;
+            v=0;
+        } else if((v>=(float)0.9)) {
+            rojo=1;
+            verde=1;
+            azul=1;
+        } else if((v<=(float)0.15)) {
+            rojo=1;
+            verde=1;
+            azul=1;
+        }
+    }
+
+}
\ No newline at end of file
diff -r 000000000000 -r 39a6762ddcc1 mbed.bld
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Tue Jun 18 13:49:41 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/mbed_official/code/mbed/builds/65be27845400
\ No newline at end of file
diff -r 000000000000 -r 39a6762ddcc1 tsi_sensor.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tsi_sensor.lib	Tue Jun 18 13:49:41 2019 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/Kojto/code/tsi_sensor/#976904559b5c