DS18B20

Тема в разделе "Arduino & Shields", создана пользователем Perun61, 15 ноя 2012.

  1. NR55RU

    NR55RU Гик

    Для начала отключите ВСЕ от вашего ардуина и подцепите только 1 датчик, получите с него значения и выводите в сериал и смотрите будут проблемы или нет, если проблем не будет докиньте второй датчик и смотрите, если и дальше проблем не будит докинте уже ЛСД и если появятся проблемы тогда его включение вносит проблему, и тогда уже куда проще понимать.
    А если проблема вылезет на пустом ардуине с одним датчиком то уже значит или датчик или дуня.

    Вы собрали все в кучу и пытаетесь найти в куче проблему, разделите проект на составляющие и протестируйте каждую составляющею и выясните появление какой составляющей приводит к проблеме это называется локализацией проблемы, локаизовав будет уже в разы проще понять что случилось :)
     
    zsm нравится это.
  2. stalker_kz

    stalker_kz Нерд

    В общем всем спасибо за советы!

    короче разобрался... цепанул питание не от usb а через VIN.... и все работает, когда подключен к компьютеру то скачет, почему хз его знает, походу при обращении пк к юсб так и происходит котовасия, или питания на все не хватает от usb... вопрос можно одновременно через VIN и USB ардуино подключать или нельзя? Просто себе на будущее, а то все время перетыкивать провода от вин к юсб... неудобно.
     
  3. Megakoteyka

    Megakoteyka Оракул Модератор

    Для внешних жестких дисков бывают в природе шнурки с дополнительным хвостом USB. Через такой шнурок можно высосать из компа вдвое больше тока.
     
  4. yurets

    yurets Нуб

    Извините что в этой теме спрашиваю но не могли бы вы подсказать как вывести на дисплей только целую чать температуры ? Спасибо

    Извиняюсь разобрался. Правда без округления но оно мне так точно не надо
     
    Последнее редактирование: 26 янв 2014
  5. Megakoteyka

    Megakoteyka Оракул Модератор

    Привести ее к целочисленному типу.
    (int)temp
     
  6. dreadfull

    dreadfull Гик

    попробовал ваш скетч но в этом месте выдает ошибку.... попробовал скетч другого человека, там присутствует такая же строчка и на ней такая же ошибка. вопрос - в чем проблема???
     
  7. Megakoteyka

    Megakoteyka Оракул Модератор

    Ошибки разные бывают. Как нам узнать, с какой именно столкнулись Вы? Телепатов тут нет.
     
  8. dreadfull

    dreadfull Гик

    ща)
    Код (Text):


    sketch_mar20a:11: error: no matching function for call to 'DallasTemperature::DallasTemperature(OneWire*)'
    C:\Documents and Settings\Администратор\Мои документы\Arduino\libraries\DallasTemperature/DallasTemperature.h:63: note: candidates are: DallasTemperature::DallasTemperature(StratBase*)
    C:\Documents and Settings\Администратор\Мои документы\Arduino\libraries\DallasTemperature/DallasTemperature.h:38: note:                DallasTemperature::DallasTemperature(const DallasTemperature&)
    sketch_mar20a.ino: In function 'void setup()':
    sketch_mar20a:25: error: no matching function for call to 'DallasTemperature::begin()'
    C:\Documents and Settings\Администратор\Мои документы\Arduino\libraries\DallasTemperature/DallasTemperature.h:69: note: candidates are: void DallasTemperature::begin(uint8_t)
    C:\Documents and Settings\Администратор\Мои документы\Arduino\libraries\DallasTemperature/DallasTemperature.h:78: note:                void DallasTemperature::begin(NewOneWire&)
    sketch_mar20a.ino: In function 'void readtemp()':
    sketch_mar20a:54: error: 'class DallasTemperature' has no member named 'requestTemperatures'
    sketch_mar20a:55: error: 'class DallasTemperature' has no member named 'getTempCByIndex'
    sketch_mar20a:56: error: 'class DallasTemperature' has no member named 'getTempCByIndex'
    sketch_mar20a:58: error: 'class DallasTemperature' has no member named 'getTempCByIndex'
    sketch_mar20a:60: error: 'class DallasTemperature' has no member named 'getTempCByIndex'
     
  9. sanik

    sanik Гик

    А библиотека DallasTemperature.h присутсвует?
     
  10. dreadfull

    dreadfull Гик

    вроде да, но такое чувство, что не работает....
     

    Вложения:

  11. sanik

    sanik Гик

    Попробуйте другую версию скачать У меня такое было с переходником I2C на LSD три библиотеки перебрал прежде чем заработал...
     
  12. dreadfull

    dreadfull Гик

    там на картинке видно две библиотеки даласа. попробую еще:cool:
     
  13. sanik

    sanik Гик

    Так скорей всего они конфликтуют еще есть вариант arduino - 023 Я обычно если меняю то старый вариант удаляю и подменяю новый вариант.
     
    dreadfull нравится это.
  14. dreadfull

    dreadfull Гик

    в этом же архиве находится библиотека OneWire и она работает...
    а название библиотеки DallasTemperature.h должно быть оранжевого цвета??? остальные библиотеки оранжевым цветом выделяется, а эта нет...
     
  15. dreadfull

    dreadfull Гик

    ув. sanik. вы были все-таки правы!!!) правда с 6 архива попустило скетч))) все маслает. остается один только вопрос: где мы задаем вход от датчика температуры, "#define ONE_WIRE_BUS 2" - это он???

    и еще. на дисплее во втором ряду в самом низу есть типа снежинка.
    1. что это?
    2. зачем она там нужна?
    3. и в какой строке скетча она прописывается????
     
  16. sanik

    sanik Гик

    На свой вопрос вы сами ответили :)
     
  17. sanik

    sanik Гик

    На свой вопрос вы сами ответили :)

    Работа снежинки вот здесь точно не знаю ну вроде как просто так мигает
    Код (Text):
    lcd.setCursor ( 15, 1 );
    lcd.print("*");
    readtemp();
    delay (500);
    lcd.setCursor ( 15, 1 );
    lcd.print(" ");
    delay (500);
     
  18. dreadfull

    dreadfull Гик

    точняк!)
     
  19. Djvan

    Djvan Нерд

    Имеется дисплей 16х2 (подключен по i2c) и два датчика температуры. Все нормально отображается, но данные температуры мигаю (приблизительно с интервалом 1 секунда) - хочется сделать, чтобы постоянно горели. Не подскажите где копать? И второй вопрос - температура показывается до сотых - как округлить до десятых? До целых? Заранее благодарен.
     
  20. geher

    geher Гуру

    А зачем инициализация дисплея при каждом выводе в функции printTemperature?
    Логично вынести

    lcd.init(); // инициализация LCD
    lcd.backlight(); // включаем подсветку
    lcd.clear(); // очистка дисплея

    В setup()
    При выводе данных в то же место, они будут сами затирать предыдущее значение. Если новые данные короче, то можно добавить в конце еще пробел

    Кроме того, код несколько запутан. В printTemperature выводятся заголовки, а в loopсами значения температуры.
    Логичнее было бы все вынести в функцию. И вызывать ее один раз.
    Чтобы не дергать лишний раз датчик, логично было бы в функции считать значение в переменную, а затем выводить на экран и в Serial сначала для одного датчика, потом для другого.

    А по приведенному коду получается. что сначала очищается экран и выводятся заголовки, потом выводится температура обоих датчиков, потом опять очищается экран и выводятся заголовки.

    Чтобы выводить один символ после запятой, если не ошибаюсь, в
    lcd.print(sensors.getTempC(Thermometer2));
    надо добавить еще один параметр - 1
    lcd.print(sensors.getTempC(Thermometer2),1);
    Для другого датчика аналогично.