// Programa que calcula a média das 30 medidas do sensor de temperatura
// e do potenciometro.
// Se a temperatura for maior que o valor do potenciometro, o led acende.

  const float BETA = 3950;
  float leituraSensor[30], leituraPot[30];
  float mediaSensor, mediaPot, somaSensor, somaPot, celsius, pot;
  int contador = 0;

void setup() {
  
  Serial.begin(115200); //Inicia a tela Serial;
  pinMode(A0, INPUT);   //Indica que o pino A0 será utilizado como entrada;
  pinMode(A1, INPUT);   //Indica que o pino A1 será utilizado como entrada;
  pinMode(13, OUTPUT);  //Indica que o pino 13 será utilizado como saída;
 
}

void loop() {
  // Zerar as variáveis;
  somaSensor = 0;
  somaPot = 0;
  mediaSensor = 0;
  mediaPot = 0;
  celsius = 0;
  pot = 0;

  for (contador = 0; contador <30; contador++)
  {
    leituraSensor[contador] = analogRead(A0); //Realiza 30 medidas do sensor e guarda em um vetor;
    leituraPot[contador] = analogRead(A1);    //Realiza 30 medidas do potenciometro e guarda em um vetor;
  }

  for (contador = 0; contador < 30; contador++)
  {
    somaSensor = somaSensor + leituraSensor[contador]; //Soma as 30 medidas do sensor;
    somaPot = somaPot + leituraPot[contador];          //Soma as 30 medidas do potenciometro;
  }

  mediaSensor = somaSensor/30.;  //Calcula a média das medidas do sensor;
  mediaPot = somaPot/30.;        //Calcula a média das medidas do potenciometro;   

  celsius = 1 / (log(1 / (1023. / mediaSensor - 1)) / BETA + 1.0 / 298.15) - 273.15; //Converte o sinal analógico para valores de temperatura em celsius;
  pot = (mediaPot/1023.)*100;   //Converte o sinal analógico para porcentagens;

  Serial.print("Temperatura está em: ");
  Serial.print(celsius);  //Imprime a média da temperatura;
  Serial.println(" ℃");

  if(celsius > pot)  //Aciona o LED se a temperatura for maior que o valor do potenciômetro;
  {
    digitalWrite(13, HIGH); 
  }
  else
  {
    digitalWrite(13, LOW);
  }

  Serial.print("Potenciômetro está em: ");
  Serial.print(pot);  //Imprime a média dos valores do potenciometro;
  Serial.println(" %");  

  delay(3000);  //Espera 3s para nova medição;
}