Страница 1 из 3
-
Здраствуйте! Решил я значит сделать беспроводную метеостанцию и начал писать код. Написал для второй части (которая будет на улице) и проверил его.
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <DHT.h>
#include <LowPower.h>#define dataPin 8 // DHT22 data pin
dht DHT; // Creates a DHT objectRF24 radio(10, 9); // CE, CSN
const byte address[6] = «00001»;char thChar[32] = «»;
String thString = «»;void setup() {
radio.begin();
radio.openWritingPipe(address);
radio.setPALevel(RF24_PA_MIN);
radio.stopListening();}
void loop() {
int readData = DHT.read22(dataPin);
int t = DHT.temperature;
int h = DHT.humidity;
thString = String(t) + String(h);
thString.toCharArray(thChar, 12);
for (int i = 0; i <= 3; i++) {
radio.write(&thChar, sizeof(thChar));
delay(50);
}
for (int sleepCounter = 15; sleepCounter > 0; sleepCounter—)
{
LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
}
}Вылезла ошибка:
exit status 1
‘dht’ does not name a typeПодскажите, что нужно сделать? Я уже несколько часов не могу понять…Зарание спасибо!
-
Скорее всего так
DHT dht ; // Creates a DHT objectи далее в скетче меняете DHT.temperature на dht .temperature и т.д.
-
Поменял. Спасибо! Получилось так
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <DHT.h>
#include <LowPower.h>#define dataPin 8
DHT dht;RF24 radio(10, 9); // CE, CSN
const byte address[6] = «00001»;char thChar[32] = «»;
String thString = «»;void setup() {
radio.begin();
radio.openWritingPipe(address);
radio.setPALevel(RF24_PA_MIN);
radio.stopListening();}
void loop() {
int readData = dht.read22(dataPin);
int t = dht.temperature;
int h = dht.humidity;
thString = String(t) + String(h);
thString.toCharArray(thChar, 12);for (int i = 0; i <= 3; i++) {
radio.write(&thChar, sizeof(thChar));
delay(50);
}
// Sleep for 2 minutes, 15*8 = 120s
for (int sleepCounter = 15; sleepCounter > 0; sleepCounter—)
{
LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);
}
}Но все равно вылезла ошибка, но уже другая:
exit status 1
no matching function for call to ‘DHT: DHT()’Последнее редактирование: 27 окт 2018
-
Ссылку на примененную DHT.h библиотеку. И посмотрите примеры к этой библиотеке.
-
Вылезла ошибка:
exit status 1
Error compiling for board Arduino/Genuino Uno. -
Это не весь код ошибки, по этим строчкам ничего сказать нельзя. Прокрутите окошко сообщений выше и скопируйте все, что там есть. Если ничего нет — сначала в Опциях Ардуино ИДЕ включите вывод диагностики компилятора.
Но в целом, если Вы берете готовый код из примеров — то скорее всего вы просто выбрали не тут библиотеку. -
Вот такая ошибка:
In file included from C:UsersЕгор СтопникDocumentsArduinolibrariesDHT_sensor_libraryDHT_U.cpp:22:0:C:UsersЕгор СтопникDocumentsArduinolibrariesDHT_sensor_libraryDHT_U.h:25:29: fatal error: Adafruit_Sensor.h: No such file or directory
compilation terminated.
exit status 1
Ошибка компиляции для платы Arduino Nano. -
Нет такой библиотеки у Вас тобишь.Adafruit_Sensor.h.Надо установить.И никаких русских букаф в пути установленой IDE.Только английские.
Последнее редактирование: 28 окт 2018
-
Я ещё от греха подальше и пробелы не оставляю.
-
Спасибо! Уже исправил. Но вылезла ошибка:
FindFirstFile C:Users8124~1AppDataLocalTemparduino_cache_602894: The system cannot find the file specified.
Ошибка компиляции для платы Arduino Nano. -
чукча не читатель, чукча писатель?
-
Аааа… Я понял! Спасибо! Не дочитал до конца)
-
Типа так очень карашо!C:Arduino.Можно как у меня C:Program FilesArduino
-
Я поменял имя латиницей. Получилась такая ошибка:
sketch_sep08a:7:1: error: ‘DHT’ does not name a typeDHT dht;
^
C:UsersYegor StopnikDocumentsArduinosketch_sep08asketch_sep08a.ino: In function ‘void loop()’:
sketch_sep08a:19:18: error: ‘dht’ was not declared in this scope
int readData = dht.read22(dataPin);
^
exit status 1
‘DHT’ does not name a type -
ну залезь в библиотеку и посмотри как там класс именуется.
-
Ягор, бросай, это не твоё.
-
Ну уж нет. Я должен закончить этот код!
-
Тогда посмотрите соседнюю тему — там ровно те же вопросы про DHT.h
Вы с Gastozavr-ом. случайно, не братья? -
Нет конечно) У меня же под никнеймом написано, что я нуб. Но я пытаюсь учится на своих ошибках. А вы там с Gastozavr-ом конфликт начали и на этом закончился ваш разговор)
Страница 1 из 3
I want to display temperature and humidity on a DMD display using DHT 11 sensor.
When I compile the program, it’s giving me several errors:
Arduino: 1.8.5 (Windows 10), Board: «Arduino/Genuino Uno»
In file included from C:UsersUserDesktopDMD_tempDMD_temp.ino:14:0:
C:UsersUserDocumentsArduinolibrariesDMD-master/DMD.h:52:2: warning: #warning CHANGE THESE TO SEMI-ADJUSTABLE PIN DEFS! [-Wcpp]
warning CHANGE THESE TO SEMI-ADJUSTABLE PIN DEFS!
^
DMD_temp:9: error: ‘dht’ does not name a type
dht DHT;
^
C:UsersUserDesktopDMD_tempDMD_temp.ino: In function ‘void loop()’:
DMD_temp:37: error: expected primary-expression before ‘.’ token
int value = DHT.read11(out);
^
DMD_temp:38: error: expected primary-expression before ‘.’ token
int temp = DHT.temperature;
^
DMD_temp:39: error: expected primary-expression before ‘.’ token
int hum = DHT.humidity;
^
Multiple libraries were found for «DHT.h» Used: C:UsersUserDocumentsArduinolibrariesDHT-sensor-library-master Not used: C:Program Files (x86)ArduinolibrariesDHT-sensor-library-master exit status 1 ‘dht’ does not name a type
This report would have more information with «Show verbose output during compilation» option enabled in File -> Preferences.
The Arduino file is here: https://www.mediafire.com/file/jixghn7sowmub67/DMD_temp.ino
Any help to solve this would be appreciated.
Fatal error: DHT.h: No such file or directory #86
Being a beginner in the arduino, I am currently experiencing a problem with my program. I try to read the data sent by a DHT11 type sensor.
I have correctly installed the library that you put online. I verified that it’s in the Arduino libraries folder and I have checked that the Arduino IDE visualizes it well.
I think my library is well installed but I have the impression that it doesn’t recognize it.
I hope you can help me.
The text was updated successfully, but these errors were encountered:
@FlorentSms Can you delete the folder labeled DHT and download it through the Arduino IDE. The folder is not normally labeled just simply DHT as you show in your libraries folder. I don’t think that’s the issue but just to be on the safe side, I would remove the folder that you downloaded and said that you correctly installed. After you remove that folder go into Manage Libraries and search for DHT Sensor library and download it through the IDE. Try to upload it again to your Arduino after that is complete and report back if you are still having issues. The problem that you are having is normally related to something simple like it was not properly installed or that there are more than one copies of the DHT.h file floating around in your libraries folder.
Here is a picture of the Manage Libraries screen and the one you want to download to verify what you are after.
Also as an aside, you aren’t using the same library as this one, you are using the SimpleDHT library so if my idea fixes your problem that is possibly a start. The SimpleDHT code is hosted at the following link I believe, https://github.com/winlinvip/SimpleDHT
Hello @geofbaum ,
I have try your solutions but i have, for the 2 solutions, the same problem.
Thanks in advance.
@FlorentSms Can you upload an image of what the files in your DHT library folder look like. I just want to check to make sure capitalization or if somehow the files are misnamed somehow.
Hi, could you solve your problem?
Adafruit_AM2320_sensor_library/Adafruit_AM2320.h:41:29: fatal error: Adafruit_Sensor.h: No such file or directory
@FlorentSms Can you delete the folder labeled DHT and download it through the Arduino IDE. The folder is not normally labeled just simply DHT as you show in your libraries folder. I don’t think that’s the issue but just to be on the safe side, I would remove the folder that you downloaded and said that you correctly installed. After you remove that folder go into Manage Libraries and search for DHT Sensor library and download it through the IDE. Try to upload it again to your Arduino after that is complete and report back if you are still having issues. The problem that you are having is normally related to something simple like it was not properly installed or that there are more than one copies of the DHT.h file floating around in your libraries folder.
Here is a picture of the Manage Libraries screen and the one you want to download to verify what you are after.
yeah i see and when i do it as you said, i also get the same error
delete DHT folder in libraries then install it via Arduino IDE and still get that error and don’t have any file DHT.h floating around my sketch
help me please, graceful and tks so much
Arduino: 1.8.13 (Windows Store 1.8.42.0) (Windows 10), Board: «Arduino Uno»
sketch_nov10a:1:10: fatal error: dht.h: No such file or directory
dht.h: No such file or directory
This report would have more information with
«Show verbose output during compilation»
option enabled in File -> Preferences.
Источник
DHT not recognized #23
I’m getting this and I don’t know how to resolve this. If someone could help me I’d appreciate it.
DHTtester.ino:4:17: error: DHT.h: No such file or directory
DHTtester:18: error: ‘DHT’ does not name a type
DHTtester.ino: In function ‘void setup()’:
DHTtester:24: error: ‘dht’ was not declared in this scope
DHTtester.ino: In function ‘void loop()’:
DHTtester:33: error: ‘dht’ was not declared in this scope
The text was updated successfully, but these errors were encountered:
It sounds like Arduino can’t find the library code for some reason, what version of Arduino are you using? If you run through the library install following these steps does it fix the issue too? http://arduino.cc/en/Guide/Libraries
I just dealt with this same problem for the past few hours and finally figured out what the issue was. I was copying and pasting the library files off of a webpage, and then trying to save them from within a sketch, so every time I saved my «.h» and «.cpp» files, I was actually saving them as «.h.ino» and «.cpp.ino» files, which will of course not be recognized during compile. I rectified this by copying the library code into a text document, then «Save As. » and changing the file type to be «All Files» and they saved as the correct file types. Stick those two files into a named folder in your Arduino Library file, and you should be good to go. This took my far too long to figure out; I am somewhat ashamed.
Hope this isn’t way too late and it helps somebody! All the best
You need to add DHT Library to Arduino IDE:
Sketch / Include Library / Add .Zip Library,
here u r : https://github.com/adafruit/DHT-sensor-library
I am having this problem now out of the blue when all my code was working fine before and Arduino recognized the library. I am copying and pasting parts of the original code into a new sketch but I don’t see why or where the problem is. So I went to several sketches that I KNOW worked fine and now i get the same error message — DHT11 not is this scope. Now none of my previously perfectly functioning sketches work. I know this thread is old, but it anyone has any idea. please share. thx!
Problem fixed. I had a second library called DHT. Arduino was getting confused. Must’ve downloaded the second library with a bunch of others.
Arduino: 1.8.5 (Windows 10), Board: «Arduino/Genuino Uno»
fhfhfh:11: error: ‘dht’ does not name a type
C:UserskrishnaDocumentsArduinofhfhfhfhfhfh.ino: In function ‘void loop()’:
fhfhfh:55: error: expected unqualified-id before ‘.’ token
fhfhfh:58: error: expected primary-expression before ‘.’ token
fhfhfh:63: error: expected primary-expression before ‘.’ token
exit status 1
‘dht’ does not name a type
This report would have more information with
«Show verbose output during compilation»
option enabled in File -> Preferences.
i got this type of error. please help me to solve this error
You need to import the dht library for Arduino. Go here: https://github.com/adafruit/DHT-sensor-library
while running the code it is showing
In file included from C:UsersDineshDocumentsArduinosketch_sep30csketch_sep30c.ino:1:0:
C:UsersDineshDocumentsArduinolibrariesAdafruit-PCD8544-Nokia-5110-LCD-library-master/Adafruit_PCD8544.h:69:46: error: expected class-name before ‘<‘ token
class Adafruit_PCD8544 : public Adafruit_GFX <
sketch_sep30c:13:17: error: ‘DHT_11’ was not declared in this scope
#define DHTTYPE DHT_11 // DHT 11
C:UsersDineshDocumentsArduinosketch_sep30csketch_sep30c.ino:16:20: note: in expansion of macro ‘DHTTYPE’
DHT dht(DHT11_PIN, DHTTYPE);
C:UsersDineshDocumentsArduinosketch_sep30csketch_sep30c.ino: In function ‘void setup()’:
sketch_sep30c:40:7: error: ‘class DHT’ has no member named ‘begin’
C:UsersDineshDocumentsArduinosketch_sep30csketch_sep30c.ino: In function ‘void digitalDisplay()’:
sketch_sep30c:82:16: error: ‘class DHT’ has no member named ‘readTemperature’
sketch_sep30c:83:16: error: ‘class DHT’ has no member named ‘readHumidity’
sketch_sep30c:86:13: error: ‘class Adafruit_PCD8544’ has no member named ‘setTextSize’
sketch_sep30c:88:13: error: ‘class Adafruit_PCD8544’ has no member named ‘setCursor’
sketch_sep30c:89:13: error: ‘class Adafruit_PCD8544’ has no member named ‘print’
sketch_sep30c:90:13: error: ‘class Adafruit_PCD8544’ has no member named ‘setCursor’
sketch_sep30c:91:13: error: ‘class Adafruit_PCD8544’ has no member named ‘print’
sketch_sep30c:92:13: error: ‘class Adafruit_PCD8544’ has no member named ‘print’
sketch_sep30c:93:13: error: ‘class Adafruit_PCD8544’ has no member named ‘print’
sketch_sep30c:94:13: error: ‘class Adafruit_PCD8544’ has no member named ‘print’
sketch_sep30c:95:13: error: ‘class Adafruit_PCD8544’ has no member named ‘print’
sketch_sep30c:96:13: error: ‘class Adafruit_PCD8544’ has no member named ‘setCursor’
sketch_sep30c:98:13: error: ‘class Adafruit_PCD8544’ has no member named ‘setTextSize’
sketch_sep30c:99:13: error: ‘class Adafruit_PCD8544’ has no member named ‘setCursor’
sketch_sep30c:101:13: error: ‘class Adafruit_PCD8544’ has no member named ‘print’
sketch_sep30c:103:13: error: ‘class Adafruit_PCD8544’ has no member named ‘setCursor’
sketch_sep30c:104:13: error: ‘class Adafruit_PCD8544’ has no member named ‘setTextSize’
sketch_sep30c:105:13: error: ‘class Adafruit_PCD8544’ has no member named ‘print’
sketch_sep30c:106:13: error: ‘class Adafruit_PCD8544’ has no member named ‘setCursor’
sketch_sep30c:107:13: error: ‘class Adafruit_PCD8544’ has no member named ‘setTextSize’
sketch_sep30c:108:13: error: ‘class Adafruit_PCD8544’ has no member named ‘print’
sketch_sep30c:109:13: error: ‘class Adafruit_PCD8544’ has no member named ‘print’
sketch_sep30c:110:13: error: ‘class Adafruit_PCD8544’ has no member named ‘setCursor’
sketch_sep30c:111:13: error: ‘class Adafruit_PCD8544’ has no member named ‘setTextSize’
sketch_sep30c:112:13: error: ‘class Adafruit_PCD8544’ has no member named ‘print’
sketch_sep30c:113:13: error: ‘class Adafruit_PCD8544’ has no member named ‘setCursor’
sketch_sep30c:114:13: error: ‘class Adafruit_PCD8544’ has no member named ‘setTextSize’
sketch_sep30c:115:13: error: ‘class Adafruit_PCD8544’ has no member named ‘print’
sketch_sep30c:116:13: error: ‘class Adafruit_PCD8544’ has no member named ‘print’
C:UsersDineshDocumentsArduinosketch_sep30csketch_sep30c.ino: In function ‘void printDigits(int)’:
sketch_sep30c:123:13: error: ‘class Adafruit_PCD8544’ has no member named ‘print’
sketch_sep30c:124:11: error: ‘class Adafruit_PCD8544’ has no member named ‘print’
sketch_sep30c:128:11: error: ‘class Adafruit_PCD8544’ has no member named ‘print’
@siva2344 What does your code actually look like because it seems like your file can’t find the files that it’s suppose to or things are not initialized properly. Also when you share your code can you please format the post properly so that the code is legible using Markdown or the insert code button.
This is the actual code
Pls help in finding errors
Источник
Arduino.ru
Датчик DHT
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Пытаюсь использовать ардуино как платформу с библиотеками. Вроде все класс, но возникла проблема с датчиками температура-влажность DHT11 и 22 — система их не видит. Просто на ардуино — прекрассно, в схеме на чистом контроллере — фиг. Даже на основе примера в библиотеке. В чем могут быть проблемы. Гоню на временные параметры (ардуинка — 16МГц, схема — на внутреннем (8 без делителя)). Попытался залезть в библиотеку, подшаманить. Но все без результата. Гуру, помогите.
п.с. Текст ставить смысла не вижу. В конечном случае он свернулся до базового. толеко с др пином.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Что за библиотека? Что за скетч? Что там шаманил? ХЗ!
Ответ писать «смысла не вижу. В конечном случае он свернулся до базового. » — если не работает, значит что-то неправильно сделано.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Библиотека DHT. А именно файлы DHT.h и DHT.cpp. Временные интервалы сформировыны в DHT.cpp, в п/п «boolean DHT::read(void)». Значения там уменьшил в 2 раза (по соотношению с частотой). Но это не повлияло на работоспособность — на УНО система работала с новыми значениями только быстрее.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Это так, код — эксперимент. Может действительно накосячил.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Что то здесь не так. При любом генераторе и верных фузах, delay(1000) будет равен секунде (в пределах погрешности генератора) и ничему иному. У меня по крайней мере так, хоть на отладочной УНЕ, хоть на МК в девайсе на внутреннем генераторе, программа никак не модифицируется. Если ушли тайминги, ищите где накуролесили.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Что то здесь не так. При любом генераторе и верных фузах, delay(1000) будет равен секунде (в пределах погрешности генератора) и ничему иному. У меня по крайней мере так, хоть на отладочной УНЕ, хоть на МК в девайсе на внутреннем генераторе, программа никак не модифицируется. Если ушли тайминги, ищите где накуролесили.
Не правда ваша. Это уже отловлено и не раз.
Правда 1-ware, например, на штатных библеотеках работает в схемах без проблем. А там жесткая временная привязка.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
delay(1000) зависит не от фьюзов и внутреннего/внешнего кварца, а исключительно от константы F_CPU
если она правильная — delay() работает правильно, если нет — вреть ровно в стокараз, в скока частота установленная фьюзами отличается от F_CPU
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
delay(1000) зависит не от фьюзов и внутреннего/внешнего кварца, а исключительно от константы F_CPU
если она правильная — delay() работает правильно, если нет — вреть ровно в стокараз, в скока частота установленная фьюзами отличается от F_CPU
Упс, осознал. В камни лил с загрузчиками, а в платах верно все выставлено.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
А вот это анегдот, да и только.
Использовал библиотеку от Adafruit записал программочку
Внутренние данные считывает а температуру не измеряет.
Что за хрень. Гуру, помогите.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Здравствуйте добрые люди! Помогите нубу. Делаю блок управления на котёл. Имеется Arduino Uno, датчик DS18B20, датчик DHT22, двухканальное реле. Не получается прописать в строке 172 что бы команда работала от показателей датчика DHT22.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Делаю блок управления на котёл.
Лучшая помощь нубу — совет «держись от котла подальше».
Если нуб берётся за котёл, то закончится это как в Ижевске.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Делаю блок управления на котёл.
Лучшая помощь нубу — совет «держись от котла подальше».
Если нуб берётся за котёл, то закончится это как в Ижевске.
Хватит болтологии лучше делом помоги.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Это и есть дело. Ты это поймёшь, когда твой обгорелый труп из-под завалов вытащат. Если ты самоубийца, то хрен с тобой, только без меня. Я в этом не участвую. Сам убивайся.
P.S. Котёл в отдельном доме? А то если в квартире, соседей бы хоть пожалел.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Вопрос болше не актуален.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Вопрос болше не актуален.
Ростов — твоя работа?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Вопрос болше не актуален.
Ростов — твоя работа?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Короче, спецы. Я в ауте полном.
Собрал макетку на винборде на проце.
Залил в него прогу, представленную выше. Так вот. Информация о САМОМ датчике — считывается.. А значения температуры и влажности — нет. Датчик исправен — на ардуинке с залитым скетчем все работает.
Вопрос — в чем проблема?? Не ужели ни кто с таким не сталкивался. Очень нужна помощь.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Попытался опрашивать датчик без библиотеки взяв за основву прогу из параллельной темы «DHT без тормозов — вопросы по скетчу» и НИ ЧЕГО.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Собрал макетку на винборде на проце.
питание на проц с обоих сторон подано? и аналоговое и цифровое? и тоже для земли.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Да. На схеме видно. Правда опорное проигнорировал — хотя аналоговая часть здесь не используется.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Надеюсь про подтяжку не забыли и БЛИНК мигает с правильным интервалом.
Тогда такая мысль. Функция digitalRead() при 16 МГц выполняется примерно 5 мксек, а при 8 МГц, как у Вас, будет 10 мксек. Соответственно задержки будут совсем другие. Попробуйте читать состояние пина напрямую через регистры.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Надеюсь про подтяжку не забыли и БЛИНК мигает с правильным интервалом.
Тогда такая мысль. Функция digitalRead() при 16 МГц выполняется примерно 5 мксек, а при 8 МГц, как у Вас, будет 10 мксек. Соответственно задержки будут совсем другие. Попробуйте читать состояние пина напрямую через регистры.
Пост 19 — пробовал. Это прога
Играть, я так понимаю нужно с выделенными строчками проги
Что касается задержек в скетчах — то в скетче на плату уно (точнее в библиотеке DHT.cpp) подправлял тайминги — и все, хоть и с большими интервалами, работало. Но я всеж думаю, что проблема где-то именно там.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Залил в него прогу, представленную выше. Так вот. Информация о САМОМ датчике — считывается.. А значения температуры и влажности — нет.
Что такое «информация о датчике» и откуда она считывается?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
В датчике есть регистры со служебной информацией — тип, версия, разрешение и др. Вот эта инфа считывается (вроде как, содержимое библиотек не смотрел).
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Вы меня так поразили, что я даже в datasheet залез: «DATA=8 bit integral RH data+8 bit decimal RH data+8 bit integral T data+8 bit decimal T data+8 bit check-sum» — вот, всё, что может сказать о себе датчик.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Залил в него прогу, представленную выше. Так вот. Информация о САМОМ датчике — считывается.. А значения температуры и влажности — нет.
Что такое «информация о датчике» и откуда она считывается?
Тоже хотел спросить, да забыл. Конечно, нет такой инфы..
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Ясссно. Тогда полез в библиотеку от ада. Судя по всему там просто все прописано — я честно сказать не туда лазил. Думал, что работа с ардуинкой и библиотеками упростят мне жизнь. И тут облом. Возвращаюсь к ассемблеру.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Попробуйте закоментировать строку 18 и отключите проверку контрольной суммы — вместо строк 30-32 поставьте return 1;. Будут ли какие-то данные-мусор.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Ясссно. Тогда полез в библиотеку от ада. Судя по всему там просто все прописано — я честно сказать не туда лазил. Думал, что работа с ардуинкой и библиотеками упростят мне жизнь. И тут облом. Возвращаюсь к ассемблеру.
Думаете, что DHT22 асма боится? Вот эту погоняйте, она может показать на какой стадии обмена облом происходит: https://github.com/RobTillaart/Arduino/tree/master/libraries/DHTlib
Впрочем, я на вашей фотографии не вижу ни датчика, ни резистора к нему, что заставляет меня думать, что проблема таки в контакте.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Датчик на проводах (3 ввер уходят, не вошли в фотку), резистор 10к подпаян прям на датчике (smd 0805).
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Датчик на проводах (3 ввер уходят, не вошли в фотку), резистор 10к подпаян прям на датчике (smd 0805).
10k не ставил, 4.7k ставил около самого МК — работает на 10м. кабеле. Впрочем, поначалу даже никакой ставил — тоже работало иногда. Даташит говорит так:
Special instructions of the single-bus communication:
1.Typical application circuit recommended in the short cable length of 30 meters on the 5.1K pull-up resistor pullup resistor according to the actual situation of lower than 30 m.
2.With 3.3V supply voltage, cable length shall not be greater than 100cm. Otherwise, the line voltage drop will lead to the sensor power supply, resulting in measurement error.
3.Read the sensor minimum time interval for the 2S; read interval is less than 2S, may cause the temperature and humidity are not allowed or communication is unsuccessful, etc..
Вобщем, надо выяснить на котором этапе обмен прекращается (и начинается ли он вообще). Я сталкивался с таким случаем: запитал датчик от 3,3V, а до него доходило. Мало, вобщем. И он всякую чушь гнал в линию. Еще один подводный камень — до того, как перед обменом уронить DQ в LOW, нужно его подержать в HIGH определенное время. Мой DHT гарантированно отвечает, если это время >= времени опроса. Иначе бывали разные эффекты, но чаще всего обмен просто не начинался. Ну, а после завершения обмена, я оставляю DQ в состоянии HIGH, чтобы на следующем раунде не терять времени даром.
Источник
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
#include <OneWire.h>
#include <SPI.h>
#include <Ethernet.h>
//#include <BlynkSimpleEthernet.h>
#include <DallasTemperature.h>
#include <WidgetRTC.h>
#include <dht11.h>
dht11 DHT;
// определение входов/выходов на плате ESP8266 (ESP-12F/E)
#define DHT11_PIN 12 // gpio12 датчик темп. DHT-11
#define ONE_WIRE_BUS 13 // gpio13 датчик температуры DS2B18 или куча датчиков
#define Light_PIN 4 // gpio4 рэле на включение света
#define Electro_PIN 15 // gpio15 рэле на выключение розетки
#define PIR_PIN 5 // gpio5 // определение пина на выход датчика движения HC-SR501
#define BLYNK_MAX_SENDBYTES 600 // увеличить размер сообщений (по умолчанию 128)
// цвета виджетов на смартфоне
// здесь все просто – каждые 2 цифры в 16-тиричном коде соответствуют R,G и B
// кодировки цвета, я в CorelDraw окрасил прямоугольник в нужный цвет
// записал значения R,G и B, перевел в 16-тиричный код
#define BLYNK_GREEN "#23C48E"
#define BLYNK_BLUE "#04C0F8"
#define BLYNK_YELLOW "#ED9D00"
#define BLYNK_RED "#D3435C"
#define BLYNK_DARK_BLUE "#5F7CD8"
#define BLYNK_WHITE "#FFFFFF"
#define BLYNK_CYAN "#99F7F1"
#define BLYNK_YELLOW_L "#E7F799"
#define BLYNK_ROSE "#F7B599"
#define BLYNK_FIOLET "#F799F2"
#define BLYNK_GREEN_L "#99F7B4"
OneWire oneWire(ONE_WIRE_BUS); // привязка OneWare-коммуникации к пину на плате
DallasTemperature sensors(&oneWire); // привязка датчиков DS2B18 к шине OneWare
// персональные данные
char auth[] = "------------------------"; //код авторизации в Blynk
char ssid[] = " "; //название вашей сети Wi-Fi
char pass[] = " "; //пароль вашего Wi-Fi
SimpleTimer timer;
WidgetRTC rtc; // инициализируем виджет часов реального времени
// все переменные по свету, сигнализации и датчика движения HC-SR501
bool flagAlarm = false; // произошло проникновение (сигнал с датчика)
bool flagSetAlarm = false; // постановка на сигнализацию (сигнал с выджета "кнопка" на смартфоне)
bool flagAlarmPrevious = false; // состояние по фронтам сигнала от датчика движения
bool flagLightOn = false; // свет в корридоре постоянно включить (сигнал с выджета "кнопка" на смартфоне)
bool isFirstConnect = true;
bool LIG = false;
int lightLev;
BLYNK_CONNECTED()// Если установили связь первый раз, то синхонезируем все виджеты
{
rtc.begin();
if (isFirstConnect) {
Blynk.syncAll(); // синхонезируем все виджеты
if (year() != 1970) {
// Составляем строки с временем и датой и добовляем их к сообщению
String currentTime = String(hour()) + ":" + minute() + ":" + second();
String currentDate = String(day()) + "/" + month() + "/" + year() + " ";
String Notif_first = "Оборудование Запущено " + currentDate + " " + currentTime;
Blynk.notify(Notif_first);
isFirstConnect = false;
}
}
}
void setup()
{
Serial.begin(9600); // See the connection status in Serial Monitor
Blynk.begin(auth, ssid, pass);
sensors.begin();
pinMode(Light_PIN,OUTPUT);
pinMode(Electro_PIN,OUTPUT);
pinMode(PIR_PIN,INPUT);
setSyncInterval(10*60);
timer.setInterval(5000L, sendUptime); // задаем 5 сек.
}
BLYNK_WRITE(V0) // Считываем состояние кнопки "Alarm_On"
{
if (param.asInt() == 1)
{
flagSetAlarm =true;
Blynk.setProperty(V0,"onLabel","Объект на охране");
Blynk.setProperty(V0,"color",BLYNK_RED);
}
else
{
flagSetAlarm =false;
Blynk.setProperty(V0,"offLabel","Снят с охраны");
Blynk.setProperty(V0,"color",BLYNK_GREEN);
Blynk.setProperty(V0,"label","Охрана Объекта");
}
} //BLYNK_WRITE(V0)
BLYNK_WRITE(V1) // Считываем состояние кнопки "включить свет"
{
if (param.asInt() == 1)
{
flagLightOn =true;
Blynk.setProperty(V1,"onLabel","Свет горит");
Blynk.setProperty(V1,"color",BLYNK_YELLOW_L);
}
else
{
flagLightOn =false;
Blynk.setProperty(V1,"offLabel","Свет - auto mode");
Blynk.setProperty(V1,"color",BLYNK_WHITE);
}
} // BLYNK_WRITE(V1)
BLYNK_WRITE(V2) // Считываем состояние кнопки "выключить розетку"
{
if (param.asInt() == 1)
{
digitalWrite(Electro_PIN,HIGH); // выключаем розетку, поскольку контакты рэле Н.З.
Blynk.setProperty(V2,"onLabel","Розетка отключена");
Blynk.setProperty(V2,"color",BLYNK_RED);
}
else
{
digitalWrite(Electro_PIN,LOW);
Blynk.setProperty(V2,"offLabel","Розетка включена");
Blynk.setProperty(V2,"color",BLYNK_BLUE);
}
} // BLYNK_WRITE(V2)
BLYNK_WRITE(V3) // Считываем пороговую уставку уровня освещенности по которой включаем свет (при срабатывании датчика движения)
{
lightLev = param.asInt();
} // BLYNK_WRITE(V3)
void readPIRSensor() // функция для считывания показаний датчика движения
{
if (digitalRead(PIR_PIN) == HIGH)
{
flagAlarm = true;
}
else
{
flagAlarm = false;
}
if ((flagAlarm) && (!flagAlarmPrevious))
{
flagAlarmPrevious = true;
LIG = true;
if (lightLev < analogRead(A0))
{
LIG = false;
}
if(flagSetAlarm)
{
// Составляем строки с временем и датой и добовляем их к сообщению
String currentTime = String(hour()) + ":" + minute() + ":" + second();
String currentDate = String(day()) + "/" + month() + "/" + year() + " ";
String Notif = currentDate + " " + currentTime + " - проникновение";
Blynk.notify(Notif);
//String curMes = "Проникновение - " + currentTime;
Blynk.setProperty(V0,"label",Notif);
}
}
if ((!flagAlarm) && (flagAlarmPrevious))
{
flagAlarmPrevious = false;
LIG = false;
delay(200); //на всякий случай - время для восстановления параметров датчика освещенности после выключения света, на случай датчик движения выкл. и бысто вкл.
}
} // readPIRSensor
// программа обработки иннформации от датчиков температуры
// по заданному интервалу времени, у нас раз в 5 сек., см. строку 82 (поскольку датчик температуры DHT11 - тормознутый)
void sendUptime()
{
//параметры отсылаем в Blynk
Blynk.virtualWrite(10, DHT.temperature - 2); //virtual pin 10 - температура в корридоре
Blynk.virtualWrite(11, DHT.humidity); // virtual pin 11 - влажность в корридоре
Blynk.virtualWrite(12,analogRead(A0)); // virtual pin 12 освещенность в корридоре
sensors.requestTemperatures(); // запрос от сенсоров ds2b18
float tempAir = sensors.getTempCByIndex(0); // получение информ. от сенсора 1
Blynk.virtualWrite(13, tempAir); // virtual pin 13 - температура на улице
//float tempAir1 = sensors.getTempCByIndex(1); //получение информ. от сенсора 2
//Blynk.virtualWrite(14, tempAir1); // virtual pin 14 - температура в комнате
}
void loop()
{
Blynk.run(); // Initiates Blynk
timer.run(); // Initiates SimpleTimer
readPIRSensor();
if (flagLightOn)
{
digitalWrite(Light_PIN,HIGH);//если мы из Blynk нажали клавишу вкл. свет - вкл. свет в безакцептном порядке
}
else
{
if (LIG)
{
digitalWrite(Light_PIN,HIGH); // включаем свет если сработал датчик движения и уровень освещенности меньше установленного в Blynk
}
else
{
digitalWrite(Light_PIN,LOW); // выключаем свет
}
}
int chk = DHT.read(DHT11_PIN); // чтение с сенсора DHT11
}
Процесс по шагам:
1. Скачайте архив библиотеки OneWire.zip. Библиотеку проще всего найти в Интернет, воспользовавшись поиском, или ищите нужную библиотеку на официальном сайте Arduino [1].
2. Установите библиотеку, это можно сделать 3 способами.
[Способ 1]
Распакуйте папку из ZIP-архива библиотеки (в нашем примере это папка OneWire) в каталог libraries, находящийся в директории установки Arduino (обычно это папка C:Program Files (x86)Arduino). Перезапустите среду разработки Arduino. На этом установка библиотеки завершена.
[Способ 2]
Этот способ доступен для среды разработки Arduino начиная с версии 1.0.6. Выберите в меню Сервис -> Импортировать библиотеку… -> Add library -> выберите файл архива, который Вы скачали (для нашего примера это файл OneWire.zip). На этом библиотека установлена (среду разработки Arduino перезагружать не надо).
[Способ 3]
Этот способ пригодиться для случаев, когда Вы не смогли найти ZIP-архив библиотеки, но на сайте Arduino нашли статью, где приведен исходный код библиотеки. Тогда Вам нужно сделать следующее:
a) Вручную создайте в папке libraries каталог, имя которого совпадает с именем библиотеки. Для нашего примера это будет папка OneWire.
b) Создайте в этом каталоге два файла, один с расширением *.h (файл заголовка), другой с расширением *.cpp (файл для модуля исходного кода библиотеки). Имена файлов до расширения должны совпадать с именем библиотеки. Для нашего примера это будут два файла: OneWire.h и OneWire.cpp.
c) Методом копирования / вставки (Copy/Paste) скопируйте в эти созданные файлы текст, который нашли на сайте Arduino (или на сайте другого источника). Не перепутайте: *.h это файла для заголовка библиотеки, *.cpp это исходный код библиотеки.
d) Перезапустите среду разработки Arduino. На этом установка библиотеки завершена.






