samael9,

Скетч для двух датчиков:
PHP код:
#include <OneWire.h>
OneWire ds(10); // линия 1-Wire будет на pin 10
OneWire ds2(11); // линия 1-Wire будет на pin 11
byte i;
byte present = 0;
byte data[12];
byte addr[8];
byte addr2[8];
int Temp, znak, minus;
void setup(void)
{
Serial.begin(9600);
}
void loop(void)
{
static unsigned long time;
static unsigned long flag=0;
if ((millis()-time)>500 && flag==0) //запуск процедуры Temp_A по таймеру каждую секунду, сдвиг 500 милисекунд
{
flag=1;
Temp_A();
}
if ((millis()-time)>1000 && flag==1) //запуск процедуры Temp_B по таймеру каждую секунду, сдвиг 500 милисекунд
{
time = millis();
flag=0;
Temp_B();
}
}
void Temp_A()
{
if ( !ds.search(addr) )
{
ds.reset_search();
return;
}
ds.reset();
ds.select(addr);
ds.write(0x44,1); // запускаем конвертацию
present = ds.reset();
ds.select(addr);
ds.write(0xBE); // считываем ОЗУ датчика
for ( i = 0; i < 9; i++) {data[i] = ds.read();}
// высчитываем температуру датчика 1
Temp=(data[1]<<8)+data[0];
Temp=Temp;
znak=((Temp%16)*100)/160;
if (znak<0 && Temp/16==0) minus=1;
else minus=0;
if (znak<0) znak=znak*-1;
Serial.print("<tempa:");
if (minus==1) Serial.print("-");
Serial.print(Temp/16);
Serial.print(".");
Serial.print(znak);
Serial.print("C");
Serial.print(">");
}
void Temp_B()
{
if ( !ds2.search(addr2) )
{
ds2.reset_search();
return;
}
ds2.reset();
ds2.select(addr2);
ds2.write(0x44,1); // запускаем конвертацию
present = ds2.reset();
ds2.select(addr2);
ds2.write(0xBE); // считываем ОЗУ датчика
for ( i = 0; i < 9; i++) {data[i] = ds2.read();}
// высчитываем температуру датчика 2
Temp=(data[1]<<8)+data[0];
Temp=Temp;
znak=((Temp%16)*100)/160;
if (znak<0 && Temp/16==0) minus=1;
else minus=0;
if (znak<0) znak=znak*-1;
Serial.print("<tempb:");
if (minus==1) Serial.print("-");
Serial.print(Temp/16);
Serial.print(".");
Serial.print(znak);
Serial.print("C");
Serial.print(">");
}
Про прогу и виджет читайте первый пост.
Ссылка,
ссылка.