Programa realizado para el trabajo: SISTEMA DE DETECCIÓN Y ALERTAS POR APROXIMACIÓN DE VEHÍCULOS EN ZONAS CIEGAS DE UNA MOTOCICLETA // JOSE ALBERTO RUIZ ORTEGA // UNIVERSIDAD NACIONAL DE COLOMBIA // SEDE MEDELLÍN // Realizado con colaboración del estudiante Jair Hernan Vargas y asesoría de los docentes: Gustavo Ramirez y Jesus Hernandez

Dependencies:   DebouncedIn HCSR04 HCSR042 HCSR043 HCSR044 MMA8451Q TextLCD USBDevice mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 //
00002 //
00003 //                                      SISTEMA DE DETECCIÓN Y ALERTAS POR APROXIMACIÓN DE VEHÍCULOS EN 
00004 //                                                      ZONAS CIEGAS DE UNA MOTOCICLETA
00005 //
00006 //                                                          JOSE ALBERTO RUIZ ORTEGA
00007 //                                                                  1085262530
00008 //
00009 //                                                            INGENIERIA DE CONTROL 
00010 //
00011 //                                                      UNIVERSIDAD NACIONAL DE COLOMBIA
00012 //
00013 //                                  Programa realizado para la detección de vehiculos que se acercan a una motocicleta.
00014 //                           Para la realización de este trabajo se contó con la colaboracion del estudiante Jair Hernán Vargas 
00015 //                                  
00016 
00017 
00018 //::::::::::::::::::                                               Librerías
00019 #include "mbed.h"
00020 #include "HCSR04.h"
00021 #include "HCSR042.h"
00022 #include "HCSR043.h"
00023 #include "HCSR044.h"
00024 #include "TextLCD.h"
00025 #include "MMA8451Q.h"
00026 #include "DebouncedIn.h"
00027 #define MMA8451_I2C_ADDRESS (0x1d<<1)
00028 
00029 //::::::::::::::::::                                              Puertos 
00030 MMA8451Q acc(PTE25, PTE24, MMA8451_I2C_ADDRESS);
00031 PwmOut rojo(LED_RED);
00032 PwmOut verde(LED_GREEN);
00033 PwmOut azul(LED_BLUE);
00034 DigitalOut led2(PTE23);
00035 DigitalOut led3(PTE29);
00036 DigitalOut led4(PTC17);
00037 DigitalOut led5(PTA16);
00038 PwmOut ledD(PTC8);
00039 PwmOut ledI(PTC9);
00040 PwmOut sound(PTA12);
00041 DigitalOut ledbD(PTC7);
00042 DigitalOut ledbI(PTC0);
00043 DigitalOut ledgD(PTC5);
00044 DigitalOut ledgI(PTC6);
00045 HCSR04 sensor(PTD4, PTA13);
00046 HCSR042 sensor2(PTA5, PTD5);
00047 HCSR043 sensor3(PTA1, PTD0);
00048 HCSR044 sensor4(PTA4, PTD2);
00049 DebouncedIn button1(PTC12);
00050 
00051 //::::::::::::::::::::::::::::::                          Display
00052 
00053 TextLCD lcd(PTB10, PTB11, PTE2, PTE3, PTE4, PTE5); 
00054 
00055 //::::::::::::::::::::::::::::::                          Variables
00056 
00057 float X,Y,Z;
00058 bool b;
00059 bool a;
00060 bool c;
00061 bool d;
00062 int e;
00063 float DD1;
00064 float DD2;
00065 
00066 //:::::::::::::::::::::::::::::::::                       PROGRAMA
00067 int main()
00068 {
00069                 
00070     while(1){
00071                 //a=0;
00072                 
00073                 //b=0;
00074                 //::::::::::::::::::::::::::            Acelerómetro
00075                 
00076                 
00077                 X=acc.getAccX();
00078                 Y=acc.getAccY();
00079                 Z=acc.getAccZ();
00080                 rojo=1.0 - abs(X);
00081                 verde=1.0 - abs(Y);
00082                 azul=1.0 - abs(Z);
00083                 wait(0.1);
00084         
00085                 if (Y>=0.1)
00086                 {
00087                 led2=1;
00088                 c=1;
00089                 d=0;
00090                 }
00091                  else
00092                  {
00093                 led2=0;
00094                 c=0;
00095                 }
00096                 if (Y<=-0.1)
00097                 {
00098                 d=1;
00099                 c=0;
00100                 led3=1;
00101                 }
00102                 else
00103                 {
00104                 led3=0;
00105                 d=0;
00106                 }
00107                 
00108                 // ::::::::::::::::::::::::::::::::::      Selección de Modos
00109                 
00110                 lcd.locate(0,0);
00111                 lcd.printf("e:%d ",e);
00112                 wait(0.1);
00113                 
00114                 if (button1.falling())
00115                 {
00116                     e=e+1;
00117                     
00118                 }
00119                  if (e==3)
00120                 {
00121                     e=0;
00122                 }
00123                 
00124                 // MODO CARRETERA
00125                 if (e==0)
00126                 {
00127                     DD1=120;
00128                     DD2=400;
00129                     lcd.locate(0,0);
00130                     lcd.printf("Modo Carretera");
00131                     wait(0.1);
00132                 }
00133                 
00134                 // MODO CIUDAD
00135                 
00136                 if (e==1)
00137                 {
00138                     DD1=70;
00139                     DD2=300;
00140                     lcd.locate(0,1);
00141                     lcd.printf("Modo Ciudad");
00142                     wait(0.1);
00143                 }
00144                 
00145                 // MODO SIN ALARMAS
00146                 
00147                 if (e==2)
00148                 {
00149                     sound=0;
00150                     lcd.locate(0,1);
00151                     lcd.printf("Modo Sin Alarma");
00152                     wait(0.1);
00153                 }
00154             
00155                     //:::::::::::::::::::::::::::::::::::::::::::::SENSADO
00156                     
00157                 // SENSOR 1 DERECHA ________________________________________________________________________________________
00158                 long d = sensor.distance(1);
00159                 lcd.locate(0,0);
00160                 lcd.printf("DER:%d ",sensor.distance(1));
00161                 
00162                 
00163                 // SENSOR 2 IZQUIERDA ________________________________________________________________________________________
00164                 long s = sensor2.distance(1);
00165                 lcd.locate(8,0);
00166                 lcd.printf("IZQ:%d ",sensor2.distance(1));
00167                                 
00168                  // SENSOR 3 POSTERIOR ________________________________________________________________________________________
00169                 long p = sensor3.distance(1);
00170                 lcd.locate(0,1);
00171                 lcd.printf("FRN:%d ",sensor3.distance(1));
00172                 //wait(0.5);
00173                 
00174                 // SENSOR 4 FRONTAL  ________________________________________________________________________________________
00175                 long q = sensor4.distance(1);
00176                 lcd.locate(8,1);
00177                 lcd.printf("TRS:%d ",sensor4.distance(1));
00178                 //wait(0.5);  
00179                 
00180                 //::::::::::::::::::::::::                              ALARMAS
00181                 
00182               // ::::::::::::::::::::::::::::::::ALERTA MUY CERCANA DERECHA 
00183               
00184               if (d>-1 && d<=DD1)
00185                 {
00186                 lcd.locate(0,0);
00187                 lcd.printf("AMAXD ");
00188                 ledbD=0;
00189                 ledgD=0;
00190                             
00191                 ledD.period(4.0);  // 4 second period
00192                 //ledD.pulsewidth(0.2); // 2 second pulse (on)
00193                 ledD.write(0.20f);  // 50% duty cycle
00194                 //while(1);          // led flashing
00195                   a=1;          
00196                 }  
00197                 
00198                 // ::::::::::::::::::::::::::::::::ALERTA MUY CERCANA IZQUIERDA
00199               if(s>-1 && s<=DD1)
00200                 {
00201                 lcd.locate(8,0);
00202                 lcd.printf("AMAXI ");
00203                 ledbI=0;
00204                 ledgI=0;
00205                         
00206                 ledI.period(6.0);  // 4 second period
00207                 //ledI.pulsewidth(0.2); // 2 second pulse (on)
00208                 ledI.write(0.20f);  // 50% duty cycle
00209                 //while(1);          // led flashing  
00210                 a=1;
00211                 }
00212                 
00213                 // ::::::::::::::::::::::::::::::::ALERTA CERCANA DERECHA
00214                 if(d>DD1 && d<=DD2)
00215                 {
00216                 ledD=0;
00217                 ledbD=1;
00218                 ledgD=0;
00219                 a=1;
00220                 lcd.locate(0,0);
00221                 lcd.printf("AMIND  ");
00222                 
00223                 }       
00224                  
00225                 // ::::::::::::::::::::::::::::::::ALERTA CERCANA IZQUIERDA
00226                 if(s>DD1 && s<=DD2)
00227                 {
00228                 ledI=0;
00229                 ledbI=1;
00230                 ledgI=0;
00231                 a=1;
00232                 lcd.locate(8,0);
00233                 lcd.printf("AMINI  ");                
00234                 }       
00235                        
00236                                      
00237               // ::::::::::::::::::::::::::::::::SIN ALERTAS DERECHA
00238                 if(d>DD2)
00239                 {
00240                 ledD=0;
00241                 ledbD=0;
00242                 ledgD=1;
00243                 a=0;
00244                 lcd.locate(0,0);
00245                 lcd.printf("NOALD ");
00246                 }
00247                 
00248                 //:::::::::::::::::::::::::::::::: SIN ALERTAS IZQ 
00249                 if(s>DD2)
00250                 {
00251                 ledI=0;
00252                 ledbI=0;
00253                 ledgI=1;
00254                 a=0;
00255                 lcd.locate(8,0);
00256                 lcd.printf("NOALI ");
00257                 }
00258                 // ::::::::::::::::::::::::::::::::    SIN ALERTAS DERECHA
00259                    if(d==-1)
00260                 {
00261                 ledD=0;
00262                 ledbD=0;
00263                 ledgD=1;
00264                 a=0;
00265                 lcd.locate(0,0);
00266                 lcd.printf("NOALD ");
00267                 }
00268                 
00269                 // ::::::::::::::::::::::::::::::::    SIN ALERTAS IZQUIERDA
00270                 if(s==-1)
00271                 {
00272                 ledI=0;
00273                 ledbI=0;
00274                 ledgI=1;
00275                 a=0;
00276                 lcd.locate(8,0);
00277                 lcd.printf("NOALI ");
00278                 }
00279                 
00280                 
00281                 // ::::::::::::::::::::::::::::::::alarma POSTERIOR 
00282                 if (p<=100)
00283                 {
00284                 led4=1;        
00285                 }  
00286                 else
00287                 {
00288                 led4=0;
00289                 }
00290                   
00291                   // ::::::::::::::::::::::::::::::::alarma POSTERIOR 
00292                 if (q<=100)
00293                 {
00294                 led5=1;        
00295                 } 
00296                  else
00297                 {
00298                 led5=0;
00299                 }
00300                // :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::SONIDO
00301                
00302                 if (abs(Y)>=0.1 && a==1)
00303                 {
00304                    sound=1;
00305                    wait(0.07);
00306                    sound=0;
00307                 }  
00308                 
00309                 
00310                 
00311               }
00312          }