#include <Arduino.h>
/* EL UNICO DETALLE que me falta corregir y no logro darle solución es que al presionar la parada de emergencia y volver a iniciar el sistema, si el rango de temperatura está en el medio entre los valores mínimo y máximo de histeresis , el sistema no me hace acción de control , no enciende el horno ni los extractores, solo muestra la temperatura, tengo que esperar a que caiga solo la valor mínimo para que pueda arrancar nuevamente y lo que quiero es que al pulsar la emergencia y la volver a iniciar inmediatamente si los valores de temperatura están en el rango medio (valor mínimo< rango medio<40°) el sistema siga haciendo exactamente los mismo q venía haciendo mates de pararlo,
Solo me está faltando eso.
*/
float temperatura = 0;
int Relepin = 8;
int extractores = 7;
int tempPin = tempPin;
int variableT = 0;
int flag = 0;
int vanalog = 0;
float temp = 0;
float suma = 0;
int muestras = 0;
String datorecibido;
unsigned long lgUpdateTime;
void setup() {
Serial.begin(9600);
pinMode(Relepin, OUTPUT);
pinMode(extractores, OUTPUT);
digitalWrite(Relepin, HIGH);
digitalWrite(extractores, HIGH);
lgUpdateTime = millis();
}
void loop() {
digitalWrite(Relepin, HIGH);
// digitalWrite(extractores, HIGH);
escuchar_bluetooth();
leertemperatura();
condiciones();
// extractores_on_off();
// temp_intermedia();
while (flag == 1) {
digitalWrite(Relepin, LOW);
escuchar_bluetooth();
leertemperatura();
condiciones();
// extractores_on_off();
// temp_intermedia();
}
}
void leertemperatura() {
if (millis() - lgUpdateTime > 1000) {// el retraso ser? de 1 segundo
suma = 0;
for (muestras = 0; muestras < 10; muestras++) {
vanalog = analogRead(tempPin);
delay(1);
temp = (float)(vanalog * 0.4887);
suma = suma + temp;
}
temperatura = suma / 10;
Serial.println(temperatura, 0);
lgUpdateTime = millis();
}
}
void escuchar_bluetooth() {
if (Serial.available()) {
datorecibido = String("");
while (Serial.available()) {
datorecibido = datorecibido + char(Serial.read());
delay(1);
variableT = datorecibido.toInt();
}
}
}
void condiciones() {
if (temperatura <= variableT) {
digitalWrite(extractores, HIGH);
flag = 1;
}
else if (temperatura >= 40 || variableT == 0) {
digitalWrite(extractores, LOW);
flag = 0;
}
if (variableT == 0) {
digitalWrite(extractores, HIGH);
digitalWrite(Relepin, LOW);
}
}
nano:12
nano:11
nano:10
nano:9
nano:8
nano:7
nano:6
nano:5
nano:4
nano:3
nano:2
nano:GND.2
nano:RESET.2
nano:0
nano:1
nano:13
nano:3.3V
nano:AREF
nano:A0
nano:A1
nano:A2
nano:A3
nano:A4
nano:A5
nano:A6
nano:A7
nano:5V
nano:RESET
nano:GND.1
nano:VIN
nano:12.2
nano:5V.2
nano:13.2
nano:11.2
nano:RESET.3
nano:GND.3
pot1:GND
pot1:SIG
pot1:VCC