Нужна помощь
- Войдите на сайт для отправки комментариев
Собирался снимать с DHT11 показатели и по i2c выводить их на LCD 2004
Собрал вот такой скетч:
1. #include <Wire.h>
2. #include <LiquidCrystal_I2C.h>
3. // include the library code:
4. #include "pitches.h"
5. #include "stDHT.h"
6. DHT dht(DHT11); // Указать датчик DHT11, DHT21, DHT22
7. // Установить ЖК-адрес для 0x27 для отображения 20 символов и 4 линии
8. LiquidCrystal_I2C lcd(0x27, 20, 4);
9. void setup()
10. {
11. // initialize the LCD
12. lcd.begin();
- // Turn on the blacklight and print a message.
14. lcd.noBacklight();
15. lcd.clear();
16. lcd.setCursor(0, 1);
17. // настройка UART (связь с компьютером - через виртуальный COM-порт посредством USB)
18. Serial.begin(9600);
19. // настройка вывода датчика DHT11
20. pinMode(6, INPUT);
21. digitalWrite(6, HIGH);
22. lcd.clear();
23. lcd.backlight();
24. }
25. void loop()
26. {
27. int t = sens.readTemperature(2); // чтение датчика на пине 6
28. int h = sens.readHumidity(2); // чтение датчика на пине 6
29. // передача данных о температуре и влажности по виртуальному COM-порту
30. Serial.print("Hum: ");
31. Serial.print(h);
32. Serial.print(" %");
33. Serial.print("Temp: ");
34. Serial.print(t);
35. Serial.println(" C ");
36. // отображение данных о температуре и влажности на знакосинтезирующем ЖКИ
- // set the cursor to column 0, line 0
- // (note: line 1 is the second row, since counting begins with 0):
39. lcd.setCursor(0, 0);
40. lcd.print("Tem: ");
41. lcd.print(t);
42. lcd.print("C ");
43. lcd.setCursor(0, 1);
44. lcd.print("Hum: ");
45. lcd.print(h);
46. lcd.print("%");
- // print the number of seconds since reset:
48. //lcd.print(millis() / 1000);
49. delay(1000);
50. }
Выдаёт сл.ошибку в 6-й строке:
Выдаёт сл.ошибку в 6-й строке:
Не найдены и соответственно не подключены библиотеки: pitches.h и stDHT.h. Соответственно не смогли инициализировать DHT в 6 строке. Ну и sens используемый в loop нигде не объявлен. Кстати, по идее раз в 6 строке объявили dht то и в 27, 28 надо использовать "dht." а не "sens." судя по примеру
А "pitches.h" Вам зачем? Нигде ведь не используете.
и вот: http://arduino.ru/forum/obshchii/vstavka-programmnogo-koda-v-temukommentarii
поправил в 6-й строке на:
DHT sens(DHT11)убрал 4-ю строку. выдаёт ошибку в той же 6-й строчке:
DiMan, не стесняйся открывать DHT.h и DHT.cpp и смотреть как устроен этот класс.
Конструктор объявлен так:
первый параметр это пин, на который у тебя подключен датчик.
Спасибо. Теперь проблема с этим:
Выдаёт ошибку:
Что значит не был объявлен readTemperature? Где его объявлять? и почему он пишет, что нет инициализатора перед DHT? Я же обозначил:
Вообщем объясните новичку.
Полный програмный код:
#include <DHT.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> DHT sens(uint8_t pin, uint8_t type, uint8_t count=6); // Установить ЖК-адрес для 0x27 для отображения 20 символов и 4 линии LiquidCrystal_I2C lcd(0x27, 20, 4); void setup() { // initialize the LCD lcd.begin(); // Turn on the blacklight and print a message. lcd.noBacklight(); lcd.clear(); lcd.setCursor(0, 1); // настройка UART (связь с компьютером - через виртуальный COM-порт посредством USB) Serial.begin(9600); // настройка вывода датчика DHT11 pinMode(2, INPUT); digitalWrite(2, HIGH); lcd.clear(); lcd.backlight(); } void loop() { int DHT = 2; //int t = sens.readTemperature(2); // чтение датчика на пине 2 int t = readTemperature, sens DHT (uint8_t, uint8_t, uint8_t); //int h = sens.readHumidity(2); // чтение датчика на пине 2 int h = readTemperature, sens DHT (uint8_t, uint8_t, uint8_t); // передача данных о температуре и влажности по виртуальному COM-порту Serial.print("Hum: "); Serial.print(h); Serial.print(" %"); Serial.print("Temp: "); Serial.print(t); Serial.println(" C "); // отображение данных о температуре и влажности на знакосинтезирующем ЖКИ // set the cursor to column 0, line 0 // (note: line 1 is the second row, since counting begins with 0): lcd.setCursor(0, 0); lcd.print("Tem: "); lcd.print(t); lcd.print("C "); lcd.setCursor(0, 1); lcd.print("Hum: "); lcd.print(h); lcd.print("%"); // print the number of seconds since reset: //lcd.print(millis() / 1000); delay(1000); }DiMan, без понимания С++ будет тяжело... Как-то так должно выглядеть:
#include "DHT.h" #define PIN 2 #define TYPE DHT11 DHT sensor(PIN, TYPE); void setup() { sensor.begin(); } void loop() { float t = sensor.readTemperature(); }