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
Теперь я такие датчики не применяю, но код продолжает работать. Может Вам чем-то поможет.
все пошло. причем с прошлого раза.
почему позавчера не компились - ХЗ.
Спасибо всем откликнувшимся!