Created
April 26, 2020 23:03
-
-
Save DiegoAscanio/1066be54c6e22d456070edf855f15437 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const int PINO_TERMOMETRO = 0; // o termometro LM35 está ligado no A0 | |
const int PINO_SECADOR = 2; // o secador de cabelos está ligado ao D2 | |
const float temperatura_referencia_superior = 73; | |
const float temperatura_referencia_inferior = 67; | |
float temperatura; | |
bool terminado; | |
void setup() { | |
// flag de execucao, para evitar que o secador seja religado após o período de funcionament | |
// por causa da função loop do arduino | |
terminado = false; | |
Serial.begin(9600); | |
// Configura o pino do relé do aquecedor e aciona o relé | |
pinMode(PINO_SECADOR, OUTPUT); | |
} | |
void desligarSecador() { | |
digitalWrite(PINO_SECADOR, LOW); | |
} | |
void ligarSecador() { | |
digitalWrite(PINO_SECADOR, HIGH); | |
} | |
float lerTemperatura() { | |
// 0.4887585532 é uma constante que converte o valor lido pelo LM35 de mV para °C | |
return (analogRead(PINO_TERMOMETRO) * 0.4887585532); | |
} | |
void preAquecerOSecadorPor4Minutos() { | |
ligarSecador(); | |
int tempoPreAquecimento = 0; | |
while (tempoPreAquecimento < 240) { | |
// incrementa o tempoPreAquecimento de 1 em 1s | |
// até 4 minutos (240s) | |
delay(1000); | |
tempoPreAquecimento ++; | |
} | |
} | |
void informarOperador() { | |
Serial.println("O Aquecedor nao esta aquecendo suficientemente e sera desligado para economia de energia, favor realizar substituição do secador e / ou aproximação do secador ao Ziploc®"); | |
} | |
void esperar120Segundos() { | |
int tempoEspera = 0; | |
while (tempoEspera < 120) { | |
// incrementa o tempoEspera de 1 em 1s | |
// até 2 minutos (120s) | |
delay(1000); | |
tempoEspera ++; | |
} | |
} | |
void esterilizar() { | |
preAquecerOSecadorPor4Minutos(); | |
temperatura = lerTemperatura(); | |
if (temperatura < 70) { | |
desligarSecador(); | |
informarOperador(); | |
} | |
else { | |
int tempoFuncionamento = 0; | |
while (tempoFuncionamento < 1800) { | |
// 1800 segundos = 30 minutos | |
temperatura = lerTemperatura(); | |
if (temperatura > temperatura_referencia_superior) { | |
desligarSecador(); | |
} | |
else if (temperatura < temperatura_referencia_inferior) { | |
ligarSecador(); | |
esperar120Segundos(); | |
// incrementa 2 minutos ao tempo de funcionamento do esterilizador | |
tempoFuncionamento += 120; | |
} | |
tempoFuncionamento ++; | |
delay(1000); | |
} | |
} | |
terminado = true; | |
} | |
void loop() { | |
if (!terminado) { | |
esterilizar(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment