DS18B20 подскажите!

sever
Offline
Зарегистрирован: 25.06.2018

Добрый день, помогите пожалуйста с проблемкой.

Симулирую раюоту двух DS18B20 в протеусе с помощью скетча (Multiple, прилагается).

Показания с датчиков считываются, но иногда но иногда к показаниям датчиков "примешивается" цифра -127.

Всвязи с этим два вопроса:

1. Как сделать симуляцию нормальной, откуда эта "-127"? (вопрос не оч важный).

2. Что нужно изменить в скетче, чтобы получать значения температур с каждого датчика в свою отдельную переменную для дальнейшего использования этой переменной по своему желанию (самый важный вопрос для меня)) ).

////////////////////////////////////////////////////////////////////////

#include <OneWire.h>
#include <DallasTemperature.h>
 
#define ONE_WIRE_BUS 2
 
OneWire oneWire(ONE_WIRE_BUS);
 
DallasTemperature sensors(&oneWire);
 
DeviceAddress Thermometer1 = { 
  0x28, 0x30, 0xC5, 0xB8, 0x00, 0x00, 0x00, 0x8E };  // адрес датчика DS18B20 B8C530
DeviceAddress Thermometer2 = { 
  0x28, 0x31, 0xC5, 0xB8, 0x00, 0x00, 0x00, 0xB9 }; 
 int A;
void setup() {
 
  sensors.begin();
  sensors.setResolution(Thermometer1, 10);
  sensors.setResolution(Thermometer2, 10);
 
  Serial.begin(9600);
}
 
void printTemperature(DeviceAddress deviceAddress) {
  float tempC = sensors.getTempC(deviceAddress);
  Serial.println(tempC);
void loop() {
 
 
  sensors.requestTemperatures();
  Serial.print("Sensor1  ");
  
 printTemperature(Thermometer1);
  
 
  Serial.print("Sensor2  ");
  
  printTemperature(Thermometer2);
  
}
////////////////////////////////////////////////////////////////////////////////
 
sever
Offline
Зарегистрирован: 25.06.2018

Сори, за корявые вставки. Не находу возможности редактировать предыдущее сообщение, вот фотки

1.      https://cdn1.savepice.ru/uploads/2018/7/6/3c3d29a7f90a7c135679dd5465eeec...

2.      https://ibb.co/eX5Uzy

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Вставьте код нормальнло.

sever
Offline
Зарегистрирован: 25.06.2018
#include <OneWire.h>
#include <DallasTemperature.h>
 
#define ONE_WIRE_BUS 2
 
OneWire oneWire(ONE_WIRE_BUS);
 
DallasTemperature sensors(&oneWire);
 
DeviceAddress Thermometer1 = { 
  0x28, 0x30, 0xC5, 0xB8, 0x00, 0x00, 0x00, 0x8E };  // адрес датчика DS18B20 B8C530
DeviceAddress Thermometer2 = { 
  0x28, 0x31, 0xC5, 0xB8, 0x00, 0x00, 0x00, 0xB9 }; 
 int A;
void setup() {
 
  sensors.begin();
  sensors.setResolution(Thermometer1, 10);
  sensors.setResolution(Thermometer2, 10);
 
  Serial.begin(9600);
}
 
void printTemperature(DeviceAddress deviceAddress) {
  float tempC = sensors.getTempC(deviceAddress);
  Serial.println(tempC);
} 
void loop() {
 
 
  sensors.requestTemperatures();
  Serial.print("Sensor1  ");
  
 printTemperature(Thermometer1);
  
 
  Serial.print("Sensor2  ");
  
  printTemperature(Thermometer2);
  
}