DHT без тормозов - вопросы по скетчу
- Войдите на сайт для отправки комментариев
Чт, 09/11/2017 - 09:06
Коллеги, добры день!
нужна ваша помощь (програмирование изучал только 30 лет назад по Паскалю и Фортрану :))
Как каждый второй пользователь DHT столкнулся с delay в его штатной библиотеке.
Наткнулся на вот эту "беззадержечную" библиотеку:
https://github.com/olewolf/DHT_nonblocking
в ней пример, он работает.
#include <dht_nonblocking.h> /* Uncomment according to your sensortype. */ #define DHT_SENSOR_TYPE DHT_TYPE_11 //#define DHT_SENSOR_TYPE DHT_TYPE_21 //#define DHT_SENSOR_TYPE DHT_TYPE_22 static const int DHT_SENSOR_PIN = 10; DHT_nonblocking dht_sensor( DHT_SENSOR_PIN, DHT_SENSOR_TYPE ); /* * Initialize the serial port. */ void setup( ) { Serial.begin( 115200 ); } /* * Poll for a measurement, keeping the state machine alive. Returns * true if a measurement is available. */ static bool measure_environment( float *temperature, float *humidity ) { static unsigned long measurement_timestamp = millis( ); /* Measure once every four seconds. */ if( millis( ) - measurement_timestamp > 4000ul ) { if( dht_sensor.measure( temperature, humidity ) == true ) { measurement_timestamp = millis( ); return( true ); } } return( false ); } /* * Main program loop. */ void loop( ) { float temperature; float humidity; /* Measure temperature and humidity. If the functions returns true, then a measurement is available. */ if( measure_environment( &temperature, &humidity ) == true ) { Serial.print( "T = " ); Serial.print( temperature, 1 ); Serial.print( " deg. C, H = " ); Serial.print( humidity, 1 ); Serial.println( "%" ); } }
Но в моем коде уже есть 30-секундные циклы, поэтому хотел из всего примера оставить только сам запрос, типа:
if( dht_sensor.measure( temperature, humidity ) == true )
{ Serial.print( "T = " ); Serial.print( temperature, 1 ); Serial.print( " deg. C, H = " ); Serial.print( humidity, 1 ); Serial.println( "%" ); }
И дальше я встал... Не работает.. Попытался загуглить. что такое & - и толком не понял.
Поскажете неразумному? :)
Попытался загуглить. что такое & - и толком не понял.
Это Вы про строку 51?
Если так, и если верно, что
то в Паскале эта операция обозначается символом @
Функция требует в качестве параметров указатель на область памяти. Чтобы узнать этот адрес в памяти используется &. т.е. &temperature передаст в функцию не значение хранящееся в переменной, а адрес этого "значения" в памяти.
Вопрос на засыпку - что такое "штатная библиотека DHT"? Очень хочется посмотреть, что там delay делает.
Эту я глянул одним глазом - ничего такого, что ее особо отличало от остальных - я не нашёл.
даже если я вдруг и знал это, то за пости 30 лет забыл )
Когда я был ещё более начинающим чем сейчас, опрашивал DHT так
http://arduino.ru/forum/apparatnye-voprosy/chitaem-pokazaniya-dht-bez-biblioteki
Теперь я такие датчики не применяю, но код продолжает работать. Может Вам чем-то поможет.
Когда я был ещё более начинающим чем сейчас, опрашивал DHT так
http://arduino.ru/forum/apparatnye-voprosy/chitaem-pokazaniya-dht-bez-biblioteki
Теперь я такие датчики не применяю, но код продолжает работать. Может Вам чем-то поможет.
у меня этот код не пошел... ошибку уже не помню.
вечером повторю
Когда я был ещё более начинающим чем сейчас, опрашивал DHT так
http://arduino.ru/forum/apparatnye-voprosy/chitaem-pokazaniya-dht-bez-biblioteki
Теперь я такие датчики не применяю, но код продолжает работать. Может Вам чем-то поможет.
все пошло. причем с прошлого раза.
почему позавчера не компились - ХЗ.
Спасибо всем откликнувшимся!