Repository navigation
Expand file tree
/
Copy pathmain.cpp
More file actions
110 lines (98 loc) · 3.58 KB
/
Copy pathmain.cpp
File metadata and controls
110 lines (98 loc) · 3.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#include "mbed.h"
DigitalOut myled(p12); //FITA DE LED.
DigitalOut mybomb(p14); //BOMBA DE ÁGUA.
DigitalIn mymovimento(p15);//SENSOR DE MOVIMENTO
AnalogIn myumidade(p20);//SENSOR DE UMIDADE.
AnalogIn myluz(p16);//SENSOR DE LUZ
Serial device(p9,p10); //PINOS BLUETOOTH: P9 = TX, P10 = RX.
//DS1307 mytime(p28,p27); //PINOS RTC: P28 = SDA, P27 = SCL.
LocalFileSystem local("local");
//FUNÇÃO QUE RETORNA A PORCENTAGEM DO NIVEL DO RESERVATORIO
double nivelReservatorio(void){
double nivel = myumidade.read();
return nivel;
}
//FUNÇÃO QUE RETORNA A PORCENTAGEM DA LUZ AMBIENTE.
double getStatusLuzAmbiente(void){
double luminosidade = myluz.read();
return luminosidade;
}
//FUNÇÃO QUE RETORNA A SITUAÇÃO DO MOVIMENTO. TRUE OR FALSE
bool getStatusMovimento(void){
return mymovimento;
}
//FUNÇÃO QUE ACENDE O LED
void ligaDesligaLED(void){
int statusAnterior = myled;
if(getStatusMovimento() && (getStatusLuzAmbiente()>0.5)){
myled = 1; // ACENDE A FITA DE LED
if((statusAnterior != myled)){
FILE *fp = fopen("/local/out.txt", "a");
time_t seconds = time(NULL);
char buffer[32];
strftime(buffer, 32, "%X %x\n", localtime(&seconds));
fprintf(fp, "Luz ACESA - %s\n\r ",buffer);
fclose(fp);
if ((device.writable())&& (statusAnterior != myled)){
time_t seconds = time(NULL);
char buffer[32];
strftime(buffer, 32, "%X %x\n", localtime(&seconds));
device.printf("Luz ACESA - %s\n\r ",buffer);
} }
}else{
myled = 0; // APAGA A FITA DE LED
if((statusAnterior != myled)){
FILE *fp = fopen("/local/out.txt", "a");
time_t seconds = time(NULL);
char buffer[32];
strftime(buffer, 32, "%X %x\n", localtime(&seconds));
fprintf(fp, "Luz APAGADA - %s\n\r ",buffer);
fclose(fp);
if ((device.writable())&& (statusAnterior != myled)){
time_t seconds = time(NULL);
char buffer[32];
strftime(buffer, 32, "%X %x\n", localtime(&seconds));
device.printf("Luz APAGADA - %s\n\r ",buffer);
} }
};
}
//FUNÇÃO RESPONSÁVEL PELO CONTROLE DA BOMBA
void ligaDesligaBOMBA(void){
int estadoAnterior = mybomb;
if(nivelReservatorio()<0.7){
//DESLIGA A BOMBA
mybomb = 0;
if((estadoAnterior != mybomb)){
FILE *fp = fopen("/local/out.txt", "a");
time_t seconds = time(NULL);
char buffer[32];
strftime(buffer, 32, "%X %x\n", localtime(&seconds));
fprintf(fp, "Bomba DESLIGADA - %s\n\r ",buffer);
fclose(fp);
if ((device.writable()) && (estadoAnterior != mybomb)){
device.printf("Bomba DESLIGADA - %s\n\r ",buffer);
} }
}else{
mybomb = 1;
if((estadoAnterior != mybomb)){
FILE *fp = fopen("/local/out.txt", "a");
time_t seconds = time(NULL);
char buffer[32];
strftime(buffer, 32, "%X %x\n", localtime(&seconds));
fprintf(fp, "Bomba LIGADA - %s\n\r ",buffer);
fclose(fp);
if ((device.writable()) && (estadoAnterior != mybomb)){
time_t seconds = time(NULL);
char buffer[32];
strftime(buffer, 32, "%X %x\n", localtime(&seconds));
device.printf("Bomba LIGADA - %s\n\r ",buffer);
}}
wait(4); //TEMPO ATÉ ENCHER O RESERVATÓRIO
};
}
int main() {
//set_time(1559751152); // Set RTC time
while(1) {
ligaDesligaLED();
ligaDesligaBOMBA();
}}