Software of my humidity rate controller internship project
Dependencies: DS1307 TextLCD mbed
Fork of HRController by
Diff: main.cpp
- Revision:
- 3:e800a8237746
- Parent:
- 2:37cf942d5ee6
- Child:
- 5:438327c39586
--- a/main.cpp Tue Jun 19 07:57:28 2018 +0000 +++ b/main.cpp Fri Jun 29 08:49:58 2018 +0000 @@ -1,16 +1,16 @@ #include "mbed.h" #include "TextLCD.h" +#include "ds1307.h" Serial pc(USBTX, USBRX); // tx, rx TextLCD lcd(PA_10,PB_3,PB_5,PB_4,PB_10,PA_8); // rs, e, d4-d7 +DS1307 my1307(D14,D15); AnalogIn capteur(PA_5); DigitalIn bouton(USER_BUTTON); DigitalOut myled(LED1); -DigitalOut alarme(D9); +DigitalOut alarme(PB_8); DigitalOut ledverte(PB_9); -I2C i2c(PC_1, PC_0); -const int DS3231_ADDR = 0xd0; FILE *fp; char a='%'; @@ -25,30 +25,14 @@ void ecritureSD(double valhum) { - fp =fopen ("/sd/test.txt","a"); + fp =fopen ("/sd/sauvegardes.txt","a"); if (fp == NULL) { // Si on n'arrive pas a ouvrir le fichier dans la carte SD lcd.cls(); lcd.printf("Erreur carte SD"); // On affiche sur l'ecran LCD qu'il y a une erreur - } else { // code d'après : https://os.mbed.com/users/zhouer/code/NUCLEO-DS3231/file/7e3176a65913/main.cpp/ -// int ret; Car on en a pas besoin -// int sec, Car on en a pas besoin - int min, hour, day, date, month, year; - char data_write[2]; - char data_read[8]; - data_write[0] = 0; - i2c.write(DS3231_ADDR, data_write, 1, 0); - -// ret = i2c.read(DS3231_ADDR, data_read, 7, 0); -// sec = (data_read[0] >> 4) * 10 + (data_read[0] & 0x0f); - min = (data_read[1] >> 4) * 10 + (data_read[1] & 0x0f); - hour = (data_read[2] >> 5 & 0x01) * 20 + (data_read[2] >> 4 & 0x01) * 10 + (data_read[2] & 0x0f); - - day = data_read[3] & 0x07; - - date = (data_read[4] >> 4) * 10 + (data_read[4] & 0x0f); - month = (data_read[5] >> 4 & 0x01) * 10 + (data_read[5] & 0x0f); - year = 2000 + (data_read[6] >> 4) * 10 + (data_read[6] & 0x0f); - fprintf(fp,"%d-%02d-%02d %d %02d:%02d %.2f\n\r", year, month, date, day, hour, min, valhum); // Date = lundi, mardi, mercredi,... ? + } else { + int sec,min, hour, day, date, month, year; + my1307.gettime( &sec, &min, &hour, &day, &date, &month, &year); + fprintf(fp,"%d %d-%d-%d %d:%d %.2f\n\r", date, day, month, year, hour, min, valhum); // Date = lundi (1) , mardi (2) , mercredi (3),... fclose(fp); } } @@ -56,7 +40,7 @@ void affichageini (void) { //On affiche sur le LCD le message lié au taux supérieur à 5%Hr - lcd.cls(); //On récupère le nombre des dizaines + lcd.cls(); //On récupère le nombre des dizaines lcd.printf("INITIALISATION"); //On récupère le nombre des unités lcd.locate(0,1); lcd.printf("DU SYSTEME ."); @@ -90,7 +74,7 @@ void affichageinf (double valhum) { //On affiche sur LCD le message d'initialisation - lcd.cls(); //utile pour signlé qu'un reset manuel (boutton) a été effectué + lcd.cls(); //utile pour signlé qu'un reset manuel (boutton) a été effectué lcd.locate(0,0); lcd.printf("HUMIDITE MESUREE"); lcd.locate(0,1); @@ -115,7 +99,7 @@ affichageini(); // On affiche sur l'ecran LCD le message d'initialisation while(1) { // Boucle infini - double valcapteur = capteur.read()*3.3f; //Récupération de la tension d'entrée du capteur, + double valcapteur = capteur.read()*3.3f; // Récupération de la tension d'entrée du capteur, // qui est multipliée par la tension d'alimentation. Car la tension relevée est un pourcentage de // la tension d'alimentation (vout est comprise entre 0 et 1). double valhum = (valcapteur-3.3*0.1515)/(0.00636*3.3); // Conversion de la tension en taux d'humidité