Главная › Форумы › Конструкторское бюро › Автоматизация › D18B20, Arduino, MODBUS, Master SCADA › Ответ в теме: D18B20, Arduino, MODBUS, Master SCADA
11.01.2018 в 21:08
#15628
Тут выложил скетч по датчикам.
Спасибо! Да, именно так и планировал. Только датчики на разных пинах, чтобы с адресами не заморачиваться.
Вот так видел себе. Это не финальный код, а так – основа, ее еще допиливать надо немного.
//***Функция считывания температуры c Далласов*****
void dallRead(unsigned long interval){
static unsigned long prevTime = 0;
if (millis() - prevTime > interval) { //Проверка заданного интервала
static boolean flagDall = 0; //Признак операции
prevTime = millis();
flagDall =! flagDall; //Инверсия признака
if (flagDall) {
ds.reset();
ds.write(0xCC); //Обращение ко всем датчикам
ds.write(0x44); //Команда на конвертацию
flagDallRead = 1; //Время возврата в секундах
}
else {
byte i;
int temp;
for (i = 0; i < 3; i++){ //Перебор количества датчиков
ds.reset();
ds.select(addr);
ds.write(0xBE); //Считывание значения с датчика
temp = (ds.read() | ds.read()<<8); //Принимаем два байта температуры
Temp = (float)temp / 16.0;
flagDallRead = 2; //Время возврата в секундах
}
}
}
}
Хорошо живет на свете Винни-Пух...