Indice
Descrizione
In questo episodio vedremo come usare delle sonde per misurare le temperature sia dell'aria che dei liquidi con Arduino.
Vedremo come fare i collegamenti e come scrivere gli sketch per comandare diverse sonde con un solo pin digitale.
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
void setup() {
Serial.begin(9600);
sensors.begin();
}
void loop() {
sensors.requestTemperatures();
float temperature = sensors.getTempCByIndex(0);
printTemperature("Temperature", temperature);
delay(1000);
}
void printTemperature(String label, float value) {
if (value != DEVICE_DISCONNECTED_C) {
Serial.println(label + ": " + String(value) + "°C");
} else {
Serial.println("Impossibile rilevare la temperatura");
}
}
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
int deviceCount;
void setup() {
Serial.begin(9600);
sensors.begin();
deviceCount = sensors.getDeviceCount();
}
void loop() {
sensors.requestTemperatures();
float tempSum = 0;
for (int i = 0; i < deviceCount; i++) {
float temperature = sensors.getTempCByIndex(i);
printTemperature("Sensore " + String(i+1), temperature);
tempSum += temperature;
}
printTemperature("Media", tempSum / deviceCount);
Serial.println();
delay(1000);
}
void printTemperature(String label, float value) {
if (value != DEVICE_DISCONNECTED_C) {
Serial.println(label + ": " + String(value) + "°C");
} else {
Serial.println("Impossibile rilevare la temperatura");
}
}
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress airSensorAddress = { 0x28, 0x5E, 0xEB, 0x79, 0xA2, 0x16, 0x03, 0xAF };
DeviceAddress waterSensorAddress = { 0x28, 0xBD, 0x40, 0x79, 0xA2, 0x19, 0x03, 0x84 };
void setup() {
Serial.begin(9600);
sensors.begin();
}
void loop() {
sensors.requestTemperatures();
float tempAir = sensors.getTempC(airSensorAddress);
float tempWater = sensors.getTempC(waterSensorAddress);
Serial.println("Temperature rilevate");
printTemperature("Aria", tempAir);
printTemperature("Acqua", tempWater);
Serial.println();
delay(1000);
}
void printTemperature(String label, float value) {
if (value != DEVICE_DISCONNECTED_C) {
Serial.println(label + ": " + String(value) + "°C");
} else {
Serial.println("Impossibile rilevare la temperatura");
}
}