Felix Pachay / Mbed 2 deprecated sensor_ultrasonico

Dependencies:   mbed HCSR04 TextLCD

Committer:
fpachays
Date:
Sat Feb 15 17:02:26 2020 +0000
Revision:
0:8bf0dad41181
Ultima version del proyecto

Who changed what in which revision?

UserRevisionLine numberNew contents of line
fpachays 0:8bf0dad41181 1 #include "mbed.h"
fpachays 0:8bf0dad41181 2 #include "HCSR04.h"
fpachays 0:8bf0dad41181 3 #include "mbed.h"
fpachays 0:8bf0dad41181 4 #include "TextLCD.h"
fpachays 0:8bf0dad41181 5 #define DEFAULT 0//no
fpachays 0:8bf0dad41181 6 #define ADAFRUIT 0//no
fpachays 0:8bf0dad41181 7 #define DFROBOT 0
fpachays 0:8bf0dad41181 8 #define LCM1602 0
fpachays 0:8bf0dad41181 9 #define YWROBOT 0
fpachays 0:8bf0dad41181 10 #define GYLCD 0//no
fpachays 0:8bf0dad41181 11 #define MJKDZ 0//no
fpachays 0:8bf0dad41181 12 #define SYDZ 1
fpachays 0:8bf0dad41181 13 #define WIDEHK 0//no
fpachays 0:8bf0dad41181 14 #define LCDPLUG 0//no
fpachays 0:8bf0dad41181 15
fpachays 0:8bf0dad41181 16 Serial pc(PA_2,PA_3); // tx, rx
fpachays 0:8bf0dad41181 17 //I2C i2c_lcd(PB_9, PB_8); // SDA, SCL
fpachays 0:8bf0dad41181 18 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
fpachays 0:8bf0dad41181 19 //TextLCD_I2C lcd(&i2c_lcd, 0x4E, TextLCD::LCD20x4);
fpachays 0:8bf0dad41181 20 //Serial pc(PA_2,PA_3);// Puertos de comunicación serial a PC
fpachays 0:8bf0dad41181 21 DigitalOut Verde(PD_12); // Verde==> Distancia RECOMENDADA (<40)
fpachays 0:8bf0dad41181 22 DigitalOut Azul(PD_15);// Azul ==> Distancia MENOR A RECOMENDADA (entre 20 y 40)
fpachays 0:8bf0dad41181 23 DigitalOut Naranja(PD_13);//Naranja> Distancia PELIGROSA (entre 4 y 20)
fpachays 0:8bf0dad41181 24 HCSR04 ultra(PB_4,PB_5);// Sensor Ultrasónico (Trigger y Echo)
fpachays 0:8bf0dad41181 25 DigitalOut Rojo(PD_14);// Respuesta Sensor infrarojo==> CHOQUE INMINENTE (menor a 4)
fpachays 0:8bf0dad41181 26 DigitalIn Infra(PB_3);// Señal Sensor infrarojo
fpachays 0:8bf0dad41181 27 char *array[] = { // Defino Matriz de caracteres a mostrar
fpachays 0:8bf0dad41181 28 "Entre 4 y 20",
fpachays 0:8bf0dad41181 29 "Entre 20 y 40",
fpachays 0:8bf0dad41181 30 "Mayor a 40",
fpachays 0:8bf0dad41181 31 "Menor igual a 4"
fpachays 0:8bf0dad41181 32 };
fpachays 0:8bf0dad41181 33 int d; // Variable que almacenará la distancia
fpachays 0:8bf0dad41181 34
fpachays 0:8bf0dad41181 35 void setup()
fpachays 0:8bf0dad41181 36 {
fpachays 0:8bf0dad41181 37 /* lcd.setBacklight(TextLCD::LightOn); // Retroiluminación de pantalla
fpachays 0:8bf0dad41181 38 lcd.setCursor(TextLCD::CurOff_BlkOn);//Seteo cursor
fpachays 0:8bf0dad41181 39 lcd.setUDC(0, (char *) udc_0);
fpachays 0:8bf0dad41181 40 lcd.putc(0);
fpachays 0:8bf0dad41181 41 lcd.setUDC(1, (char *) udc_1);
fpachays 0:8bf0dad41181 42 lcd.putc(1);
fpachays 0:8bf0dad41181 43 */
fpachays 0:8bf0dad41181 44 lcd.cls();//limpia pantalla
fpachays 0:8bf0dad41181 45 int col = 0;//definición columna
fpachays 0:8bf0dad41181 46 int row = 0;//definición fila
fpachays 0:8bf0dad41181 47 lcd.locate(col,row);//Ubiación del cursor
fpachays 0:8bf0dad41181 48 lcd.printf("Inicializando...");// mensaje de Inicialización de pantalla
fpachays 0:8bf0dad41181 49 wait(2);//Espere 2 segundos
fpachays 0:8bf0dad41181 50 //Secuencia de Incilización
fpachays 0:8bf0dad41181 51 row++;
fpachays 0:8bf0dad41181 52 lcd.locate(col,row);
fpachays 0:8bf0dad41181 53 lcd.printf("Inicializando...");
fpachays 0:8bf0dad41181 54 wait(2);
fpachays 0:8bf0dad41181 55 row++;
fpachays 0:8bf0dad41181 56 lcd.locate(col,row);
fpachays 0:8bf0dad41181 57 lcd.printf("Inicializando...");
fpachays 0:8bf0dad41181 58 wait(2);
fpachays 0:8bf0dad41181 59 row++;
fpachays 0:8bf0dad41181 60 lcd.locate(col,row);
fpachays 0:8bf0dad41181 61 lcd.printf("Inicializando...");
fpachays 0:8bf0dad41181 62 }
fpachays 0:8bf0dad41181 63 //Secuencia para mostrar distancia según su rango
fpachays 0:8bf0dad41181 64 void mostrar(char *str, int distancia)
fpachays 0:8bf0dad41181 65 {
fpachays 0:8bf0dad41181 66 //lcd.setBacklight(TextLCD::LightOn);
fpachays 0:8bf0dad41181 67 lcd.cls();
fpachays 0:8bf0dad41181 68 lcd.locate(0, 0);
fpachays 0:8bf0dad41181 69 lcd.printf(str);
fpachays 0:8bf0dad41181 70 lcd.locate(0, 1);
fpachays 0:8bf0dad41181 71 lcd.printf("Distancia: %d",distancia);
fpachays 0:8bf0dad41181 72 }
fpachays 0:8bf0dad41181 73 //Determinación de selector
fpachays 0:8bf0dad41181 74 char determinarSelector()
fpachays 0:8bf0dad41181 75 {
fpachays 0:8bf0dad41181 76 char selector;
fpachays 0:8bf0dad41181 77 if(Infra == 0) { //sensor infarojo detecta obstaculo
fpachays 0:8bf0dad41181 78 d = 4;
fpachays 0:8bf0dad41181 79 selector = 'd';
fpachays 0:8bf0dad41181 80 } else if(Infra == 1) { //no detecta obstaculo
fpachays 0:8bf0dad41181 81 d =ultra.distance(1);
fpachays 0:8bf0dad41181 82 if(d>4 && d<=20) { //distamcia entre 4 y 20
fpachays 0:8bf0dad41181 83 selector = 'a';
fpachays 0:8bf0dad41181 84 } else if(d>20 && d<= 40) { //entre 20 y 40
fpachays 0:8bf0dad41181 85 selector = 'b';
fpachays 0:8bf0dad41181 86 } else if(d > 40) { //distacia mayor a 40
fpachays 0:8bf0dad41181 87 selector = 'c';
fpachays 0:8bf0dad41181 88 }
fpachays 0:8bf0dad41181 89 }
fpachays 0:8bf0dad41181 90 //pc.printf("selector: %c\r\n",selector);
fpachays 0:8bf0dad41181 91 // pc.printf("Distancia: %d\r\n",d);
fpachays 0:8bf0dad41181 92
fpachays 0:8bf0dad41181 93 return selector;
fpachays 0:8bf0dad41181 94 }
fpachays 0:8bf0dad41181 95 //rutina principal
fpachays 0:8bf0dad41181 96 int main()
fpachays 0:8bf0dad41181 97 {
fpachays 0:8bf0dad41181 98 setup();
fpachays 0:8bf0dad41181 99 pc.baud(115200); // Velocidad de Transmisión
fpachays 0:8bf0dad41181 100 pc.printf("Inicio\n");//Mensaje de Incio de lectura de diastanciaen en pantalla PC
fpachays 0:8bf0dad41181 101 while(1) { // Para que se ejecute siempre
fpachays 0:8bf0dad41181 102 char selector = determinarSelector();
fpachays 0:8bf0dad41181 103 switch(selector) {
fpachays 0:8bf0dad41181 104 case 'a' : //distancia entre 4 y 20
fpachays 0:8bf0dad41181 105 Naranja = 1;
fpachays 0:8bf0dad41181 106 Azul = 0;
fpachays 0:8bf0dad41181 107 Verde = 0;
fpachays 0:8bf0dad41181 108 Rojo = 0;
fpachays 0:8bf0dad41181 109 mostrar(array[0], d);
fpachays 0:8bf0dad41181 110 break;
fpachays 0:8bf0dad41181 111 case 'b' ://dist. entre 20 y 40
fpachays 0:8bf0dad41181 112 Azul = 1;
fpachays 0:8bf0dad41181 113 Naranja = 0;
fpachays 0:8bf0dad41181 114 Verde = 0;
fpachays 0:8bf0dad41181 115 Rojo = 0;
fpachays 0:8bf0dad41181 116 mostrar(array[1], d);
fpachays 0:8bf0dad41181 117 break;
fpachays 0:8bf0dad41181 118 case 'c' :// dist. > 40
fpachays 0:8bf0dad41181 119 Verde = 1;
fpachays 0:8bf0dad41181 120 Azul = 0;
fpachays 0:8bf0dad41181 121 Naranja = 0;
fpachays 0:8bf0dad41181 122 Rojo = 0;
fpachays 0:8bf0dad41181 123 mostrar(array[2], d);
fpachays 0:8bf0dad41181 124 break;
fpachays 0:8bf0dad41181 125 case 'd' :// entre 0 y 4
fpachays 0:8bf0dad41181 126 Verde = 0;
fpachays 0:8bf0dad41181 127 Azul = 0;
fpachays 0:8bf0dad41181 128 Naranja = 0;
fpachays 0:8bf0dad41181 129 Rojo = 1;
fpachays 0:8bf0dad41181 130 mostrar(array[3], d);
fpachays 0:8bf0dad41181 131 break;
fpachays 0:8bf0dad41181 132 default :// Si no cae en ningún rango anterior; señal de alrma mal funcionamiento sensores (endendido de 4 leds al mismo tiempo).
fpachays 0:8bf0dad41181 133 Verde = 1;
fpachays 0:8bf0dad41181 134 Azul = 1;
fpachays 0:8bf0dad41181 135 Naranja = 1;
fpachays 0:8bf0dad41181 136 Rojo = 1;
fpachays 0:8bf0dad41181 137 break;
fpachays 0:8bf0dad41181 138 }
fpachays 0:8bf0dad41181 139 wait(1); //Espere 5 seg
fpachays 0:8bf0dad41181 140 }
fpachays 0:8bf0dad41181 141
fpachays 0:8bf0dad41181 142 }