Датчик температуры DHT11 и TM1637
- Войдите на сайт для отправки комментариев
Вс, 19/01/2020 - 14:24
Почему не работает код
Moderator : пожалуйста, вставьте код правильно (возможно, новым сообщением в тему),
ВЫДАЕТ ОШИБКУ:
exit status 1
'class DHT' has no member named 'temperature'
И ВОТ ЭТО:
C:\Users\User\Documents\DT11\DT11.ino: In function 'void loop()':
DT11:29:18: error: 'class DHT' has no member named 'temperature'
int temp = dht.temperature;
^
DT11:30:22: error: 'class DHT' has no member named 'humidity'
int humidity = dht.humidity;
^
DT11:38:18: error: unable to find numeric literal operator 'operator""digitoneT'
tm1637.display(1.digitoneT);
^
DT11:39:18: error: unable to find numeric literal operator 'operator""digitwoT'
tm1637.display(2.digitwoT);
^
DT11:40:22: error: no matching function for call to 'TM1637::display(double)'
tm1637.display(3.12);
^
In file included from C:\Users\User\Documents\DT11\DT11.ino:3:0:
C:\Program Files (x86)\Arduino\libraries\TM1637/TM1637.h:51:10: note: candidate: void TM1637::display(int8_t*)
void display(int8_t DispData[]);
^
C:\Program Files (x86)\Arduino\libraries\TM1637/TM1637.h:51:10: note: no known conversion for argument 1 from 'double' to 'int8_t* {aka signed char*}'
C:\Program Files (x86)\Arduino\libraries\TM1637/TM1637.h:52:10: note: candidate: void TM1637::display(uint8_t, int8_t)
void display(uint8_t BitAddr,int8_t DispData);
^
C:\Program Files (x86)\Arduino\libraries\TM1637/TM1637.h:52:10: note: candidate expects 2 arguments, 1 provided
DT11:44:18: error: unable to find numeric literal operator 'operator""digitoneH'
tm1637.display(1.digitoneH);
^
DT11:45:18: error: unable to find numeric literal operator 'operator""digitwoH'
tm1637.display(2.digitwoH);
^
DT11:46:22: error: no matching function for call to 'TM1637::display(double)'
tm1637.display(3.15);
^
In file included from C:\Users\User\Documents\DT11\DT11.ino:3:0:
C:\Program Files (x86)\Arduino\libraries\TM1637/TM1637.h:51:10: note: candidate: void TM1637::display(int8_t*)
void display(int8_t DispData[]);
^
C:\Program Files (x86)\Arduino\libraries\TM1637/TM1637.h:51:10: note: no known conversion for argument 1 from 'double' to 'int8_t* {aka signed char*}'
C:\Program Files (x86)\Arduino\libraries\TM1637/TM1637.h:52:10: note: candidate: void TM1637::display(uint8_t, int8_t)
void display(uint8_t BitAddr,int8_t DispData);
^
C:\Program Files (x86)\Arduino\libraries\TM1637/TM1637.h:52:10: note: candidate expects 2 arguments, 1 provided
Ответьте на вопрос: что именно вам непонятно в сообщении "class DHT' has no member named 'temperature'" ?
DHT переменную как правильно прописать, чтоб работало. Дело вроде в ней
Почему не работает код
Потому что вставлен через задницу. А как вставлен, значит так и написан. ИМХО.
#include <DHT.h> #include <DHT_U.h> #include <TM1637.h> #define DHTPIN 2 #define DHTTYPE DHT11 #define CLK 9 #define DIO 8 TM1637 tm1637 (CLK,DIO); DHT dht(DHTPIN, DHTTYPE); void setup() { // put your setup code here, to run once: tm1637.init(); tm1637.set(BRIGHT_TYPICAL); delay(1500); } void loop() { // put your main code here, to run repeatedly: dht.read(DHTPIN); int temp = dht.temperature; int humidity = dht.humidity; int digitoneT = temp / 10; int digittwoT = temp % 10; int digitoneH = humidity / 10; int digittwoH = humidity % 10; tm1637.display(1.digitoneT); tm1637.display(2.digitwoT); tm1637.display(3.12); delay (5000); tm1637.display(1.digitoneH); tm1637.display(2.digitwoH); tm1637.display(3.15); }Жесть. Хаотичный набор букв с множеством ошибок. Навскидку: ошибки в строках 29, 30, 38, 39, 40, 44, 45, 46. Исправляйте, смотрите, какие методы и члены классов доступны в используемых библиотеках, смотрите примеры к используемым библиотекам, ищите разницу. Не стоит вслепую тыкаться в надежде, что оно само как-то заработает - это не тот случай.
А что именно неправильно в строках: 29, 30. Переменная dht? Если да, то как ее записать правильно?
А что именно неправильно в строках: 29, 30. Переменная dht? Если да, то как ее записать правильно?
не переменная, а обращение к несуществующим членам класса. Давайте не будем гадать, а просто возьмём - и посмотрим на документацию и примеры к библиотеке, ок?
#include "TM1637.h" // Подключаем библиотеку для работы с модулем #include "DHT.h" //{0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; //0~9,A,b,C,d,E,F // Настройка символов для последующего вывода на дислей //Определяем пины для подключения к плате Arduino #define CLK 3 #define DIO 2 #define DHTPin 2 // Pin sensor #define DHTTYPE DHT11 // DHT 11 //Создаём объект класса TM1637, в качестве параметров //передаём номера пинов подключения TM1637 tm1637(CLK, DIO); void setup() { //Инициализация модуля tm1637.init(); //Установка яркости горения сегментов /* BRIGHT_TYPICAL = 2 Средний BRIGHT_DARKEST = 0 Тёмный BRIGHTEST = 7 Яркий */ tm1637.set(BRIGHT_TYPICAL); } void loop() { DHT dht(DHTPin, DHTTYPE); int Temperature = dht.readTemperature(); // Gets the values of the temperature int Humidity = dht.readHumidity(); // Gets the values of the humidity //int Temperature; int digitoneT = Temperature /10; int digittwoT = Temperature % 10; int digitoneH = Humidity / 10; int digittwoH = Humidity % 10; tm1637.display(1, digitoneT); tm1637.display(2, digittwoT); tm1637.display(3, 12); // C delay (5000); tm1637.display(1, digitoneH); tm1637.display(2, digittwoH); tm1637.display(3, 15); delay (5000); }