Mendez Vilchis Emilio. Sistema de deteccion agua a traves de sensores infrarrojos (receptor y emisor) y llenado en un recipiente.
Dependencies: mbed
main.cpp@0:4dcbc10d139b, 2019-05-31 (annotated)
- 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?
User | Revision | Line number | New 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 | } |