Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed TextLCD Keypad DS1307 DHT11
Revision 2:0edb81388d5f, committed 2020-02-16
- Comitter:
- geogarcia
- Date:
- Sun Feb 16 18:25:15 2020 +0000
- Parent:
- 1:2377110920ce
- Commit message:
- El proyecto trata de un datalogger de humedad y temperatura con registro en tiempo real, empleando el sensor DHT11, el modulo RTC DS1307, placa STM32M4 Discovery
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DS1307.lib Sun Feb 16 18:25:15 2020 +0000 @@ -0,0 +1,1 @@ +https://os.mbed.com/users/harrypowers/code/DS1307/#c3e4da8feb10
--- a/SDFileSystem.lib Fri Feb 07 00:09:10 2020 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +0,0 @@ -https://os.mbed.com/users/neilt6/code/SDFileSystem/#e4d2567200db
--- a/main.cpp Fri Feb 07 00:09:10 2020 +0000
+++ b/main.cpp Sun Feb 16 18:25:15 2020 +0000
@@ -1,37 +1,169 @@
////////////////////////////////// LIBRERIAS DEL PROYECTO/////////////////////////////////////////////
-
#include "mbed.h"// libreria principal mbed
#include "TextLCD.h"// libreria lcd
#include "Keypad.h"// libreria Keypad
#include "DHT11.h"// libreria sensor de humedad y temperatura
-
+//include "clase.h"
+#include "math.h"
+#include "ds1307.h"
//////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////// CONFIGURACION DE GPIO ////////////////////////////////////////////
-
+Serial pc(PA_2,PA_3);
DigitalOut myled(PD_13);// configura salida digital y asigna a myled al pin d13
TextLCD lcd(PB_7,PB_8,PB_15,PB_14,PB_13,PB_12,TextLCD:: LCD16x2);// configuracion de conexion de lcd
Keypad teclado(PC_8,PC_11,PC_7,PC_6,PB_0,PD_6,PD_7,PB_3);
DHT11 dato(PC_5);
+DS1307 my1307(PB_7,PB_8);
+Ticker flipper1;
+Ticker flipper2;
/////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////// DECLARACION DE VARIABLES GLOBALES ////////////////////////////////////
-
+int rtc=0;
+int sec=0;
+int mins=0;
+int hours=0;
+int day=0;
+int date=0;
+int month=0;
+int year=0;
+int muestreo;
int z;
char key;
int released;
int s; // variable usada en rutina sensor
int temp;
+int temp1;
int hum;
-///////////////////////////////////////////////////////////////////////////////////////////////////////
+int avrtemp;
+int avrhum;
+int conteo;
+//////////////////////////////Declaracion de funciones///////////////////////////////////////////////////////////
+
+void test_rw(int test);
+
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////// SUB-RUTina lectura DS1307/////////////////////////////////////////////
+ void lecturads1307(){
+ // test_rw(my1307.gettime(&sec,&mins,&hours,&day,&date,&month,&year));
+ my1307.gettime(&sec,&mins,&hours,&day,&date,&month,&year);
+ /*pc.printf("seconds set are %.2D \n\r",sec);
+ pc.printf("minutes set are %.2D\n\r",mins);
+ pc.printf("hours set are %.2D\n\r",hours);
+ pc.printf("day set are %.2D\n\r",day);
+ pc.printf("date set are %.2D\n\r",date);
+ pc.printf("month set are %.2D\n\r",month);
+ pc.printf("year set are %.2D\n\r",year);
+ wait(1);*/
+ pc.printf("DATE:\r");
+ pc.printf("%.2D",day);
+ pc.printf(":%.2D",month);
+ pc.printf(":%.2D\r",year);
+ pc.printf(" %.2D",hours);
+ pc.printf(":%.2D",mins);
+ pc.printf(":%.2D\n\r",sec);
+ }
+//////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////// SUB-RUTina INTERRUPCION2/////////////////////////////////////////////
+void flip2(){
+ conteo=conteo + 1;
+ temp1=dato.readTemperature();
+ muestreo=muestreo+temp1;
+
+
+
+ if (conteo==1000){
+ avrtemp=(muestreo/conteo) ;
+ pc.printf("*PROMEDIO DE TEMPERATURA: \r");
+ pc.printf("%2d C \r ",avrtemp);
+ conteo=0;
+ }
+
+}
+
+
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+////////////////////////////////////////// SUB-RUTina INTERRUPCION1/////////////////////////////////////////////
+void flip1(){
+
+ pc.printf("**********SE REALIZO REGISTRO DE DATOS********** \n\r");
+ pc.printf("Temperatura:%d C \r ",dato.readTemperature());
+ pc.printf("Humedad:%d Hr \r ",dato.readHumidity());
+ pc.printf("DATE:\r");
+ pc.printf("%.2D",day);
+ pc.printf(":%.2D",month);
+ pc.printf(":%.2D\r",year);
+ pc.printf(" %.2D",hours);
+ pc.printf(":%.2D",mins);
+ pc.printf(":%.2D\n\r",sec);
+ pc.printf("**********FIN DE REGISTRO DE DATOS**********\n\r");
+
+
+
+}
+
+
+/////////////////////////////////////////////////////////////////////////////////////////////////////////////
+////////////////////////////////////////// SUB-RUTina test DS1307/////////////////////////////////////////////
+ void test_rw(int test){
+ if(test==0) pc.printf("Last R/W operation passed\n\r");
+ else pc.printf("Last R/W operation failed\n\r");
+ }
+//////////////////////////////////////////////////////////////////////////////////////////////////////
+///////////////////////// SUB-RUTina DS1307 calibracion de tiempo/////////////////////////////////////////////
+ void DS1307RTC(){
+ int junk=0;
+ sec= 40;
+ mins= 40;
+ hours=10;
+ day=6;
+ date=15;
+ month=2;
+ year=20;
+ test_rw(my1307.settime(sec,mins,hours,day,date,month,year));
+ pc.printf("seconds set are %.2D\n\r",sec);
+ pc.printf("minutes set are %.2D\n\r",mins);
+ pc.printf("hours set are %.2D\n\r",hours);
+ pc.printf("day set are %.2D\n\r",day);
+ pc.printf("date set are %.2D\n\r",date);
+ pc.printf("month set are %.2D\n\r",month);
+ pc.printf("year set are %.2D\n\r",year);
+ wait(3);
+
+ //while(1){
+ test_rw(my1307.gettime(&sec,&mins,&hours,&day,&date,&month,&year));
+ pc.printf("seconds set are %.2D \n\r",sec);
+ pc.printf("minutes set are %.2D\n\r",mins);
+ pc.printf("hours set are %.2D\n\r",hours);
+ pc.printf("day set are %.2D\n\r",day);
+ pc.printf("date set are %.2D\n\r",date);
+ pc.printf("month set are %.2D\n\r",month);
+ pc.printf("year set are %.2D\n\r",year);
+
+ junk= 0x39;
+ test_rw(my1307.write(0x20,junk));
+ pc.printf("Value written to register 0x20 %.2x \n\r",junk);
+ junk=0;
+ test_rw(my1307.read(0x20,&junk));
+ pc.printf("Value read from register 0x20 %.2x \n\r",junk);
+ wait(1);
+ rtc=1;
+ //}
+ //}
+ }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////// SUB-RUTina keypad/////////////////////////////////////////////
void keypad1(){
-
+ // while(1){
key=teclado.ReadKey();
if(key== '\0')
released=1;
if((key!= '\0')&& (released==1)){
- //lcd.printf("%c\n",key);
+ lcd.printf("%c\n",key);
released=0;
- }
+ }
+ //}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -47,6 +179,10 @@
}
+ pc.printf("Temperatura:%d C \r ",dato.readTemperature());
+ //lcd.locate(0,1);
+ //lcd.printf( "Hr:%d hr SP: 75 ",dato.readHumidity());
+ pc.printf("Humedad:%d Hr \r ",dato.readHumidity());
}
@@ -54,22 +190,29 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////// SUB-RUTINA MENU/////////////////////////////////////////////
void menu(){
+ //char tr;
while(1){
-
+ key=teclado.ReadKey();
keypad1();
+
if(key=='D' ){
lcd.cls();
return;
}
+ //tr=key;
//void inicial();
lcd.locate(0,0);// LOCALIZA INICIO DE TEXTO EN COLUMNAS Y FILAS
lcd.printf( " Menu " );
lcd.locate(0,1);
- lcd.printf( " Configuracion " );
+ // lcd.printf( " Configuracion " );
+ //lcd.printf("%c\n", tr );
//wait(3);
//lcd.cls();//borra caracters
-
+ if((key!= '\0')&& (released==1)){
+ lcd.printf("%c\n",key);
+ released=0;
+ }
}
}
@@ -79,23 +222,26 @@
void inicial(){
while(1){
//lcd.cls();
- keypad1();
+ //keypad1();
- if ( key=='A'){
- lcd.cls(); //borra caracters
- menu();
- }
+ //if ( key=='A'){
+ //lcd.cls(); //borra caracters
+ //menu();
+ //}
sensor();
+ lecturads1307();
//temp:dato.readTemperature();
//hum: dato.readHumidity();
- lcd.locate(0,0); // LOCALIZA INICIO DE TEXTO EN COLUMNAS Y FILAS
- lcd.printf( "T :%d C SP: 40",dato.readTemperature());
- lcd.locate(0,1);
- lcd.printf( "Hr:%d hr SP: 75 ",dato.readHumidity());
- //wait(0.1);
+ //lcd.locate(0,0); // LOCALIZA INICIO DE TEXTO EN COLUMNAS Y FILAS
+ //lcd.printf( "T :%d C SP: 40",dato.readTemperature());
+ //pc.printf("Temperatura:%d C \r ",dato.readTemperature());
+ //lcd.locate(0,1);
+ //lcd.printf( "Hr:%d hr SP: 75 ",dato.readHumidity());
+ //pc.printf("Humedad:%d Hr \r ",dato.readHumidity());
+ wait(1);
} // cierra while
} // cierra rutina
@@ -104,23 +250,36 @@
//////////////////////////////////// RUTINA PRINCIPAL //////////////////////////////////////////////
int main() {
z=0;
+ conteo=0;
+ muestreo=0;
+ avrtemp=0;
+ avrhum=0;
released=1;
//lcd.printf("helllooo people");// escribe caracteres en el lcd
-
+ flipper1.attach(&flip1,20.0);
+ flipper2.attach(&flip2,0.001);
while(1) {
+
+ //if (rtc==0) DS1307RTC();
// lcd.cls();//borra caracters
- lcd.locate(0,0);// LOCALIZA INICIO DE TEXTO EN COLUMNAS Y FILAS
- lcd.printf( " Proyecto " );
- lcd.locate(0,1);
- lcd.printf( " Tutoria " );
+ //lcd.locate(0,0);// LOCALIZA INICIO DE TEXTO EN COLUMNAS Y FILAS
+ //lcd.printf( " Proyecto " );
+ pc.printf("PROYECTO TUTORIA\n\r " );
+ //lcd.locate(0,1);
+ //lcd.printf( " Tutoria " );
+ //pc.printf("Tutoria \n\r ");
wait(3);
- lcd.cls();//borra caracters
- lcd.locate(0,0);
- lcd.printf( " Sistemas " );
+ //lcd.cls();//borra caracters
+ //lcd.locate(0,0);
+ //lcd.printf( " Sistemas " );
+ pc.printf("SISTEMAS MICROPROCESADOS \n\r ");
+ pc.printf("GEOVANNY GARCIA \n\r ");
+
lcd.locate(0,1);
lcd.printf( "Microprocesados " );
- wait(3);
- lcd.cls();//borra caracters
+ //pc.printf("MICROPORCESADOS \n\r ");
+ wait(2);
+ //lcd.cls();//borra caracters
inicial();
}