php读取ds18b20,麻瓜学习笔记:02_OneWare总线多个DS18B20数据读取

#include

#include

// Data wire is plugged into port 2 on the Arduino

#define ONE_WIRE_BUS 3

#define TEMPERATURE_PRECISION 12

// Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)

OneWire oneWire(ONE_WIRE_BUS);

// Pass our oneWire reference to Dallas Temperature.

DallasTemperature sensors(&oneWire);

int numberOfDevices; // Number of temperature devices found

DeviceAddress tempDeviceAddress; // We'll use this variable to store a found device address

void setup(void)

{

// start serial port

Serial.begin(9600);

Serial.println("Dallas Temperature IC Control Library Demo");

// Start up the library

sensors.begin();

// Grab a count of devices on the wire

numberOfDevices = sensors.getDeviceCount();

// locate devices on the bus

Serial.print("Locating devices...");

Serial.print("Found ");

Serial.print(numberOfDevices, DEC);

Serial.println(" devices.");

// report parasite power requirements

Serial.print("Parasite power is: ");

if (sensors.isParasitePowerMode()) Serial.println("ON");

else Serial.println("OFF");

// Loop through each device, print out address

for(int i=0;i

{

// Search the wire for address

if(sensors.getAddress(tempDeviceAddress, i))

{

Serial.print("Found device ");

Serial.print(i, DEC);

Serial.print(" with address: ");

printAddress(tempDeviceAddress);

Serial.println();

Serial.print("Setting resolution to ");

Serial.println(TEMPERATURE_PRECISION,DEC);

// set the resolution to 9 bit (Each Dallas/Maxim device is capable of several different resolutions)

sensors.setResolution(tempDeviceAddress, TEMPERATURE_PRECISION);

Serial.print("Resolution actually set to: ");

Serial.print(sensors.getResolution(tempDeviceAddress), DEC);

Serial.println();

}else{

Serial.print("Found ghost device at ");

Serial.print(i, DEC);

Serial.print(" but could not detect address. Check power and cabling");

}

}

}

// function to print the temperature for a device

void printTemperature(DeviceAddress deviceAddress)

{

// method 1 - slower

//Serial.print("Temp C: ");

//Serial.print(sensors.getTempC(deviceAddress));

//Serial.print(" Temp F: ");

//Serial.print(sensors.getTempF(deviceAddress)); // Makes a second call to getTempC and then converts to Fahrenheit

// method 2 - faster

float tempC = sensors.getTempC(deviceAddress);

Serial.print("Temp C: ");

Serial.print(tempC);

Serial.print(" Temp F: ");

Serial.println(DallasTemperature::toFahrenheit(tempC)); // Converts tempC to Fahrenheit

}

void loop(void)

{

// call sensors.requestTemperatures() to issue a global temperature

// request to all devices on the bus

Serial.print("Requesting temperatures...");

sensors.requestTemperatures(); // Send the command to get temperatures

Serial.println("DONE");

// Loop through each device, print out temperature data

for(int i=0;i

{

// Search the wire for address

if(sensors.getAddress(tempDeviceAddress, i))

{

// Output the device ID

Serial.print("Temperature for device: ");

Serial.println(i,DEC);

// It responds almost immediately. Let's print out the data

printTemperature(tempDeviceAddress); // Use a simple function to print out the data

}

//else ghost device! Check your power requirements and cabling

}

delay(10000);

Serial.println(":");

Serial.println(":");

Serial.println(":");

}

// function to print a device address

void printAddress(DeviceAddress deviceAddress)

{

for (uint8_t i = 0; i < 8; i++)

{

if (deviceAddress[i] < 16) Serial.print("0");

Serial.print(deviceAddress[i], HEX);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值