Тема: Вопрос:одновременная работа 2-х,3-х DS18b20
Доброго дня товарищи.Суть вопроса такова:необходимо снимать показания с 2-х, 3-х и более датчиков температуры.В наличии имеются 4 шт. Dallas ds18b20.Кусок программы который обнаруживает датчики и их адреса есть (при практическом подключении 2-х датчиков их адреса опознались).Кусок программы который общается с датчиком подключенным через шину onewire при паразитном питании есть (ниже).
#include <OneWire.h>
//init the one wire interface on pin 10
OneWire ow(10);
//write here the address you receive from the other program
byte sensor[8] = {0x10, 0x1D, 0x30, 0xF9, 0x01, 0x08, 0x00, 0x51};
void setup(void) {
Serial.begin(9600);
}
void writeTimeToScratchpad(byte* address){
//reset the bus
ow.reset();
//select our sensor
ow.select(address);
//CONVERT T function call (44h) which puts the temperature into the
scratchpad
ow.write(0x44,1);
//sleep a second for the write to take place
delay(1000);
}
void readTimeFromScratchpad(byte* address, byte* data){
//reset the bus
ow.reset();
//select our sensor
ow.select(address);
//read the scratchpad (BEh)
ow.write(0xBE);
for (byte i=0;i<9;i++){
data[i] = ow.read();
}
}
float getTemperature(byte* address){
int tr;
byte data[12];
writeTimeToScratchpad(address);
readTimeFromScratchpad(address,data);
//put in temp all the 8 bits of LSB (least significant byte)
tr = data[0];
//check for negative temperature
if (data[1] > 0x80){
tr = !tr + 1; //two's complement adjustment
tr = tr * -1; //flip value negative.
}
//COUNT PER Celsius degree (10h)
int cpc = data[7];
//COUNT REMAIN (0Ch)
int cr = data[6];
//drop bit 0
tr = tr >> 1;
//calculate the temperature based on this formula :
//TEMPERATURE = TEMP READ - 0.25 + (COUNT PER Celsius Degree - COUNT REMAIN)
/ (COUNT PER Celsius Degree)
return tr - (float)0.25 + (cpc - cr)/(float)cpc;
}
//fahrenheit to celsius conversion
float f2c(float val){
float aux = val - 32;
return (aux * 5 / 9);
}
//celsius to fahrenheit conversion
float c2f(float val){
float aux = (val * 9 / 5);
return (aux + 32);
}
void loop(void) {
float temp;
float tmp2;
tmp2 = getTemperature(sensor);
temp = c2f(tmp2);
Serial.print("Temp = ");
Serial.print(temp);
Serial.print(" F or ");
Serial.print(tmp2);
Serial.println(" C");
//wait 30 seconds
delay(30000);
}
Собственно прошу вас пояснить и прокомментировать строки программы (дабы понимать что тут написано) и как привязать еще один или более датчиков к этой программе.
СПАСИБО!!!!!