Skip to content

Instantly share code, notes, and snippets.

@DiegoAscanio
Created April 26, 2020 23:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save DiegoAscanio/1066be54c6e22d456070edf855f15437 to your computer and use it in GitHub Desktop.
Save DiegoAscanio/1066be54c6e22d456070edf855f15437 to your computer and use it in GitHub Desktop.
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