Dúvida sobre Códigos de Programação

Olá, boa noite! Iniciei há muito pouco tempo no uso do Arduíno e não tenho experiência prévia em circuitos e programação de modo que estou aprendendo tentando entender linhas de códigos e testando alguns circuitos.

Estou tentando entender este código para o sensor de temperatura DS18B20:

// Programa : Sensor de temperatura DS18B20

#include <OneWire.h>
#include <DallasTemperature.h>

// Porta do pino de sinal do DS18B20
#define ONE_WIRE_BUS 3

// Define uma instancia do oneWire para comunicacao com o sensor
OneWire oneWire(ONE_WIRE_BUS);

// Armazena temperaturas minima e maxima
float tempMin = 999;
float tempMax = 0;

DallasTemperature sensors(&oneWire);
DeviceAddress sensor1;

void setup(void)
{
Serial.begin(9600);
sensors.begin();
// Localiza e mostra enderecos dos sensores
Serial.println("Localizando sensores DS18B20...");
Serial.print("Foram encontrados ");
Serial.print(sensors.getDeviceCount(), DEC);
Serial.println(" sensores.");
if (!sensors.getAddress(sensor1, 0))
Serial.println("Sensores nao encontrados !");
// Mostra o endereco do sensor encontrado no barramento
Serial.print("Endereco sensor: ");
mostra_endereco_sensor(sensor1);
Serial.println();
Serial.println();

}

void mostra_endereco_sensor(DeviceAddress deviceAddress)
{
for (uint8_t i = 0; i < 8; i++)
{
// Adiciona zeros se necessário
if (deviceAddress[i] < 16) Serial.print("0");
Serial.print(deviceAddress[i], HEX);
}
}

void loop()
{
// Le a informacao do sensor
sensors.requestTemperatures();
float tempC = sensors.getTempC(sensor1);
// Atualiza temperaturas minima e maxima
if (tempC < tempMin)
{
tempMin = tempC;
}
if (tempC > tempMax)
{
tempMax = tempC;
}
delay(2000);
// Mostra dados no serial monitor
Serial.print("Temp: ");
Serial.print(tempC);
Serial.print("ºC");
Serial.print(" Min : ");
Serial.print(tempMin);
Serial.print("ºC");
Serial.print(" Max : ");
Serial.print(tempMax);
Serial.println("°C");

Fiquei com dúvida especialmente em duas partes:
Primeiro essa:
float tempMin = 999;
float tempMax = 0;

porque o float de temperatura declara para o mínimo 999 e para o máximo 0 e não o contrário?

E a outra seria:
for (uint8_t i = 0; i < 8; i++)
Não consegui entender bem o que significa dentro dos parênteses.

Caso alguém possa ajudar nestas dúvidas, ficaria agradecido.

minha primeira recomendação é que ao postar códigos ou printouts o faça colocando entre tags (</> )
Você escolheu um sketch que não é dos mais fáceis, já que envolve um componente complexo como o DS18B20, mas a parte do programa que vc tem dúvida é fácil de explicar.

A primeira dúvida:

A variável mínima deverá ser sempre menor que 999 e a variável máxima deverá ser sempre maior que 0, e assim elas são testadas incialmente.
Não sei se fui claro.

A segunda dúvida, é uma função muito usada em várias linguagens.

O programa começa com o valor i = 0, em seguida ele verifica se i é menor que 8 e posteriormente ele incrementa o valor de i.
Assim ele roda tudo que está entre as chaves 8 vezes, e quando o valor de i for maior
que 8 ele sai fora deste “loop chamado for”.

RV mineirin

1 Like

Olá, obrigado pela recomendação da postagem dos códigos e pela resposta.

Acredito que eu tenha compreendido sim. Eu anteriormente tinha estudado o LM35 e o TMP36, aí fui a procura de um que pudesse ser usado submerso em fluidos e acabei caindo nesse. Realmente ele parece ser bem mais complexo, quando comparado aos dois anteriores, não sei se é por causa da comunicação one-wire que ele fica mais difícil de compreender.

No mais obrigado pela resposta. Atualmente estou tentando juntar alguns sensores, como de pH, temperatura, condutividade e turbidez, tudo em um único instrumento para montar um equipamento multiparâmetro e o Arduíno pareceu muito bom para isso, daí estou dedicando um tempo a aprender essa área nova.

Valeu mesmo.

Você é brasiliero. Mora no Brasil?

RV mineirin

Sim, sou brasileiro e moro aqui.

Ops, nem percebi que era na parte em português do fórum kkkkkkk

1 Like