Felix Pachay / Mbed 2 deprecated sensor_ultrasonico

Dependencies:   mbed HCSR04 TextLCD

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "HCSR04.h"
00003 #include "mbed.h"
00004 #include "TextLCD.h"
00005 #define DEFAULT        0//no
00006 #define ADAFRUIT       0//no
00007 #define DFROBOT        0
00008 #define LCM1602        0
00009 #define YWROBOT        0
00010 #define GYLCD          0//no
00011 #define MJKDZ          0//no
00012 #define SYDZ           1
00013 #define WIDEHK         0//no
00014 #define LCDPLUG        0//no
00015 
00016 Serial pc(PA_2,PA_3); // tx, rx
00017 //I2C i2c_lcd(PB_9, PB_8); // SDA, SCL
00018 TextLCD lcd(PA_8, PC_11, PC_6, PC_7, PC_8, PC_9, TextLCD::LCD16x2); //Inicilizar la pantalla LCD (se considera una panalla de 16 caracteres X 2 Filas
00019 //TextLCD_I2C lcd(&i2c_lcd, 0x4E, TextLCD::LCD20x4);
00020 //Serial pc(PA_2,PA_3);//     Puertos de comunicación serial a PC
00021 DigitalOut Verde(PD_12); // Verde==> Distancia RECOMENDADA (<40)
00022 DigitalOut Azul(PD_15);//   Azul ==> Distancia MENOR A RECOMENDADA (entre 20 y 40)
00023 DigitalOut Naranja(PD_13);//Naranja> Distancia PELIGROSA (entre 4 y 20)
00024 HCSR04 ultra(PB_4,PB_5);//  Sensor Ultrasónico (Trigger y Echo)
00025 DigitalOut Rojo(PD_14);//   Respuesta Sensor infrarojo==> CHOQUE INMINENTE (menor a 4)
00026 DigitalIn Infra(PB_3);//    Señal Sensor infrarojo
00027 char *array[] = {     //    Defino Matriz de caracteres a mostrar
00028     "Entre 4 y 20",
00029     "Entre 20 y 40",
00030     "Mayor a 40",
00031     "Menor igual a 4"
00032 };
00033 int d; // Variable que almacenará la distancia
00034 
00035 void setup()
00036 {
00037     /* lcd.setBacklight(TextLCD::LightOn); // Retroiluminación de pantalla
00038      lcd.setCursor(TextLCD::CurOff_BlkOn);//Seteo cursor
00039      lcd.setUDC(0, (char *) udc_0);
00040      lcd.putc(0);
00041      lcd.setUDC(1, (char *) udc_1);
00042      lcd.putc(1);
00043      */
00044     lcd.cls();//limpia pantalla
00045     int col = 0;//definición columna
00046     int row = 0;//definición fila
00047     lcd.locate(col,row);//Ubiación del cursor
00048     lcd.printf("Inicializando...");// mensaje de Inicialización de pantalla
00049     wait(2);//Espere 2 segundos
00050     //Secuencia de Incilización
00051     row++;
00052     lcd.locate(col,row);
00053     lcd.printf("Inicializando...");
00054     wait(2);
00055     row++;
00056     lcd.locate(col,row);
00057     lcd.printf("Inicializando...");
00058     wait(2);
00059     row++;
00060     lcd.locate(col,row);
00061     lcd.printf("Inicializando...");
00062 }
00063 //Secuencia para mostrar distancia según su rango
00064 void mostrar(char *str, int distancia)
00065 {
00066     //lcd.setBacklight(TextLCD::LightOn);
00067     lcd.cls();
00068     lcd.locate(0, 0);
00069     lcd.printf(str);
00070     lcd.locate(0, 1);
00071     lcd.printf("Distancia: %d",distancia);
00072 }
00073 //Determinación de selector
00074 char determinarSelector()
00075 {
00076     char selector;
00077     if(Infra == 0) { //sensor infarojo detecta obstaculo
00078         d = 4;
00079         selector = 'd';
00080     } else if(Infra == 1) { //no detecta obstaculo
00081         d =ultra.distance(1);
00082         if(d>4 && d<=20) { //distamcia entre 4 y 20
00083             selector = 'a';
00084         } else if(d>20 && d<= 40) { //entre 20 y 40
00085             selector = 'b';
00086         } else if(d > 40) { //distacia mayor a 40
00087             selector = 'c';
00088         }
00089     }
00090     //pc.printf("selector: %c\r\n",selector);
00091    // pc.printf("Distancia: %d\r\n",d);
00092 
00093     return selector;
00094 }
00095 //rutina principal
00096 int main()
00097 {
00098     setup();
00099     pc.baud(115200); //    Velocidad de Transmisión
00100     pc.printf("Inicio\n");//Mensaje de Incio de lectura de diastanciaen en pantalla PC
00101     while(1) {  //         Para que se ejecute siempre
00102         char selector = determinarSelector();
00103         switch(selector) {
00104             case 'a' : //distancia entre 4 y 20
00105                 Naranja = 1;
00106                 Azul = 0;
00107                 Verde = 0;
00108                 Rojo = 0;
00109                 mostrar(array[0], d);
00110                 break;
00111             case 'b' ://dist. entre 20 y 40
00112                 Azul   = 1;
00113                 Naranja = 0;
00114                 Verde = 0;
00115                 Rojo = 0;
00116                 mostrar(array[1], d);
00117                 break;
00118             case 'c' :// dist. > 40
00119                 Verde = 1;
00120                 Azul = 0;
00121                 Naranja = 0;
00122                 Rojo = 0;
00123                 mostrar(array[2], d);
00124                 break;
00125             case 'd' :// entre 0 y 4
00126                 Verde = 0;
00127                 Azul = 0;
00128                 Naranja = 0;
00129                 Rojo = 1;
00130                 mostrar(array[3], d);
00131                 break;
00132             default :// Si no cae en ningún rango anterior; señal de alrma mal funcionamiento sensores (endendido de 4 leds al mismo tiempo).
00133                 Verde = 1;
00134                 Azul = 1;
00135                 Naranja = 1;
00136                 Rojo = 1;
00137                 break;
00138         }
00139         wait(1); //Espere 5 seg
00140     }
00141 
00142 }