/*Projeto-Condução de calor com seis sensores DS18B20. Projeto adaptado do esquete original de Michael McRoberts (ver "Arduino Básico", NOVATEC Editora Ltda.,2011, pag.311) Programa de Mestrado Profissional em Ensino de Física, PMPEF/IF-UFRJ */ //Bibliotecas incorporadas #include #include //A linha de dados vai para o pino digital 3 #define ONE_WIRE_BUS 3 //Define a resolução em bits do sensor (o valor default é 12) #define TEMPERATURE_PRECISION 12 //Prepara uma instância de oneWire para se comunicar com dispositivos OneWire //(essa bibliotéca contempla outros sensores one-wire) OneWire oneWire(ONE_WIRE_BUS); //Passa a referencia oneWire para DallasTemperature DallasTemperature sensors(&oneWire); // Cria o array DeviceAddress para armazenar os endereços dos seis sensores. // Se estiver usando uma quantidade diferente de sensores você deve alterar aqui //o número de termos do array. DeviceAddress Term1, Term2, Term3, Term4, Term5, Term6; void setup() { //inicia a porta serial Serial.begin(9600); //inicia a biblioteca sensors.begin(); //localiza e informa os sensores no barramento Serial.print("Localizando os sensores..."); Serial.print("Encontrados "); Serial.print(sensors.getDeviceCount(),DEC); Serial.println(" sensores."); if(!sensors.getAddress(Term1,0)) Serial.println("Incapaz de localizar o sensor 0"); if(!sensors.getAddress(Term2,1)) Serial.println("Incapaz de localizar o sensor 1"); if(!sensors.getAddress(Term3,2)) Serial.println("Incapaz de localizar o sensor 2"); if(!sensors.getAddress(Term4,3)) Serial.println("Incapaz de localizar o sensor 3"); if(!sensors.getAddress(Term5,4)) Serial.println("Incapaz de localizar o sensor 4"); if(!sensors.getAddress(Term6,5)) Serial.println("Incapaz de localizar o sensor 5"); //imprime os endereços para os quatro dispositivos Serial.print("Sensor 0, Endereço: "); printAddress(Term1); Serial.println(); Serial.print("Sensor 1, Endereço: "); printAddress(Term2); Serial.println(); Serial.print("Sensor 2, Endereço: "); printAddress(Term3); Serial.println(); Serial.print("Sensor 3, Endereço: "); printAddress(Term4); Serial.println(); Serial.print("Sensor 4, Endereço: "); printAddress(Term5); Serial.println(); Serial.print("Sensor 5, Endereço: "); printAddress(Term6); Serial.println(); } //Define a função printAddress para imprimir o endereço dos dispositivos. void printAddress(DeviceAddress deviceAddress) { for(int i=0; i<8; i++) { //preenche o endereço com zeros, se necessário if(deviceAddress[i] < 16) Serial.print("0"); Serial.print(deviceAddress[i], HEX); } } void loop() { //chama a função sensor.requestTemperature() para solicitar a temperatura //de todos os sensores no barramento. sensors.requestTemperatures(); // imprime as informações de cada dispositivo. float T1 = sensors.getTempC(Term1); Serial.print(T1); Serial.print(" "); float T2 = sensors.getTempC(Term2); Serial.print(T2); Serial.print(" "); float T3 = sensors.getTempC(Term3); Serial.print(T3); Serial.print(" "); float T4 = sensors.getTempC(Term4); Serial.print(T4); Serial.print(" "); float T5 = sensors.getTempC(Term5); Serial.print(T5); Serial.print(" "); float T6 = sensors.getTempC(Term6); Serial.print(T6); Serial.println(); //Intervalo de 5s (5000 milisegundos) entre medidas sucessivas. Altere este //valor segundo suas necessidades. delay(5000); }