Там можно записать обозначения фактического местоположения датчика уникальное для шлейфа но одинаковое для всех шлейфов. И в последствии на основе этих обозначений приборы-считыватели будут знать какой датчик они опрашивают в шлейфе.eugeneb писал(а):А те три байта, которые вы упомянули, можно запрограммировать отдельно,раз и на всегда.
Только оно вам надо? Нахвоста?
Код: Выделить всё
#include <OneWire.h>
OneWire ds(2); // on pin 10 (a 4.7K resistor is necessary)
byte deviceType;
void setup(void) {
Serial.begin(9600);
}
void loop(void) {
byte i;
byte type_s;
byte data[12];
byte addr[8];
float celsius;
if ( !ds.search(addr)) {
ds.reset_search();
delay(250);
return;
}
if (OneWire::crc8(addr, 7) != addr[7]) {
return;
}
switch (addr[0]) {
case 0x10:
type_s = 1;
deviceType=1; //Chip = DS18S20 or old DS1820
break;
case 0x28:
type_s = 0;
deviceType=2;//Chip = DS18B20
break;
case 0x22:
type_s = 0;
deviceType=3;// Chip = DS1822
break;
default:
deviceType=0;//Другое устройство
return;
}
ds.reset();
ds.select(addr);
ds.write(0x44, 1);
delay(1000);
ds.reset();
ds.select(addr);
ds.write(0xBE);
for ( i = 0; i < 9; i++) {data [i]= ds.read();}
int16_t raw = (data[1] << 8) | data[0];
if (type_s) {
raw = raw << 3;
if (data[7] == 0x10) {
raw = (raw & 0xFFF0) + 12 - data[6];
}
} else {
byte cfg = (data[4] & 0x60);
if (cfg == 0x00) raw = raw & ~7;
else if (cfg == 0x20) raw = raw & ~3;
else if (cfg == 0x40) raw = raw & ~1;
}
celsius = (float)raw / 16.0;
Serial.write (1);
Serial.write (2);
Serial.print (deviceType);
Serial.write (3);
for( i = 0; i < 8; i++) {
Serial.write (2);
Serial.print(addr[i], HEX);
Serial.write (3);
}
Serial.write (2);
Serial.print(celsius);
Serial.write (3);
Serial.write (4);
}
Я так понимаю, чела бросили на чужое хозяйство...slavas писал(а):А когда датчики ставили о чём думали, это работало уже или мысль пришла и в полях датчики развесили?
Примерно так. К стати узнал что в регистры (вроде с 4-7) записаны данные о номере датчика и о номере шлейфа. Осталась попытаться их прочесть. Сейчас буду пробовать.eugeneb писал(а):Я так понимаю, чела бросили на чужое хозяйство...