#include "DS18B20.h" #include DeviceAddress sensor0 = { 0x28, 0x40, 0xB9, 0x2C ,0xF, 0x0, 0x0 ,0xEA }; DeviceAddress sensor1 = { 0x28, 0xB0, 0xBA, 0x2D ,0xF, 0x0, 0x0 ,0x59 }; DeviceAddress sensor2 = { 0x28, 0x8C ,0xDA ,0x2D, 0xF, 0x0 ,0x0, 0xD8 }; DeviceAddress sensor3 = { 0x28 ,0x4A ,0xD7, 0x2D, 0xF ,0x0 ,0x0 ,0x19 }; DeviceAddress sensor4 = { 0x28, 0x9E ,0xDA, 0x2D ,0xF, 0x0, 0x0, 0xED }; DeviceAddress sensor5 = { 0x28, 0xA9 ,0x0A ,0xFB, 0xD, 0x0, 0x0, 0x9C }; DeviceAddress sensor6 = { 0x28, 0x17 ,0xF6, 0x2C, 0xF ,0x0 ,0x0 ,0xC7 }; DeviceAddress sensor7 = { 0x28, 0xBF, 0x92, 0x2D ,0xF, 0x0, 0x0 ,0xBB }; DeviceAddress sensoraddr[8]; OneWire oneWire(DS18b20_pin); DallasTemperature DS18b20(&oneWire); int temp_number; // uint8_t *p[8] = {sensoraddr[0],sensoraddr[1],sensoraddr[2],sensoraddr[3],sensoraddr[4],sensoraddr[5],sensoraddr[6],sensoraddr[7]}; //冒泡排序 将温度地址 DeviceAddress sensoraddr[30]; 从小到大排序 // void bubble_sort(DeviceAddress *addr,int n) // { // uint64_t a1 ,a2; // for (int i = 0; i < n; i++) // { // for(uint8_t b = 0 ; b<8;b++) // { // a1 += addr[i][b]; // } // for (int j = 0; j < n-i-1; j++) // { // for(uint8_t c = 0 ; c<8;c++) // { // a2 += addr[j][c]; // } // if (a1 > a2) // { // uint8_t *temp = p[i]; // p[i] = p[j]; // p[j] = temp; // } // } // } // } uint8_t DS18b20_init() { //温度模块初始化 // DS18b20.setOneWire(&oneWire); DS18b20.begin(); temp_number = DS18b20.getDeviceCount(); int i = 0; while(temp_number <= 0 ) { temp_number = DS18b20.getDeviceCount(); vTaskDelay(500); if (i>=5) { write_log(log_path,"ds18b2 init failed,no ds18b20",10); return 0; } i++; } write_log(log_path,"ds18b20 has" + String(temp_number),20); for(size_t i = 0; i < temp_number; i++) { DS18b20.getAddress(sensoraddr[i],i); } // bubble_sort(sensoraddr,temp_number); return temp_number; } //温度监测 float temp_last[8] = {25,25,25,25,25,25,25,25}; void getall_temp(float *temp) { DS18b20.requestTemperatures(); // Send the command to get temperatures // vTaskDelay(1000); for(int8_t i =0 ;i5) { write_log(log_path,"ds18b20 get temperature failed",10); // return; break; } } if (temp[i] < -110) { temp[i] = temp_last[i]; write_log(log_path,"ds18b20 get temperature failed, use last temperature",10); } else { temp_last[i] = temp[i]; } } // write_log(log_path,"get temperatures ok",10); } float getone_temp(uint8_t address) { float temp; DS18b20.requestTemperatures(); // Send the command to get temperatures temp = DS18b20.getTempC(sensoraddr[address]); return temp; } // void set_ds18b20_address(uint8_t num,uint8_t * addr) // { // // uint8_t num = addr[0]; // memcpy(&sensoraddr[num],addr,8); // } //测试用 //温度监测 // void getall_temp(float *temp) // { // DS18b20.requestTemperatures(); // Send the command to get temperatures // for (u_int32_t i = 0; i < temp_number; i++) // { // temp[i] = DS18b20.getTempC(sensoraddr[i]); // } // } // uint8_t get_ds18b20_addr() // { // float temp[8]; // getall_temp(temp); // for(size_t i = 0; i < temp_number; i++) // { // Serial.printf("%d temp: %2f ds18b20 addr :",i,temp[i]); // for(int a = 0 ; a< 8 ;a++) // { // Serial.printf(" %x ",sensoraddr[i][a]); // } // Serial.println(""); // } // return 0; // } // { // "sensor0":{ // "byte0":"", // "byte1":"", // "byte2":"", // "byte3":"", // "byte4":"", // "byte5":"", // "byte6":"", // "byte7":"" // }, // "sensor1":{ // "byte0":"", // "byte1":"", // "byte2":"", // "byte3":"", // "byte4":"", // "byte5":"", // "byte6":"", // "byte7":"" // }, // "sensor2":{ // "byte0":"", // "byte1":"", // "byte2":"", // "byte3":"", // "byte4":"", // "byte5":"", // "byte6":"", // "byte7":"" // }, // "sensor3":{ // "byte0":"", // "byte1":"", // "byte2":"", // "byte3":"", // "byte4":"", // "byte5":"", // "byte6":"", // "byte7":"" // }, // "sensor4":{ // "byte0":"", // "byte1":"", // "byte2":"", // "byte3":"", // "byte4":"", // "byte5":"", // "byte6":"", // "byte7":"" // }, // "sensor5":{ // "byte0":"", // "byte1":"", // "byte2":"", // "byte3":"", // "byte4":"", // "byte5":"", // "byte6":"", // "byte7":"" // }, // "sensor6":{ // "byte0":"", // "byte1":"", // "byte2":"", // "byte3":"", // "byte4":"", // "byte5":"", // "byte6":"", // "byte7":"" // }, // "sensor7":{ // "byte0":"", // "byte1":"", // "byte2":"", // "byte3":"", // "byte4":"", // "byte5":"", // "byte6":"", // "byte7":"" // } // }