Atmega128 + DS18B20 + Аналоговый порт

3d_killer
Offline
Зарегистрирован: 13.06.2018

Помогите пожалуйста решить вопрос, датчик DS18B20 не хочет работать на аналоговом порте, на цифровом нормально работает, но они у меня все заняты. Читал документацию, он должен работать, но я пробой на разных портах A1, A2, A3, A4 результат один и тот же.

define ONE_WIRE_BUS_1 A1//Датчик температуры 1
OneWire ds1(ONE_WIRE_BUS_1);
DallasTemperature sensor1(&ds1);
volatile flot c1;

void setup() {
  sensor1.begin();
}
void loop()
  {
      delay(1000);
      sensor1.requestTemperatures();
    c1=sensor1.getTempCByIndex(0);
  }

Упорно показывает -127

b707
Offline
Зарегистрирован: 26.05.2017

а от цифровых-то портов работает, проверяли? - может дело не в порте, а в датчике?

sadman41
Offline
Зарегистрирован: 19.10.2016

И что, это работает?

volatile flot c1;

3d_killer
Offline
Зарегистрирован: 13.06.2018

define ONE_WIRE_BUS_1 A1//Датчик температуры 1
define ONE_WIRE_BUS_2 29//Датчик температуры 1
OneWire ds1(ONE_WIRE_BUS_1); DallasTemperature sensor1(&ds1);

OneWire ds2(ONE_WIRE_BUS_2);
DallasTemperature sensor2(&ds2);
volatile float c1,c2; void setup() { sensor1.begin();

sensor2.begin();
} void loop() { delay(1000); sensor1.requestTemperatures(); c1=sensor1.getTempCByIndex(0);

sensor2.requestTemperatures();
    c2=sensor2.getTempCByIndex(0);
}

Вот так показывает на втором текущую температуру, на первом -127, датчики местами менял

3d_killer
Offline
Зарегистрирован: 13.06.2018

это я вручную добавил, в программе float (случайно)

b707
Offline
Зарегистрирован: 26.05.2017

а если к пину А1 обратится по номеру - 46? - не поможет?

Это у вас на 128 меге все пины заняты? -что ж вы такое ваяете?

3d_killer
Offline
Зарегистрирован: 13.06.2018

b707 пишет:

а если к пину А1 обратится по номеру - 46? - не поможет?

Это у вас на 128 меге все пины заняты? -что ж вы такое ваяете?

как раз пробовал и по цифровым именам, толку нет.

Да это домашняя электроника, несколько портов есть свободных, но они на плате не разведены и находятся в другой стороне, не пойму в чем проблема в документации сказано к любому порту.

vk007
Offline
Зарегистрирован: 16.06.2015

3d_killer пишет:

но они на плате не разведены и находятся в другой стороне

А вы уверены, что правильно подключились к тому, что надо? Вы проверяли их, как обычные пины, в них что-то пишется/читается?

3d_killer
Offline
Зарегистрирован: 13.06.2018

если я с пином работаю как с цифровым, то есть записать высокий/низкий уровень, то прибором вижу 0 вольт и 5 вольт

ELITE
ELITE аватар
Offline
Зарегистрирован: 11.01.2018

может он просто не успевает отдать данные

добавьте еще паузу одну

delay(1000);

sensor1.requestTemperatures();

delay(1000); 

c1=sensor1.getTempCByIndex(0);

---

у меня 3 датчика висят и работают
я отправляю команду на обновления данных (на все сразу) и жду 1 секунду и только потом считываю результаты

всё стабильно работает нонстоп уже несколько месяцев (холодильник цифровизировал)

 

Гриша
Offline
Зарегистрирован: 27.04.2014

почитайте пост 42 (в первую очередь) да и всю тему, если не читали...