Andrea Coronado
/
Final_Informatica_Industrial
Proyecto Final
Fork of final_info by
Final_Informatica_Industrial.cpp@1:af64df8411f5, 2014-12-02 (annotated)
- Committer:
- AndreaC
- Date:
- Tue Dec 02 05:35:13 2014 +0000
- Revision:
- 1:af64df8411f5
Proyecto final de la clase de Informatica Industrial
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
AndreaC | 1:af64df8411f5 | 1 | #include "mbed.h" // Librería de mbed |
AndreaC | 1:af64df8411f5 | 2 | #include "Servo.h" // Librería del servo; para controlar el servo |
AndreaC | 1:af64df8411f5 | 3 | |
AndreaC | 1:af64df8411f5 | 4 | Serial bt(PTE0, PTE1); // Establece puertos que comunican con el bluetooth, como también una varialbe llamada "bt" para dichos puertos |
AndreaC | 1:af64df8411f5 | 5 | Serial pc(USBTX,USBRX); // comunicacion serial con la computadora |
AndreaC | 1:af64df8411f5 | 6 | |
AndreaC | 1:af64df8411f5 | 7 | PwmOut servo(PTA5); // Establece una variable Pwm llamada "servo" |
AndreaC | 1:af64df8411f5 | 8 | |
AndreaC | 1:af64df8411f5 | 9 | PwmOut valorBuzzer(PTB1); // Establece una variable Pwm llamada "valorBuzzer" |
AndreaC | 1:af64df8411f5 | 10 | |
AndreaC | 1:af64df8411f5 | 11 | PwmOut ledDeFotoresistencia(PTC8); // Establece una variable pwm llamada "led" |
AndreaC | 1:af64df8411f5 | 12 | AnalogIn valorFotoresistencia(PTB3); // Establece una variable Analogica llamada "valorFotoresistencia", esta variable la resive la freedom, |
AndreaC | 1:af64df8411f5 | 13 | |
AndreaC | 1:af64df8411f5 | 14 | DigitalOut ledDeSensorMovimiento(PTC9); // Establece el led controlado por el sensor de movimiento |
AndreaC | 1:af64df8411f5 | 15 | DigitalIn SensorMovimiento = (PTB0); // Pin de lectura del sensor de movimiento |
AndreaC | 1:af64df8411f5 | 16 | |
AndreaC | 1:af64df8411f5 | 17 | Timer timer; // Declara un timer para la funcion del sensor de movimiento |
AndreaC | 1:af64df8411f5 | 18 | |
AndreaC | 1:af64df8411f5 | 19 | int valorReedSwitch = 0; // variable para conoser el estado del reed switch |
AndreaC | 1:af64df8411f5 | 20 | DigitalIn reedSwitch(PTA13); // puerto del reed switch |
AndreaC | 1:af64df8411f5 | 21 | |
AndreaC | 1:af64df8411f5 | 22 | void f_SensorMovimiento() // Funcion que controla el sensor de moviminto |
AndreaC | 1:af64df8411f5 | 23 | { |
AndreaC | 1:af64df8411f5 | 24 | timer.start(); // Inicializa el timer |
AndreaC | 1:af64df8411f5 | 25 | while(timer <= 3) // Por tres segundos... |
AndreaC | 1:af64df8411f5 | 26 | { |
AndreaC | 1:af64df8411f5 | 27 | ledDeSensorMovimiento = 1; // se enciende el led |
AndreaC | 1:af64df8411f5 | 28 | } |
AndreaC | 1:af64df8411f5 | 29 | timer.stop(); // Detiene el timer |
AndreaC | 1:af64df8411f5 | 30 | timer.reset(); // Reinicia el tiemr |
AndreaC | 1:af64df8411f5 | 31 | ledDeSensorMovimiento = 0; // Led se apaga |
AndreaC | 1:af64df8411f5 | 32 | } |
AndreaC | 1:af64df8411f5 | 33 | |
AndreaC | 1:af64df8411f5 | 34 | void f_Fotoresistencia() // funcion de la fotoresistencia |
AndreaC | 1:af64df8411f5 | 35 | { |
AndreaC | 1:af64df8411f5 | 36 | float valor = valorFotoresistencia.read(); // lee es lavor de la fotoresistencia y la asigna a una variable flotante llamada "valor" |
AndreaC | 1:af64df8411f5 | 37 | |
AndreaC | 1:af64df8411f5 | 38 | valor = ((valorFotoresistencia - 0.039) * (-10)); // Ecuacion que recorre los valores de la freedom |
AndreaC | 1:af64df8411f5 | 39 | |
AndreaC | 1:af64df8411f5 | 40 | if(valor < 0) // Si el valor de la fotoresistencia es menor a cero... |
AndreaC | 1:af64df8411f5 | 41 | { |
AndreaC | 1:af64df8411f5 | 42 | valor = 0; // iguala el valor a 0 |
AndreaC | 1:af64df8411f5 | 43 | } |
AndreaC | 1:af64df8411f5 | 44 | if(valor>1) // Si el valor es mayor a cero... |
AndreaC | 1:af64df8411f5 | 45 | { |
AndreaC | 1:af64df8411f5 | 46 | valor=1; // Iguala el valor a 1 |
AndreaC | 1:af64df8411f5 | 47 | } |
AndreaC | 1:af64df8411f5 | 48 | |
AndreaC | 1:af64df8411f5 | 49 | ledDeFotoresistencia = valor; // Se enciende el led con una intencidad = al valor |
AndreaC | 1:af64df8411f5 | 50 | } |
AndreaC | 1:af64df8411f5 | 51 | |
AndreaC | 1:af64df8411f5 | 52 | void f_Buzzer() // Funcion del buzzer |
AndreaC | 1:af64df8411f5 | 53 | { |
AndreaC | 1:af64df8411f5 | 54 | bt.printf("Alarma Activada\n\r"); // Como respuesta, se imprime que la alarma ha sido activada |
AndreaC | 1:af64df8411f5 | 55 | valorBuzzer.period_ms(1); // Define el periodo de PWM para el buzzer |
AndreaC | 1:af64df8411f5 | 56 | |
AndreaC | 1:af64df8411f5 | 57 | timer.start(); // Inicia el timer |
AndreaC | 1:af64df8411f5 | 58 | while(timer <= 5) // Por 5 segundos... |
AndreaC | 1:af64df8411f5 | 59 | { |
AndreaC | 1:af64df8411f5 | 60 | valorBuzzer = 0.5; // Se establece el ciclo de trabajo del buzzer, que es igual a encendido |
AndreaC | 1:af64df8411f5 | 61 | ledDeSensorMovimiento = 1; // Se prenden unos leds |
AndreaC | 1:af64df8411f5 | 62 | wait(0.3); // Establece un tiempo de espera para que el buzzer deje de sonar |
AndreaC | 1:af64df8411f5 | 63 | valorBuzzer = 0; // Se establece el ciclo de trabajo del buzzer, que es igual a apagado |
AndreaC | 1:af64df8411f5 | 64 | ledDeSensorMovimiento = 0; // Se apagan unos leds |
AndreaC | 1:af64df8411f5 | 65 | wait(0.3); // Establece un tiempo de espera para que el buzzer vuelva a sonar |
AndreaC | 1:af64df8411f5 | 66 | } |
AndreaC | 1:af64df8411f5 | 67 | timer.stop(); // Detiene el timer |
AndreaC | 1:af64df8411f5 | 68 | timer.reset(); // Reinicia el timer |
AndreaC | 1:af64df8411f5 | 69 | } |
AndreaC | 1:af64df8411f5 | 70 | |
AndreaC | 1:af64df8411f5 | 71 | int main() // Inicia el programa principal |
AndreaC | 1:af64df8411f5 | 72 | { |
AndreaC | 1:af64df8411f5 | 73 | |
AndreaC | 1:af64df8411f5 | 74 | bt.baud(9600); // Establece la comunicacion serial entre la KL25Z y el Bluethooth |
AndreaC | 1:af64df8411f5 | 75 | servo.period_ms(20); // Asigna un periodo de PWM en milisegundos, para poder utilizar el servo |
AndreaC | 1:af64df8411f5 | 76 | |
AndreaC | 1:af64df8411f5 | 77 | while(1) // Ciclo Infinito |
AndreaC | 1:af64df8411f5 | 78 | { |
AndreaC | 1:af64df8411f5 | 79 | if(bt.readable()) // Establece la conexion del bluethooth |
AndreaC | 1:af64df8411f5 | 80 | { |
AndreaC | 1:af64df8411f5 | 81 | char c = bt.getc(); // Recibe un caracter via bluethoth y lo asigna a una variable char |
AndreaC | 1:af64df8411f5 | 82 | |
AndreaC | 1:af64df8411f5 | 83 | bt.printf("%c\n\r",c); // Como respuesta, para verificar que la informacion llego a la KL25Z, |
AndreaC | 1:af64df8411f5 | 84 | // la imprime en la terminal del usuario |
AndreaC | 1:af64df8411f5 | 85 | if (c == 'w') |
AndreaC | 1:af64df8411f5 | 86 | { // Si el caracter mandado por el usuario es una "w"... |
AndreaC | 1:af64df8411f5 | 87 | |
AndreaC | 1:af64df8411f5 | 88 | servo.pulsewidth_us(1800); // Se mueve el servo a la posicion 180° |
AndreaC | 1:af64df8411f5 | 89 | bt.printf("Cochera Abierta\n\r"); // Se imprime en la terminal "Cochera Abierta" |
AndreaC | 1:af64df8411f5 | 90 | |
AndreaC | 1:af64df8411f5 | 91 | } |
AndreaC | 1:af64df8411f5 | 92 | if (c == 's') |
AndreaC | 1:af64df8411f5 | 93 | { // Si el caracter mandado por el usuario es una "s"... |
AndreaC | 1:af64df8411f5 | 94 | |
AndreaC | 1:af64df8411f5 | 95 | servo.pulsewidth_us(1000); // Se mueve el servo a la posicion 0° |
AndreaC | 1:af64df8411f5 | 96 | bt.printf("Cochera Cerrada\n\r"); // Se imprime en la terminal "Cochera Cerrada" |
AndreaC | 1:af64df8411f5 | 97 | } |
AndreaC | 1:af64df8411f5 | 98 | |
AndreaC | 1:af64df8411f5 | 99 | if( c == 'p') |
AndreaC | 1:af64df8411f5 | 100 | { // Si el caracter mandado por el usuario es una "p"... |
AndreaC | 1:af64df8411f5 | 101 | f_Buzzer(); // Se manda llamar la función f_Buzzer |
AndreaC | 1:af64df8411f5 | 102 | } |
AndreaC | 1:af64df8411f5 | 103 | |
AndreaC | 1:af64df8411f5 | 104 | if (c == 'm') |
AndreaC | 1:af64df8411f5 | 105 | { // Si el caracter mandado por el usuario es una "m"... |
AndreaC | 1:af64df8411f5 | 106 | |
AndreaC | 1:af64df8411f5 | 107 | bt.printf("Iluminacion Automatica Activada\r"); // Imprime en la terminal "Iluminacion Automatica Activada" |
AndreaC | 1:af64df8411f5 | 108 | |
AndreaC | 1:af64df8411f5 | 109 | while(c != 'v') |
AndreaC | 1:af64df8411f5 | 110 | { // Si el bluethooth lee la que variable "c" es "v", se sale de este apartado |
AndreaC | 1:af64df8411f5 | 111 | int valorSensorMovimiento = SensorMovimiento.read(); // Se lee el valor del sensor de movimiento |
AndreaC | 1:af64df8411f5 | 112 | if (valorSensorMovimiento == 0) // Si el valor es 0, significa que hay movimiento, por lo tanto... |
AndreaC | 1:af64df8411f5 | 113 | { |
AndreaC | 1:af64df8411f5 | 114 | f_SensorMovimiento(); // manda llamar la funcion de movimiento |
AndreaC | 1:af64df8411f5 | 115 | } |
AndreaC | 1:af64df8411f5 | 116 | if(bt.readable()) |
AndreaC | 1:af64df8411f5 | 117 | { // Se reestablece la conexión del bluethooth para solicitar o verificar si se cumple la opción para salir del while(c != 'v') |
AndreaC | 1:af64df8411f5 | 118 | c = bt.getc(); // Recibe un caracter via bluethoth y lo asigna a una variable |
AndreaC | 1:af64df8411f5 | 119 | ledDeSensorMovimiento = 0; // Apaga el led si se sale de esta sección del código |
AndreaC | 1:af64df8411f5 | 120 | } |
AndreaC | 1:af64df8411f5 | 121 | } |
AndreaC | 1:af64df8411f5 | 122 | bt.printf("Iluminacion Automatica Desactivada"); // Imprime en la terminal "Iluminacion Automatica Desactivada" |
AndreaC | 1:af64df8411f5 | 123 | } |
AndreaC | 1:af64df8411f5 | 124 | |
AndreaC | 1:af64df8411f5 | 125 | if (c == 'a') |
AndreaC | 1:af64df8411f5 | 126 | { // Si el caracter mandado por el usuario es una "a"... |
AndreaC | 1:af64df8411f5 | 127 | |
AndreaC | 1:af64df8411f5 | 128 | bt.printf("Sistema de Seguridad Activado\r"); // Imprime en la terminal "Sistema de Seguridad Activado" |
AndreaC | 1:af64df8411f5 | 129 | |
AndreaC | 1:af64df8411f5 | 130 | while(c != 'v') |
AndreaC | 1:af64df8411f5 | 131 | { // Cumple con la misma función que en - if (c == 'm') - |
AndreaC | 1:af64df8411f5 | 132 | int valorSensorMovimiento = SensorMovimiento.read(); // Se lee el valor del sensor de movimiento |
AndreaC | 1:af64df8411f5 | 133 | if (valorSensorMovimiento == 0) // Si el valor es 0, significa que hay movimiento, por lo tanto... |
AndreaC | 1:af64df8411f5 | 134 | { |
AndreaC | 1:af64df8411f5 | 135 | bt.printf("INTRUSO!"); // Imprime en la terminal "INTRUSO!" |
AndreaC | 1:af64df8411f5 | 136 | while (c != 'e') |
AndreaC | 1:af64df8411f5 | 137 | { // Si el bluethooth lee que el valor "c" es "v" se sale de este apartado |
AndreaC | 1:af64df8411f5 | 138 | f_Buzzer(); |
AndreaC | 1:af64df8411f5 | 139 | if(bt.readable()) |
AndreaC | 1:af64df8411f5 | 140 | { // Reestablece la conexion del bluethooth para solisitar/revisar si se cumple la opción para salir del while(c!='e') |
AndreaC | 1:af64df8411f5 | 141 | c = bt.getc(); |
AndreaC | 1:af64df8411f5 | 142 | ledDeSensorMovimiento = 0; |
AndreaC | 1:af64df8411f5 | 143 | } |
AndreaC | 1:af64df8411f5 | 144 | } |
AndreaC | 1:af64df8411f5 | 145 | } |
AndreaC | 1:af64df8411f5 | 146 | if(bt.readable()) |
AndreaC | 1:af64df8411f5 | 147 | { // Reestablece la conexion del bluethooth para solisitar/revisar si se cumple la opción para salir del while(c!='v') |
AndreaC | 1:af64df8411f5 | 148 | c = bt.getc(); |
AndreaC | 1:af64df8411f5 | 149 | ledDeSensorMovimiento = 0; |
AndreaC | 1:af64df8411f5 | 150 | } |
AndreaC | 1:af64df8411f5 | 151 | } |
AndreaC | 1:af64df8411f5 | 152 | bt.printf("Alarma Desactivada"); // Imprime en la terminal "Alarma Desactivada" |
AndreaC | 1:af64df8411f5 | 153 | } |
AndreaC | 1:af64df8411f5 | 154 | |
AndreaC | 1:af64df8411f5 | 155 | if(c =='f') |
AndreaC | 1:af64df8411f5 | 156 | { // Si el caracter mandado por el usuario es una "f"... |
AndreaC | 1:af64df8411f5 | 157 | bt.printf("Fotoresistencia Activada\r"); //Imprime en la terminal "Fotoresistencia Activada" |
AndreaC | 1:af64df8411f5 | 158 | |
AndreaC | 1:af64df8411f5 | 159 | while(c != 'v') |
AndreaC | 1:af64df8411f5 | 160 | { // Cumple con la misma función que en - if (c == 'm') - |
AndreaC | 1:af64df8411f5 | 161 | f_Fotoresistencia(); // Manda llamar la funcion de la resistencia |
AndreaC | 1:af64df8411f5 | 162 | |
AndreaC | 1:af64df8411f5 | 163 | if(bt.readable()) |
AndreaC | 1:af64df8411f5 | 164 | { // Reestablece la conexion del bluethooth para solisitar/revisar si se cumple la opción para salir del while(c!='v') |
AndreaC | 1:af64df8411f5 | 165 | c = bt.getc(); |
AndreaC | 1:af64df8411f5 | 166 | ledDeFotoresistencia=0; |
AndreaC | 1:af64df8411f5 | 167 | } |
AndreaC | 1:af64df8411f5 | 168 | } |
AndreaC | 1:af64df8411f5 | 169 | bt.printf("Fotoresistencia DESACTIVADA\n\r"); // Imprime en la terminal "Fotoresistencia DESACTIVADA" |
AndreaC | 1:af64df8411f5 | 170 | } |
AndreaC | 1:af64df8411f5 | 171 | } |
AndreaC | 1:af64df8411f5 | 172 | } |
AndreaC | 1:af64df8411f5 | 173 | } |