Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Revision 25:60e920b431c0, committed 2020-06-08
- Comitter:
- montse
- Date:
- Mon Jun 08 20:10:30 2020 +0000
- Parent:
- 24:7f14b70fc9ef
- Commit message:
- Programa practica 7 equipo 3
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file | 
--- a/main.cpp	Mon Apr 08 11:03:25 2019 +0100
+++ b/main.cpp	Mon Jun 08 20:10:30 2020 +0000
@@ -1,12 +1,287 @@
-#include "mbed.h"
+#include "mbed.h" // con switch case
+#include "C12832.h"
+#include "Sht31.h"
+ 
+C12832 lcd(SPI_MOSI, SPI_SCK, SPI_MISO, p8, p11);
+ 
+PwmOut speaker(p21);
+AnalogIn pot(p15), pot2(p16);
+DigitalOut L1(p5),L2(p6);
+DigitalIn btn(p19), btn2(p20);
+Sht31 sht31(I2C_SDA, I2C_SCL);
 
-DigitalOut myled(LED1);
+static char grafica[] = {
+ 0x80, 0x00, 0x00 , 0x00, 0x00, 0x00 , 0x00, 0x00 , 0x00, 0x00 , 0x01, 
+ 0x80, 0x00, 0x00 , 0x00, 0x00, 0x00 , 0x00, 0x00 , 0x00, 0x00 , 0x01,
+ 0x80, 0x00, 0x00 , 0x00, 0x00, 0x00 , 0x00, 0x00 , 0x00, 0x00 , 0x01,
+ 0x80, 0x00, 0x00 , 0x00, 0x00, 0x00 , 0x00, 0x00 , 0x00, 0x00 , 0x01,
+ 0x80, 0x00, 0x00 , 0x00, 0x00, 0x00 , 0x00, 0x00 , 0x00, 0x00 , 0x01,
+ 0x80, 0x00, 0x00 , 0x00, 0x00, 0x00 , 0x00, 0x00 , 0x00, 0x00 , 0x01,
+ 0x80, 0x00, 0x00 , 0x00, 0x00, 0x00 , 0x00, 0x00 , 0x00, 0x00 , 0x01,
+ 0x80, 0x00, 0x00 , 0x00, 0x00, 0x00 , 0x00, 0x00 , 0x00, 0x00 , 0x01,
+ 0x80, 0x00, 0x00 , 0x00, 0x00, 0x00 , 0x00, 0x00 , 0x00, 0x00 , 0x01,
+ 0x80, 0x00, 0x00 , 0x00, 0x00, 0x00 , 0x00, 0x00 , 0x00, 0x00 , 0x01,
+ 0x80, 0x00, 0x00 , 0x00, 0x00, 0x00 , 0x00, 0x00 , 0x00, 0x00 , 0x01,
+ 0x80, 0x00, 0x00 , 0x00, 0x00, 0x00 , 0x00, 0x00 , 0x00, 0x00 , 0x01,
+ 0x80, 0x00, 0x00 , 0x00, 0x00, 0x00 , 0x00, 0x00 , 0x00, 0x00 , 0x01,
+ 0x80, 0x00, 0x00 , 0x00, 0x00, 0x00 , 0x00, 0x00 , 0x00, 0x00 , 0x01,
+ 0x80, 0x00, 0x00 , 0x00, 0x00, 0x00 , 0x00, 0x00 , 0x00, 0x00 , 0x01,
+ 0x80, 0x00, 0x00 , 0x00, 0x00, 0x00 , 0x00, 0x00 , 0x00, 0x00 , 0x01,
+ 0x80, 0x00, 0x00 , 0x00, 0x00, 0x00 , 0x00, 0x00 , 0x00, 0x00 , 0x01,
+ 0x80, 0x00, 0x00 , 0x00, 0x00, 0x00 , 0x00, 0x00 , 0x00, 0x00 , 0x01,
+ 0x80, 0x00, 0x00 , 0x00, 0x00, 0x00 , 0x00, 0x00 , 0x00, 0x00 , 0x01,
+ 0x80, 0x00, 0x00 , 0x00, 0x00, 0x00 , 0x00, 0x00 , 0x00, 0x00 , 0x01,
+ 0x80, 0x00, 0x00 , 0x00, 0x00, 0x00 , 0x00, 0x00 , 0x00, 0x00 , 0x01, 
+ 0x80, 0x00, 0x00 , 0x00, 0x00, 0x00 , 0x00, 0x00 , 0x00, 0x00 , 0x01,
+ 0x80, 0x00, 0x00 , 0x00, 0x00, 0x00 , 0x00, 0x00 , 0x00, 0x00 , 0x01,
+ 0x80, 0x00, 0x00 , 0x00, 0x00, 0x00 , 0x00, 0x00 , 0x00, 0x00 , 0x01,
+ 0x80, 0x00, 0x00 , 0x00, 0x00, 0x00 , 0x00, 0x00 , 0x00, 0x00 , 0x01,
+ 0x80, 0x00, 0x00 , 0x00, 0x00, 0x00 , 0x00, 0x00 , 0x00, 0x00 , 0x01,
+ 0x80, 0x00, 0x00 , 0x00, 0x00, 0x00 , 0x00, 0x00 , 0x00, 0x00 , 0x01,
+ 0xff, 0xff, 0xff , 0xff, 0xff, 0xff , 0xff, 0xff , 0xff, 0xff , 0xff,
+};
+
+Bitmap grafica1 = {
+  88, // XSize
+  28, // YSize
+  11,  // Bytes in Line
+  grafica ,  // Pointer to picture data
+};
+
+void sens_vibracion() // Ejercicio 2: Sensor sismológico. Sensor: Acelerómetro ADXL202E.
+{
+    int valor_sensor;
+    lcd.cls();
+    lcd.print_bm(grafica1, 35, 4); 
+    lcd.copy_to_lcd();
+    L1=0;L2=0;
+
+    float g=(pot2.read()*1.24);
 
-int main() {
-    while(1) {
-        myled = 1;
-        wait(0.2);
-        myled = 0;
-        wait(0.2);
+    for (int b=36; b<=121; b++)
+    {
+        wait(0.01);
+        g=(pot2.read()*1.24);
+        valor_sensor = 8*pot2.read();
+        lcd.pixel(b,30-valor_sensor, 1);
+        lcd.locate(3, 12);
+        lcd.printf("%.3fg",g);
+        lcd.copy_to_lcd();
+        
+        if(g>=0.014 && g<0.092)
+        {   
+            lcd.locate(45, 3);
+            lcd.printf("Sismo detectado");
+            lcd.locate(40, 13);
+            lcd.printf(" Ligero 4.0-4.9 R");
+            lcd.copy_to_lcd();
+            wait(0.1);
+            lcd.locate(45, 3);
+            lcd.printf("              ");
+            lcd.locate(40, 13);
+            lcd.printf("              ");
+            lcd.copy_to_lcd();
+        }
+        else if(g>=0.092 && g<0.18)
+        {
+            lcd.locate(45, 3);
+            lcd.printf("Sismo detectado");
+            lcd.locate(40, 13);
+            lcd.printf("Moder. 5.0-5.9 R");
+            lcd.copy_to_lcd();
+            wait(0.1);
+            lcd.locate(45, 3);
+            lcd.printf("              ");
+            lcd.locate(40, 13);
+            lcd.printf("              ");
+            lcd.copy_to_lcd();
+    ;
+        }
+        else if(g>=0.18 && g<0.34)
+        {
+            L2=1;
+            lcd.locate(45, 3);
+            lcd.printf("Sismo detectado");
+            lcd.locate(40, 13);
+            lcd.printf("Fuerte 6.0-6.9 R");
+            lcd.copy_to_lcd();
+            wait(0.1);
+            lcd.locate(45, 3);
+            lcd.printf("              ");
+            lcd.locate(40, 13);
+            lcd.printf("              ");
+            lcd.copy_to_lcd();
+            L2=0;
+        }
+        else if(g>=0.34 && g<1.24)
+        {
+            L2=1;
+            lcd.locate(45, 3);
+            lcd.printf("Sismo detectado");
+            lcd.locate(40, 13);
+            lcd.printf(" Mayor 7.0-7.9 R");
+            lcd.copy_to_lcd();
+            wait(0.1);
+            lcd.locate(45, 3);
+            lcd.printf("              ");
+            lcd.locate(40, 13);
+            lcd.printf("               ");
+            lcd.copy_to_lcd();
+            L2=0;
+        }
+        else if(g>=1.24)
+        {
+            L1=1;
+            lcd.locate(45, 4);
+            lcd.printf("Sismo detectado");
+            lcd.locate(40, 13);
+            lcd.printf("Cataclismo 8-10 R");
+            lcd.copy_to_lcd();
+            wait(0.1);
+            lcd.locate(45, 4);
+            lcd.printf("              ");
+            lcd.locate(40, 13);
+            lcd.printf("               ");
+            lcd.copy_to_lcd();
+            L1=0;
+        }
     }
 }
+void play_tone(float frequency, float volume, float interval, float rest) 
+{
+    speaker.period(1.0 / frequency);
+    speaker = volume;
+    wait(interval);
+    speaker = 0.0;
+    wait(rest);
+}
+
+void sens_temp() // Ejercicio 2: Sensor de temperatura. Sensor: Sht31.
+{
+
+    lcd.cls();
+    float temp = sht31.readTemperature();
+    float humidity = sht31.readHumidity();
+    lcd.locate(3, 3);
+    lcd.printf("Temperature: %.2f C", temp);
+    lcd.locate(3, 13);
+    lcd.printf("Humidity: %.2f %%", humidity);
+    L1 = temp > 40.0f;
+    wait(0.5f); 
+}
+
+void sens_CO() //  Ejercicio 1: Concentraciñon de CO2
+{
+    float x;
+    x = 5*pot.read();
+    btn.read();
+    x = 5*pot.read();
+    L1=0; 
+    lcd.cls();
+    
+    if(x >= 0.25 && x < .35)
+    {
+        lcd.cls();
+        lcd.locate(10,3);
+        lcd.printf("Niveles de C02 normales");
+        lcd.locate(35,15);
+        lcd.printf("%f ppm",1000*x);
+        lcd.copy_to_lcd();
+        play_tone(450.0, 0.1, 1, 3.5);
+    }
+    else if(x >= .350 && x < 1)
+    {
+        lcd.cls();
+        lcd.locate(10,1);
+        lcd.printf("Congestionado, pero con");
+        lcd.locate(10,10);
+        lcd.printf("buen intercambio de aire.");
+        lcd.locate(35,20);
+        lcd.printf("%f ppm",1000*x);
+        lcd.copy_to_lcd();
+        play_tone(480.0, 0.2, 1, 3);
+
+    }
+    else if(x >= 1 && x < 2)
+    {
+        lcd.cls();
+        lcd.locate(19,7);
+        lcd.printf("Calidad de aire baja");
+        lcd.locate(27,17);
+        lcd.printf("%f ppm",1000*x);
+        lcd.copy_to_lcd();
+        play_tone(500.0, 0.3, 1, 2);
+    }
+    else if(x >= 2 && x < 5)
+    {
+        lcd.cls();
+        lcd.printf("Peligro");
+        lcd.copy_to_lcd();
+        play_tone(525.0, 0.5, 0.5, 1);
+
+    }    
+    else if(x >= 5)
+    {
+        L1 = 1;
+        lcd.cls();
+        lcd.locate(3,10);
+        lcd.printf("¡Alejate!");
+        lcd.copy_to_lcd();
+        
+        lcd.locate(45, 5);
+        lcd.printf("Evacuacion");
+        lcd.locate(40, 17);
+        lcd.printf("de inmediata!");
+        lcd.copy_to_lcd();
+        
+        play_tone(800.0, 5, 0.5, 0.2);
+    }
+    else if(x <= 0)
+    {
+        lcd.cls();
+        lcd.locate(30,10);
+        lcd.printf("Error");
+        lcd.copy_to_lcd();
+    }
+}
+
+
+ 
+int main() 
+{ 
+    printf("Práctica 7, equipo 3\n");
+    float x;
+    lcd.cls();
+    x = 5*pot.read();
+    while(x < 0.4)
+    {
+        x = 5*pot.read();
+        wait(1);
+        lcd.locate(1,1);
+        lcd.printf("Precalentando %f", x);
+        lcd.copy_to_lcd();
+        wait(1);
+        lcd.cls();
+    }
+    while (1)
+    {
+        L1=0; L2=0;
+        btn2.read();
+        int A=btn.read()+1;
+        if (btn2==1)
+        {
+            A=3;
+        }
+        
+        switch (A)
+        {
+            case 1: sens_CO();
+            break;
+            case 2: sens_temp();
+            break;
+            case 3: sens_vibracion(); 
+            break;
+        }
+        wait_ms(500);
+    }
+}
\ No newline at end of file