Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 13
  1. #1
    Пользователь
    Регистрация
    08.01.2012
    Сообщений
    71
    Вес репутации
    166

    По умолчанию Часы с градусником на ds18b20

    У меня есть скетч часов , который нормально работает на моей меге .
    После получения датчиков температуры решил добавить градусник , чтоб место на экране не пропадало.
    Воспользовался библиотекой которую тут посоветовали и добавил несколько строк в скетч .
    Все работает , но показания градусника не постоянно на экране а мигают с примерно раз в секунду .Видимо это происходит в момент опроса датчика .
    Вопрос как это мигание убрать ?
    И еще из за этого показания секунд на часах прыгают через секунду.
    скетч тут http://pastebin.com/jfthH65s
    библиотека для датчика тут http://www.milesburton.com/?title=Da...ontrol_Library
    Спасибо .

  2. #2
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,379
    Вес репутации
    10

    По умолчанию Re: Часы с градусником на ds18b20

    А если delay(1000); убрать?
    Еще нужно опрашивать буфер вот так
    if(Serial.available()>n) вместо n нужно указать реальное число принимаемых байт
    Последний раз редактировалось Chip; 10.02.2012 в 17:46.

  3. #3
    Пользователь
    Регистрация
    08.01.2012
    Сообщений
    71
    Вес репутации
    166

    По умолчанию Re: Часы с градусником на ds18b20

    мигание происходит после или во время выполнения этой строки
    sensors.requestTemperatures();
    проверял , сначала строка была перед lcd.print("T: "); и мигало T: 20.0
    переставил
    lcd.print("T: ");
    sensors.requestTemperatures();
    lcd.print(sensors.getTempCByIndex(0));
    и T: перестало мигать, теперь только цифры температуры мигают. Остальная информация статично висит на экране .
    и delay в цикле установки времени не влияет .

  4. #4
    Пользователь
    Регистрация
    08.01.2012
    Сообщений
    71
    Вес репутации
    166

    По умолчанию Re: Часы с градусником на ds18b20

    с миганием разобрался .
    перенес sensors.requestTemperatures(); в начало void loop
    и вместо lcd.print(sensors.getTempCByIndex(0)); сделал lcd.print(temp) значение которой получаестя сразу за sensors.requestTemperatures();
    насколько я понял теперь надо в библиотеке все delay на millis менять .
    Правда не уверен что у меня это получится .

  5. #5
    Пользователь
    Регистрация
    08.01.2012
    Сообщений
    71
    Вес репутации
    166

    По умолчанию Re: Часы с градусником на ds18b20

    Помогите убрать delay из библиотеки DallasTemperature

    Для работы с датчиком необходимо выдерживать временные паузы , в библиотеке это реализовано через delay() .

    Но я использую эту библиотеку в часах и из за delay индикация секунд идет с пропусками .

    Как я понимаю надо delay заменить на использование millis как в этом примере http://arduino.ru/tutorials/BlinkWithoutDelay.

    Но написать не получается , может кто поможет переделать фрагмент кода , был бы очень благодарен.

    switch (*bitResolution)
    {
    case 9:
    delay(94);
    break;
    case 10:
    delay(188);
    break;
    case 11:
    delay(375);
    break;
    case 12:
    default:
    delay(750);
    break;
    }

  6. #6
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    54
    Сообщений
    13,379
    Вес репутации
    10

    По умолчанию Re: Часы с градусником на ds18b20

    Это же ветвление и в зависимости от значения в bitResolution
    н выходе будет импульс разной длины

  7. #7
    Пользователь
    Регистрация
    08.01.2012
    Сообщений
    71
    Вес репутации
    166

    По умолчанию Re: Часы с градусником на ds18b20

    весь вопрос в том как переписать это и не использовать delay

  8. #8
    Пользователь
    Регистрация
    11.01.2008
    Сообщений
    21
    Вес репутации
    205

    По умолчанию Re: Часы с градусником на ds18b20

    Цитата Сообщение от Mitos Посмотреть сообщение
    весь вопрос в том как переписать это и не использовать delay
    Придется переписывать еще и OneWire библиотеку Правильнее было бы RTC модуль или чип использовать, например как тут: DS1307 или тут: DS1307 RTC

  9. #9
    Пользователь
    Регистрация
    08.01.2012
    Сообщений
    71
    Вес репутации
    166

    По умолчанию Re: Часы с градусником на ds18b20

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

  10. #10
    Пользователь
    Регистрация
    11.01.2008
    Сообщений
    21
    Вес репутации
    205

    По умолчанию Re: Часы с градусником на ds18b20

    Цитата Сообщение от Mitos Посмотреть сообщение
    так часы то идут нормально , проблема только с индикацией .
    и происходят они из за delay в библиотеке от датчика .
    1. уменьши точность датчика температуры, поставь PRECISION=9, это есть в примере к библиотеке, опрос будет происходить быстрее.

    2. Измерь, сколько миллисекунд опрашивается датчик температуры (время работы sensors.requestTemperatures()) и в основном цикле вместо delay(1000); напиши так:
    Код:
    void loop(){    
    
      sensors.requestTemperatures();
      delay(1000-время работы requestTemperatures);
    }
    а по хорошему - можно вообще опрашивать датчик температуры раз в 2-3-5 минут, не чаще.

    Но я бы все же использовал RTC, это же очевидно - и высокая точность, и часы не зависят от отключения питания...
    Последний раз редактировалось DNZ; 12.02.2012 в 02:30.

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •