Измерение отрицательных температур DS18d20

Тема в разделе "Arduino & Shields", создана пользователем Evgeny1909, 9 фев 2019.

  1. Evgeny1909

    Evgeny1909 Нуб

    Приветствую, есть ли у кого кусок скетча проверенный для измерения температуры с помощью ds18d20,а то уже кучу всего перебрал-перепробовал, толком нормально не получается измерить, температуру показывает но изменяется медленно, а минус вообще жестко врет.
     
  2. Asper Daffy

    Asper Daffy Гуру

    Точно d20, а не b20 ?
     
  3. Evgeny1909

    Evgeny1909 Нуб

    b20,ошибся
     
  4. BAR__MEN

    BAR__MEN Иномирянин Команда форума

    Измерял стандартной библиотекой, все ок
     
  5. ИгорьК

    ИгорьК Давно здесь Команда форума

    Подбрось ссылочку - что пробовал то?
     
  6. Airbus

    Airbus Радиохулиган

    В стандартных примерах onewire и Далластемпература есть скетчи-примеры.
     
    Последнее редактирование: 9 фев 2019
    BAR__MEN нравится это.
  7. parovoZZ

    parovoZZ Гуру

    А посмотреть у @ИгорьК посты на эту тему никак? Проблема в переводе дополнительного кода? Так там все просто - побитовая инверсия +1. Отрицательная или положительная температура у нас определяется самым старшим битом. Все это есть в интернетах.
     
  8. Evgeny1909

    Evgeny1909 Нуб

    Я же спросил "а нет ли куска скетча" ?, а не о том "а не подскажете ли, есть ли в интернете скетчи с измерением отрицательной температуры" ? Не подскажете ли есть в примерах что-нибудь, блин просто спросил Ну нет ли у кого нибудь кусочка, ну не просто же так написал данный текст...
     
  9. Evgeny1909

    Evgeny1909 Нуб

    Измеряю вот таким методом. Использую в приложении BlynK., опрашиваю интервалом раз в 30 секунд.

    void sendTemp() {

    inDS = 0;
    sensors.requestTemperatures();
    while (inDS < 10){
    TempDS[inDS] = sensors.getTempCByIndex(inDS);
    if (TempDS[inDS] == -127.00){TempDS[inDS]= 80;
    break; } // пока не доберемся до неподключенного
    inDS++;}

    for (int i=0; i < inDS; i++);

    Blynk.virtualWrite(V10, TempDS[0]); // температура в Blynk

    }
     
  10. ИгорьК

    ИгорьК Давно здесь Команда форума

    Уважаемый, речь шла о ссылочке, коих вы много посмотрели.

    И потом, у всех получается код красиво форматировать, а у вас - нет. Датчики обижаются и плохо работают от этого.
     
  11. parovoZZ

    parovoZZ Гуру

    я бы писал вот так
    Код (C++):
    uint8_t inDS = 10;
    while (inDS --)
    {
    ......
    }
     
  12. ИгорьК

    ИгорьК Давно здесь Команда форума

    ... Ну вот об этом. Интересно же повторить ваши приключения.

    Или не рассказывайте как вы тяжко трудитесь на ниве ардуиностроения. Просто те кто реально в теме начинают думать что вы их за лохов держите.
     
    Daniil и parovoZZ нравится это.
  13. parovoZZ

    parovoZZ Гуру

    никаких скетчей у меня, разумеется, нет (знаете ли - не балуюсь), а вот кусок кода есть
    Код (C++):
        if (receivePayload.temperature & 0xf800){
            receivePayload.temperature = ~(receivePayload.temperature)+1;
            temperature = 0 -  (float)receivePayload.temperature / 16.0;
            }
        else
            {
            temperature = (float)receivePayload.temperature / 16.0;
            }
     
    DetSimen и ИгорьК нравится это.