Mendez Vilchis Emilio. Sistema de deteccion agua a traves de sensores infrarrojos (receptor y emisor) y llenado en un recipiente.

Dependencies:   mbed

Committer:
Emenvil
Date:
Fri May 31 00:50:05 2019 +0000
Revision:
0:4dcbc10d139b
Sistema de deteccion de agua (con sensores infrarrojos) y llenado de un recipiente a traves de motores

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Emenvil 0:4dcbc10d139b 1 /* ###########################################################################
Emenvil 0:4dcbc10d139b 2 ** Archivo : main.c
Emenvil 0:4dcbc10d139b 3 ** Proyecto : FRDM-KL46Z_Plantilla
Emenvil 0:4dcbc10d139b 4 ** Procesador : MKL46Z256VLL4
Emenvil 0:4dcbc10d139b 5 ** Herramienta : Mbed
Emenvil 0:4dcbc10d139b 6 ** Version : Driver 01.01
Emenvil 0:4dcbc10d139b 7 ** Compilador : GNU C Compiler
Emenvil 0:4dcbc10d139b 8 ** Fecha/Hora : 14-07-2015, 11:48, # CodeGen: 0
Emenvil 0:4dcbc10d139b 9 ** Descripción :
Emenvil 0:4dcbc10d139b 10 ** Este proyecto hace el monitoreo de un recipiente con agua, mediante sensores infrarrojos emisor y receptor, para encender motores que
Emenvil 0:4dcbc10d139b 11 ** facilitan el llenado de este.
Emenvil 0:4dcbc10d139b 12 ** This module contains user's application code.
Emenvil 0:4dcbc10d139b 13 ** Componentes : GPIO, Timer, etc .
Emenvil 0:4dcbc10d139b 14 ** Configuraciones : Includes, Stacks y Drivers externos
Emenvil 0:4dcbc10d139b 15 ** Autores : Méndez Vilchis Emilio
Emenvil 0:4dcbc10d139b 16 ** ATEAM Development Group:
Emenvil 0:4dcbc10d139b 17 ** - Antulio Morgado Valle
Emenvil 0:4dcbc10d139b 18 **
Emenvil 0:4dcbc10d139b 19 ** Versión : Beta
Emenvil 0:4dcbc10d139b 20 ** Revisión : A
Emenvil 0:4dcbc10d139b 21 ** Release : 0
Emenvil 0:4dcbc10d139b 22 ** Bugs & Fixes :
Emenvil 0:4dcbc10d139b 23 ** Date : 18/05/2019
Emenvil 0:4dcbc10d139b 24 ** Added support for Led_RGB
Emenvil 0:4dcbc10d139b 25 ** 22/09/2018
Emenvil 0:4dcbc10d139b 26 ** Added LCD Menu, Beta version (with bugs)
Emenvil 0:4dcbc10d139b 27 **
Emenvil 0:4dcbc10d139b 28 * ###########################################################################/
Emenvil 0:4dcbc10d139b 29 /*
Emenvil 0:4dcbc10d139b 30 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Emenvil 0:4dcbc10d139b 31 : Includes
Emenvil 0:4dcbc10d139b 32 ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Emenvil 0:4dcbc10d139b 33 */
Emenvil 0:4dcbc10d139b 34 #include "mbed.h"
Emenvil 0:4dcbc10d139b 35
Emenvil 0:4dcbc10d139b 36
Emenvil 0:4dcbc10d139b 37 DigitalIn sens1(PTE31); //inicializa canal digital para sensor 1
Emenvil 0:4dcbc10d139b 38 DigitalIn sens2(PTE19); //inicializa canal digital para sensor 2
Emenvil 0:4dcbc10d139b 39 DigitalIn sens3(PTE18); //inicializa canal digital para sensor 3
Emenvil 0:4dcbc10d139b 40
Emenvil 0:4dcbc10d139b 41 DigitalOut gseg(PTE20); // Inicializa el segmento g del display de catodo comun
Emenvil 0:4dcbc10d139b 42 DigitalOut fseg(PTE21); // Inicializa el segmento f del display de catodo comun
Emenvil 0:4dcbc10d139b 43 DigitalOut aseg(PTE22); // Inicializa el segmento a del display de catodo comun
Emenvil 0:4dcbc10d139b 44 DigitalOut bseg(PTE23); // Inicializa el segmento b del display de catodo comun
Emenvil 0:4dcbc10d139b 45 DigitalOut eseg(PTE17); // Inicializa el segmento e del display de catodo comun
Emenvil 0:4dcbc10d139b 46 DigitalOut dseg(PTE16); // Inicializa el segmento d del display de catodo comun
Emenvil 0:4dcbc10d139b 47 DigitalOut cseg(PTE6); // Inicializa el segmento c del display de catodo comun
Emenvil 0:4dcbc10d139b 48
Emenvil 0:4dcbc10d139b 49 DigitalOut motor1(PTB18); // Inicializa motor 1
Emenvil 0:4dcbc10d139b 50 DigitalOut motor2(PTB19); // Inicializa motor 2
Emenvil 0:4dcbc10d139b 51
Emenvil 0:4dcbc10d139b 52 DigitalOut Buzzer(PTE30); // Inicializa el buzzer (indica al usuario cuando el agua llega al tope del recipiente)
Emenvil 0:4dcbc10d139b 53
Emenvil 0:4dcbc10d139b 54 //t cero=0;
Emenvil 0:4dcbc10d139b 55 //t uno=1;
Emenvil 0:4dcbc10d139b 56
Emenvil 0:4dcbc10d139b 57 int main()
Emenvil 0:4dcbc10d139b 58 {
Emenvil 0:4dcbc10d139b 59 while(1) { //ciclo infinito, para la connstate lectura de los datos de entrada
Emenvil 0:4dcbc10d139b 60 if(sens1.read()==0) { // Recordando que el sensor receptor emisor al no tener una interrupcion entrela señal delel emisor y receptor nos regresara un 1
Emenvil 0:4dcbc10d139b 61 // Al interferir la señal de este se marcara un 0 y por lo tanto, al tener el primer sensor tapado podemos inferir que el nivel de agua en el
Emenvil 0:4dcbc10d139b 62 //sensor esta en el nivel mas bajo.
Emenvil 0:4dcbc10d139b 63 gseg=1;
Emenvil 0:4dcbc10d139b 64 fseg=0;
Emenvil 0:4dcbc10d139b 65 aseg=1; ////// el display marca un 2 al mandar 1 a los segmentos de este
Emenvil 0:4dcbc10d139b 66 bseg=1;
Emenvil 0:4dcbc10d139b 67 eseg=1;
Emenvil 0:4dcbc10d139b 68 dseg=1;
Emenvil 0:4dcbc10d139b 69 cseg=0;
Emenvil 0:4dcbc10d139b 70
Emenvil 0:4dcbc10d139b 71
Emenvil 0:4dcbc10d139b 72 motor1=1; // Se procede a encender ambos motores para hacer mas rapido el llenado del agua
Emenvil 0:4dcbc10d139b 73 motor2=1;
Emenvil 0:4dcbc10d139b 74
Emenvil 0:4dcbc10d139b 75 }
Emenvil 0:4dcbc10d139b 76
Emenvil 0:4dcbc10d139b 77 else if (sens1.read()==0 && sens2.read()==0){ /// al tener interrupcion de la señal en los primeros 2 sensores (nivel inferior y nivel medio)
Emenvil 0:4dcbc10d139b 78 gseg=0;
Emenvil 0:4dcbc10d139b 79 fseg=0;
Emenvil 0:4dcbc10d139b 80 aseg=0;
Emenvil 0:4dcbc10d139b 81 bseg=1; // imprime 1 en el display, indicando que solo un motor trabajara
Emenvil 0:4dcbc10d139b 82 eseg=0;
Emenvil 0:4dcbc10d139b 83 dseg=0;
Emenvil 0:4dcbc10d139b 84 cseg=1;
Emenvil 0:4dcbc10d139b 85 motor1=1; // el motor 1 sigue su proceso de llenado
Emenvil 0:4dcbc10d139b 86 motor2=0; // el motor 2 se apaga, pues no es necesario que el recipiente siga llenandose con la misma rapidez
Emenvil 0:4dcbc10d139b 87 }
Emenvil 0:4dcbc10d139b 88
Emenvil 0:4dcbc10d139b 89 else if (sens1.read()==0 && sens2.read()==0 && sens3.read()==0){ // si los 3 sensores tienen su señal interrumpida, sabremos que estamos en el nivel 3
Emenvil 0:4dcbc10d139b 90
Emenvil 0:4dcbc10d139b 91 gseg=1;
Emenvil 0:4dcbc10d139b 92 fseg=1;
Emenvil 0:4dcbc10d139b 93 aseg=1;
Emenvil 0:4dcbc10d139b 94 bseg=0; //// estamos en el nivel 3 y se le manda 1 a los segmentos que se requieren para marcar este nivel en el diaplay
Emenvil 0:4dcbc10d139b 95 eseg=1;
Emenvil 0:4dcbc10d139b 96 dseg=1;
Emenvil 0:4dcbc10d139b 97 cseg=0;
Emenvil 0:4dcbc10d139b 98
Emenvil 0:4dcbc10d139b 99
Emenvil 0:4dcbc10d139b 100 Buzzer=1; /// Se acciona el buzzer, como aviso al usuario, el recipiente esta lleno}
Emenvil 0:4dcbc10d139b 101
Emenvil 0:4dcbc10d139b 102 motor1=0; /// no es necesario continuar el llenado del recipiente, se procede a mandar 0 a los motores, apagandolos.
Emenvil 0:4dcbc10d139b 103 motor2=0;
Emenvil 0:4dcbc10d139b 104 }
Emenvil 0:4dcbc10d139b 105 }
Emenvil 0:4dcbc10d139b 106
Emenvil 0:4dcbc10d139b 107 }