-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMALaJaSeCo-code.ino
160 lines (140 loc) · 6 KB
/
MALaJaSeCo-code.ino
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
#include <Servo.h>
#include <PID_v1.h>
//Variaveis do PID#######################################
double SetPoint = 500, Input = 0, Output = 0;
double kp = 0.011, ki = 0.23, kd = 0.0002;
//double kp = 0.006336, ki = 0.1, kd = 0.0025; //Testando esses valores
byte pinoLDR = A7;
byte led = 13;
String InSetPointPortSerial = "";
boolean flag = false;
unsigned int error = 0;
PID myPID(&Input, &Output, &SetPoint, kp, ki, kd, DIRECT);
//#########################################################
int btnAutManLed = 22; // botão Manual/Automático do LED
int valInstantaneoBtnAutManLed = 0; // Guarda o valor do botao a cada loop
int valGuardadoBtnAutManLed = 0; // Variavel que vai ser usada para verificar se o estado do botao alterou
int estadoBtnAutManLed = 0; // guarda o valor 0 ou 1 (HIGH ou LOW)
int btnAutManJanela = 23; // botão Manual/Automático da janela
int valInstantaneoBtnAutManJanela = 0; // Guarda o valor do botao a cada loop
int valGuardadoBtnAutManJanela = 0; // Variavel que vai ser usada para verificar se o estado do botao alterou
int estadoBtnAutManJanela = 0; // guarda o valor 0 ou 1 (HIGH ou LOW)
int btnLigaDesligaLed = 24; // botão Liga/desliga do LED
int valInstantaneoBtnLigaDesligaLed = 0; // Guarda o valor do botao a cada loop
int valGuardadoBtnLigaDesligaLed = 0; // Variavel que vai ser usada para verificar se o estado do botao alterou
int estadoBtnLigaDesligaLed = 0; // guarda o valor 0 ou 1 (HIGH ou LOW)
int btnAbreFechaJanela = 25; // botão Abre/Fecha janela
int valInstantaneoBtnAbreFechaJanela = 0; // Guarda o valor do botao a cada loop
int valGuardadoBtnAbreFechaJanela = 0; // Variavel que vai ser usada para verificar se o estado do botao alterou
int estadoBtnAbreFechaJanela = 0; // guarda o valor 0 ou 1 (HIGH ou LOW)
int pinLed = 13;
int pinSensorChuva = 52;
int pinSensorChuvaAnalogico = A0;
int valorSensorChuva = 0;
int valorSensorChuvaAnalogico = 1023;
Servo myservo;
void setup() {
pinMode(btnAutManLed, INPUT);
pinMode(btnAutManJanela, INPUT);
pinMode(btnLigaDesligaLed, INPUT);
pinMode(btnAbreFechaJanela, INPUT);
pinMode(pinSensorChuva, INPUT);
pinMode(pinLed, OUTPUT);
myservo.attach(2);
myservo.write(179);
pinMode(led, OUTPUT);
analogWrite(led, 0);
myPID.SetMode(AUTOMATIC);
Serial.begin(9600);
}
void loop() {
/*
##Verifica botao Manual/Automatico LED
*/
valInstantaneoBtnAutManLed = digitalRead(btnAutManLed); // ler o valor enviado pelo botão: "HIGH" ou "LOW"
if ((valInstantaneoBtnAutManLed == HIGH) && (valGuardadoBtnAutManLed == LOW)) {
estadoBtnAutManLed = 1 - estadoBtnAutManLed;
}
valGuardadoBtnAutManLed = valInstantaneoBtnAutManLed;
if (estadoBtnAutManLed == 1) {
while (Serial.available() > 0) //verifica se tem dados diponível para leitura
{
char c = Serial.read();
InSetPointPortSerial += c;
flag = true;
}
if (flag) {
SetPoint = (double) InSetPointPortSerial.toInt();
InSetPointPortSerial = "";
flag = false;
}
Input = analogRead(pinoLDR);
myPID.Compute();
error = (unsigned int) Input - SetPoint;
if( error > 30 ){//IF OPCIONAL
analogWrite(led, Output);
}
Serial.print((int) SetPoint);Serial.print(" ");Serial.print((int) Input);Serial.print(" ");Serial.println((int) Output);
delay(100);
} else {
/*
##Verifica botao Liga/Desliga LED
*/
valInstantaneoBtnLigaDesligaLed = digitalRead(btnLigaDesligaLed); // ler o valor enviado pelo botão: "HIGH" ou "LOW"
if ((valInstantaneoBtnLigaDesligaLed == HIGH) && (valGuardadoBtnLigaDesligaLed == LOW)) {
estadoBtnLigaDesligaLed = 1 - estadoBtnLigaDesligaLed;
}
valGuardadoBtnLigaDesligaLed = valInstantaneoBtnLigaDesligaLed;
if (estadoBtnLigaDesligaLed == 1) {
digitalWrite(pinLed, HIGH); // liga o led
} else {
digitalWrite(pinLed, LOW); // desliga o led
}
}
/*
##Verifica botao Manual/Automatico Janela
*/
valInstantaneoBtnAutManJanela = digitalRead(btnAutManJanela); // ler o valor enviado pelo botão: "HIGH" ou "LOW"
if ((valInstantaneoBtnAutManJanela == HIGH) && (valGuardadoBtnAutManJanela == LOW)) {
estadoBtnAutManJanela = 1 - estadoBtnAutManJanela;
}
valGuardadoBtnAutManJanela = valInstantaneoBtnAutManJanela;
if (estadoBtnAutManJanela == 1) {
//valorSensorChuva = digitalRead(pinSensorChuva);
valorSensorChuvaAnalogico = analogRead(pinSensorChuvaAnalogico);
if (valorSensorChuvaAnalogico < 800) {
myservo.write(179); //Fecha Janela
} else {
//if (estadoBtnAbreFechaJanela == 1) {
myservo.write(0); // Abre janela
//} else {
// myservo.write(179); //Fecha janela
//}
}
} else {
/*
##Verifica botao Abre/Fecha Janela
*/
valInstantaneoBtnAbreFechaJanela = digitalRead(btnAbreFechaJanela); // ler o valor enviado pelo botão: "HIGH" ou "LOW"
if ((valInstantaneoBtnAbreFechaJanela == HIGH) && (valGuardadoBtnAbreFechaJanela == LOW)) {
estadoBtnAbreFechaJanela = 1 - estadoBtnAbreFechaJanela;
}
valGuardadoBtnAbreFechaJanela = valInstantaneoBtnAbreFechaJanela;
if (estadoBtnAbreFechaJanela == 1) {
myservo.write(0); // Abre janela
} else {
myservo.write(179); //Fecha janela
}
}
/*Serial.print(" btn manual/automatico LED: ");
Serial.print(estadoBtnAutManLed);
Serial.print(" btn manual/automatico Janela: ");
Serial.print(estadoBtnAutManJanela);
Serial.print(" btn Liga/desliga LED: ");
Serial.print(estadoBtnLigaDesligaLed);
Serial.print(" btn Abre/Fecha Janela: ");
Serial.print(estadoBtnAbreFechaJanela);
Serial.println();*/
//Serial.print(valorSensorChuva);Serial.print(" ");Serial.print(valorSensorChuvaAnalogico);
//Serial.println();
}