ESTE PROGRAMA VA A CONTROLAR LAS VARIABLES DE HUMEDAD Y TEMPERATURA SET POINT POR EL USUARIO A TRAVES DE UNA INTERFAZ
Dependencies: mbed TextLCD Keypad DS1307 DHT11
main.cpp
00001 ////////////////////////////////// LIBRERIAS DEL PROYECTO/////////////////////////////////////////////////////// 00002 #include "mbed.h"// libreria principal mbed 00003 #include "TextLCD.h"// libreria lcd 00004 #include "Keypad.h"// libreria Keypad 00005 #include "DHT11.h"// libreria sensor de humedad y temperatura 00006 #include "math.h"// libreria matematicas 00007 #include "ds1307.h"// libreria rtc ds1307 00008 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// 00009 ///////////////////////////////// CONFIGURACION DE GPIO /////////////////////////////////////////////////////// 00010 Serial pc(PA_2,PA_3);// configuracion de pines de Tx,Rx de comunicacion serial 00011 DigitalOut myled(PD_13);// configura salida digital y asigna a myled al pin d13 00012 TextLCD lcd(PB_7,PB_8,PB_15,PB_14,PB_13,PB_12,TextLCD:: LCD16x2);// configuracion de conexion de lcd 00013 Keypad teclado(PC_8,PC_11,PC_7,PC_6,PB_0,PD_6,PD_7,PB_3);//configuraciones de pines de teclado 00014 DHT11 dato(PC_5);// configuracion de pin de data sensor 00015 DS1307 my1307(PB_7,PB_8);// configuracion de pines de comunicacion I2C(sda,scl) 00016 Ticker flipper1;// configuracion de funcion ticker(interrupcion) 00017 Ticker flipper2;// configuracion de funcion ticker(interrupcion) 00018 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// 00019 ////////////////////////// DECLARACION DE VARIABLES GLOBALES //////////////////////////////////////////////// 00020 int rtc=0; 00021 int sec=0; 00022 int mins=0; 00023 int hours=0; 00024 int day=0; 00025 int date=0; 00026 int month=0; 00027 int year=0; 00028 int muestreo; 00029 int z; 00030 char key;// variable usada en el teclado 00031 int released;// variable usada en el teclado 00032 int s; // variable usada en rutina sensor 00033 int temp;// 00034 int temp1;// 00035 int hum;// 00036 int avrtemp;// 00037 int avrhum;// 00038 int conteo;// 00039 //////////////////////////////Declaracion de funciones/////////////////////////////////////////////////////////// 00040 void test_rw(int test); 00041 void lecturads1307(); 00042 00043 ///////////////////////////////////////////////////////////////////////////////////////////////////////////////// 00044 ////////////////////////////////////////// SUB-RUTina lectura DS1307///////////////////////////////////////////// 00045 void lecturads1307(){ 00046 my1307.gettime(&sec,&mins,&hours,&day,&date,&month,&year); 00047 pc.printf("DATE:\r"); 00048 pc.printf("%.2D",day); 00049 pc.printf(":%.2D",month); 00050 pc.printf(":%.2D\r",year); 00051 pc.printf(" %.2D",hours); 00052 pc.printf(":%.2D",mins); 00053 pc.printf(":%.2D\n\r",sec); 00054 } 00055 //////////////////////////////////////////////////////////////////////////////////////////////////////////////// 00056 ////////////////////////////////////////// SUB-RUTina INTERRUPCION2///////////////////////////////////////////// 00057 void flip2(){ 00058 conteo=conteo + 1; 00059 temp1=dato.readTemperature(); 00060 muestreo=muestreo+temp1; 00061 if (conteo==1000){ 00062 avrtemp=(muestreo/conteo) ; 00063 pc.printf("*PROMEDIO DE TEMPERATURA: \r"); 00064 pc.printf("%2d C \r ",avrtemp); 00065 conteo=0; 00066 } 00067 } 00068 00069 //////////////////////////////////////////////////////////////////////////////////////////////////////////////// 00070 ////////////////////////////////////////// SUB-RUTina INTERRUPCION1///////////////////////////////////////////// 00071 void flip1(){ 00072 00073 pc.printf("**********SE REALIZO REGISTRO DE DATOS********** \n\r"); 00074 pc.printf("Temperatura:%d C \r ",dato.readTemperature()); 00075 pc.printf("Humedad:%d Hr \r ",dato.readHumidity()); 00076 pc.printf("DATE:\r"); 00077 pc.printf("%.2D",day); 00078 pc.printf(":%.2D",month); 00079 pc.printf(":%.2D\r",year); 00080 pc.printf(" %.2D",hours); 00081 pc.printf(":%.2D",mins); 00082 pc.printf(":%.2D\n\r",sec); 00083 pc.printf("**********FIN DE REGISTRO DE DATOS**********\n\r"); 00084 00085 } 00086 ////////////////////////////////////////////////////////////////////////////////////////////////////////////// 00087 ////////////////////////////////////////// SUB-RUTina test DS1307///////////////////////////////////////////// 00088 void test_rw(int test){ 00089 if(test==0) pc.printf("Last R/W operation passed\n\r"); 00090 else pc.printf("Last R/W operation failed\n\r"); 00091 } 00092 ////////////////////////////////////////////////////////////////////////////////////////////////////////////// 00093 ///////////////////////// SUB-RUTina DS1307 calibracion de tiempo///////////////////////////////////////////// 00094 void DS1307RTC(){ 00095 int junk=0; 00096 sec= 40; 00097 mins= 40; 00098 hours=10; 00099 day=6; 00100 date=15; 00101 month=2; 00102 year=20; 00103 test_rw(my1307.settime(sec,mins,hours,day,date,month,year)); 00104 pc.printf("seconds set are %.2D\n\r",sec); 00105 pc.printf("minutes set are %.2D\n\r",mins); 00106 pc.printf("hours set are %.2D\n\r",hours); 00107 pc.printf("day set are %.2D\n\r",day); 00108 pc.printf("date set are %.2D\n\r",date); 00109 pc.printf("month set are %.2D\n\r",month); 00110 pc.printf("year set are %.2D\n\r",year); 00111 wait(3); 00112 00113 //while(1){ 00114 test_rw(my1307.gettime(&sec,&mins,&hours,&day,&date,&month,&year)); 00115 pc.printf("seconds set are %.2D \n\r",sec); 00116 pc.printf("minutes set are %.2D\n\r",mins); 00117 pc.printf("hours set are %.2D\n\r",hours); 00118 pc.printf("day set are %.2D\n\r",day); 00119 pc.printf("date set are %.2D\n\r",date); 00120 pc.printf("month set are %.2D\n\r",month); 00121 pc.printf("year set are %.2D\n\r",year); 00122 00123 junk= 0x39; 00124 test_rw(my1307.write(0x20,junk)); 00125 pc.printf("Value written to register 0x20 %.2x \n\r",junk); 00126 junk=0; 00127 test_rw(my1307.read(0x20,&junk)); 00128 pc.printf("Value read from register 0x20 %.2x \n\r",junk); 00129 wait(1); 00130 rtc=1; 00131 //} 00132 //} 00133 } 00134 00135 //////////////////////////////////////////////////////////////////////////////////////////////////////////////// 00136 ////////////////////////////////////////// SUB-RUTina keypad//////////////////////////////////////////////////// 00137 void keypad1(){ 00138 // while(1){ 00139 key=teclado.ReadKey(); 00140 if(key== '\0') 00141 released=1; 00142 if((key!= '\0')&& (released==1)){ 00143 lcd.printf("%c\n",key); 00144 released=0; 00145 } 00146 //} 00147 } 00148 00149 //////////////////////////////////////////////////////////////////////////////////////////////////////////////// 00150 ////////////////////////////////////////// SUB-RUTina SENSORE DHT11///////////////////////////////////////////// 00151 void sensor(){ 00152 s=dato.readData(); 00153 if (s != DHT11::OK){ 00154 lcd.printf("ERROR SENSOR\r\n"); 00155 } 00156 else{ 00157 lcd.cls(); 00158 return; 00159 } 00160 pc.printf("Temperatura:%d C \r ",dato.readTemperature()); 00161 //lcd.locate(0,1); 00162 //lcd.printf( "Hr:%d hr SP: 75 ",dato.readHumidity()); 00163 pc.printf("Humedad:%d Hr \r ",dato.readHumidity()); 00164 } 00165 00166 ////////////////////////////////////////////////////////////////////////////////////////////////////////////// 00167 ////////////////////////////////////////// SUB-RUTINA MENU/////////////////////////////////////////////////// 00168 void menu(){ 00169 //char tr; 00170 while(1){ 00171 key=teclado.ReadKey(); 00172 keypad1(); 00173 if(key=='D' ){ 00174 lcd.cls(); 00175 return; 00176 } 00177 //tr=key; 00178 //void inicial(); 00179 lcd.locate(0,0);// LOCALIZA INICIO DE TEXTO EN COLUMNAS Y FILAS 00180 lcd.printf( " Menu " ); 00181 lcd.locate(0,1); 00182 // lcd.printf( " Configuracion " ); 00183 //lcd.printf("%c\n", tr ); 00184 //wait(3); 00185 //lcd.cls();//borra caracters 00186 if((key!= '\0')&& (released==1)){ 00187 lcd.printf("%c\n",key); 00188 released=0; 00189 } 00190 } 00191 00192 } 00193 00194 /////////////////////////////////////////////////////////////////////////////////////////////////////// 00195 //////////////////////////////////// SUB-RUTINA INICIAL /////////////////////////////////////////////// 00196 void inicial(){ 00197 while(1){ 00198 //lcd.cls(); 00199 //keypad1(); 00200 00201 //if ( key=='A'){ 00202 //lcd.cls(); //borra caracters 00203 //menu(); 00204 //} 00205 00206 sensor(); 00207 lecturads1307(); 00208 //temp:dato.readTemperature(); 00209 //hum: dato.readHumidity(); 00210 //lcd.locate(0,0); // LOCALIZA INICIO DE TEXTO EN COLUMNAS Y FILAS 00211 //lcd.printf( "T :%d C SP: 40",dato.readTemperature()); 00212 //pc.printf("Temperatura:%d C \r ",dato.readTemperature()); 00213 //lcd.locate(0,1); 00214 //lcd.printf( "Hr:%d hr SP: 75 ",dato.readHumidity()); 00215 //pc.printf("Humedad:%d Hr \r ",dato.readHumidity()); 00216 wait(1); 00217 00218 } // cierra while 00219 } // cierra rutina 00220 00221 ///////////////////////////////////////////////////////////////////////////////////////////////////// 00222 //////////////////////////////////// RUTINA PRINCIPAL ////////////////////////////////////////////// 00223 int main() { 00224 z=0; 00225 conteo=0; 00226 muestreo=0; 00227 avrtemp=0; 00228 avrhum=0; 00229 released=1; 00230 //lcd.printf("helllooo people");// escribe caracteres en el lcd 00231 flipper1.attach(&flip1,20.0); 00232 flipper2.attach(&flip2,0.001); 00233 while(1) { 00234 00235 //if (rtc==0) DS1307RTC(); 00236 // lcd.cls();//borra caracters 00237 //lcd.locate(0,0);// LOCALIZA INICIO DE TEXTO EN COLUMNAS Y FILAS 00238 //lcd.printf( " Proyecto " ); 00239 pc.printf("PROYECTO TUTORIA\n\r " ); 00240 //lcd.locate(0,1); 00241 //lcd.printf( " Tutoria " ); 00242 //pc.printf("Tutoria \n\r "); 00243 wait(3); 00244 //lcd.cls();//borra caracters 00245 //lcd.locate(0,0); 00246 //lcd.printf( " Sistemas " ); 00247 pc.printf("SISTEMAS MICROPROCESADOS \n\r "); 00248 pc.printf("GEOVANNY GARCIA \n\r "); 00249 00250 lcd.locate(0,1); 00251 lcd.printf( "Microprocesados " ); 00252 //pc.printf("MICROPORCESADOS \n\r "); 00253 wait(2); 00254 //lcd.cls();//borra caracters 00255 inicial(); 00256 00257 } 00258 00259 } 00260 00261 /////////////////////////////////////////////////////////////////////////////////////////////////////// 00262 00263 00264
Generated on Sun Jul 17 2022 19:16:04 by 1.7.2