Библиотека DHT11 и VirtualWire

Im_an_Engineer
Im_an_Engineer аватар
Offline
Зарегистрирован: 14.03.2015

Добрый день. Столкнулся со следующей проблемой: пишу программу, которая использует несколько библиотек, конкретно-

#include <UTFT.h>
#include <UTouch.h>
#include <UTFT_Buttons.h>
#include <dht11.h>
#include <IRremote.h>
#include <VirtualWire.h>.
Писал всё отдельными частями, а потом собирал воедино. На завершаюшем этапе, интегрировании в общую программу функции с использованием VirtualWire, датчики dht11 перестаkb работать, т.е. идут сплошные ошибки. Я так предполагаю, что существует проблема совместимости библиотек DHT11 и VirtualWire.
С подобным уже сталкивался, когда у меня конфликтовали библиотеки DHT и Irremote, собственно поэтому и заменил библиотеку 
DHT на DHT11. Примечательны следующие моменты:
1) если в проекте закоментировать строчку:  vw_rx_start();       // Start the receiver PLL running
то всё работает! имеется ввиду опрос датчиков. Радиомодуль при этом, естественно не ловит сигнал.
2) Создавал отдельно минипроект, в котором использовал только функции с dht11 и  virtualwire. Так Всё работает.
 
После всего вышесказанного я пребываю в неком замешательстве, поэтому был бы благодарен совету или "пинку" в нужном направлении, а то я что-то уже и не знаю куда копать...  Или подскажите другую библиотеку работы с модулем 433mhz вместо VirtualWire.
RomAndry
RomAndry аватар
Offline
Зарегистрирован: 20.02.2014

Скорей всего, у Вас что-то использует Timer1, кроме VW

куда, что подключено по выводам?

Im_an_Engineer
Im_an_Engineer аватар
Offline
Зарегистрирован: 14.03.2015

Контроллер - mega;

экран -38,39,40,41

тач - 6,5,4,3,2

DHT - 8,9

IR - 10

модуль 433 mhz - 11 ( пробовал на 10, он там не работает)

про timer тоже мысли были. В программе ещё используется системное время функцией millis(), но как я понял там используется таймер 0

RomAndry
RomAndry аватар
Offline
Зарегистрирован: 20.02.2014

Im_an_Engineer пишет:

IR - 10

Библиотека VirtualWire использует в Ардуино Timer1, и это сказывается на работе PWM выводов 9 и 10.
переведите в библиотеке:
IR с 10 на другой вывод, но не 12
ну и DHT вывод 9
их лучше всего на A0, A1

Im_an_Engineer
Im_an_Engineer аватар
Offline
Зарегистрирован: 14.03.2015

Timer1 ведь влияет только на работу ШИМ. На входа ведь он не должен влиять. Тем более ИК(на 10 порту) работает, а DHT( и на 8 и на 9) ошибки шлют. И я пробовал другие входа - та же история.
А почему, кстати, не советуете 12 использовать? Про него не помню чтоб где-то читал.

RomAndry
RomAndry аватар
Offline
Зарегистрирован: 20.02.2014

Im_an_Engineer пишет:

А почему, кстати, не советуете 12 использовать? Про него не помню чтоб где-то читал.


12 - это для 433 RX

AIgor
Offline
Зарегистрирован: 04.06.2015

Добрый день. модуль 433 mhz - 8 порт,DHT был на 9( прочитал ветку и понял что таймер1 и сказывается на работе PWM выводов 9 и 10 . Ставил уже DHT и на 46 порт, всеравно через раз снимает показания, в основном мусор. Как использовать эти две библиотеки и на каких пинах садить модуль 433 и DHT? Спасибо.

Im_an_Engineer
Im_an_Engineer аватар
Offline
Зарегистрирован: 14.03.2015

А какую библиотеку используешь для DHT? Есть библиотека DHT, и есть DHT11, они используют разные таймеры, попробуюй с другой библиотекой!

AIgor
Offline
Зарегистрирован: 04.06.2015

Я не помню где скачал библиотеку, там можно выбирать датчики DHT11, DHT21 или DHT22, то есть общая для всех типов. У меня датчик АМ2301 а там вроде DHT21. Скиньте, пожалуйста, библиотеку для этого датчика где не используется таймер1. Спасибо.

SunX
SunX аватар
Offline
Зарегистрирован: 04.10.2014

У Adafruit есть библиотека для DHT11/22 датчиков: https://github.com/adafruit/DHT-sensor-library
Там внутри, правда, жуткий быдлокод (на мой личный взгляд), но зато никаких таймеров (кроме того, что отвечает за mills()), но вроде работает.
 

AIgor
Offline
Зарегистрирован: 04.06.2015

Спасибо, попробую.

AIgor
Offline
Зарегистрирован: 04.06.2015

Датчик работает нормально, спасибо. Приемник пока нет возможности проверить.