/**
  Exemplo para demonstração uso do GDB
  https://wokwi.com/projects/331909293817201235

  O objetivo do código é acender o LED interno do Uno quando a temperatura
  passar de 37℃. Erros foram introduzidos propositalmente para demonstrar
  o uso do GDB:

  - A comparação da temperatura em loop() está invertida
  - O for em leTemperatura faz 4 ao invés de 5 leituras

  Baseado no exemplo de Uri Shaked
  https://wokwi.com/arduino/projects/299330254810382858

  Assumes a [email protected]℃ NTC thermistor connected in series with a 10K resistor.

  Copyright (C) 2022, Daniel Quadros
*/

const float BETA = 3950; // should match the Beta Coefficient of the thermistor

void setup() {
  Serial.begin(9600);
  pinMode(LED_BUILTIN, OUTPUT);
  digitalWrite(LED_BUILTIN, LOW);
}

void loop() {
  float temperatura = leTemperatura();
  if (temperatura < 37.0) {
    digitalWrite(LED_BUILTIN, HIGH);
  } else {
    digitalWrite(LED_BUILTIN, LOW);
  }
  delay (300);
}

// Rotina para ler o sensor, faz 5 leituras e tira a média
float leTemperatura() {
  float soma = 0.0;
  for (int i = 1; i < 5; i++) {
    soma += converte(analogRead(A0));
    delay(20);
  }
  return soma/5;
}

// Converte leitura do ADC em graus celsius
// Fórmula copiada de https://docs.wokwi.com/pt-BR/parts/wokwi-ntc-temperature-sensor
float converte (int leitura) {
  return 1 / (log(1 / (1023.0 / leitura - 1)) / BETA + 1.0 / 298.15) - 273.15;
}