зашел в тупик с выводом температуры и влажности датчика dht11 на дисплей utft на простой lcd 16x2 все понятно как выводить, а на utft примеров не нашел... с этой частью кода все понятно... она идет стандартная как и на lcd 16x2 Код (C++): #include "DHT.h" #define DHTPIN 2 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); void setup() { dht.begin(); } а вот с этой частью кода, что делать то? Код (C++): float h = dht.readHumidity(); float t = dht.readTemperature(); при вставке ее в скетч на нее выдает ошибку... вопрос как правильно написать эту часть скетча под utft??? все обгуглин не нашел ответ на свой вопрос.
да там куча вылазит... без этих строк все нормально кампилирует Код (C++): test_chasy_3.ino:14:7: error: expected constructor, destructor, or type conversion before '(' token test_chasy_3.ino: In function 'void setup()': test_chasy_3.ino:33:1: error: 'myGLCD' was not declared in this scope test_chasy_3.ino: In function 'void loop()': test_chasy_3.ino:49:3: error: cannot convert 'Time' to 'float' in assignment test_chasy_3.ino:51:1: error: 'myGLCD' was not declared in this scope Ошибка компиляции. .
что бы вопросов небыло вот весь скетч без этих строк... планировалось вывести часы и пару температурных датчиков... Код (C++): #include <DHT.h> #include <UTFT.h> #include <DS1307.h> #define DHTPIN 12 // 12pin для датчика DHT11 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); extern uint8_t BigFont[]; extern uint8_t SmallFont[]; extern uint8_t SevenSegNumFont[]; extern uint8_t Grotesk16x32[]; myGLCD(ILI9341,A2,A1,A3,A4,A0); // DS1307: SDA pin -> pin 9 // SCL pin -> pin 10 DS1307 rtc(10, 11); Time t; void setup() { // rtc.begin(); pinMode(12, OUTPUT); Serial.begin(9600); rtc.halt(false); //Запускаем часы myGLCD.InitLCD(); //Инициализируем дисплей myGLCD.fillScr(0, 0, 0); //Закрашиваем дисплей черным цветом // The following lines can be commented out to use the values already stored in the DS1302 // rtc.setDOW(SUNDAY); // день FRIDAY //rtc.setTime(17, 39, 0); // час, мин, сек (24 часовой) //rtc.setDate(11, 07, 2017); // день, месяц, год } void loop() { t = rtc.getTime(); String stringOne = rtc.getTimeStr(); myGLCD.setColor(255, 255, 255); //Цвет отображения myGLCD.setFont(SevenSegNumFont); //Шрифт для отображения myGLCD.print(stringOne.substring(0,2), 10, 10); //Отображаем часы myGLCD.print(stringOne.substring(3,5), 100, 10); //Отображаем минуты myGLCD.setFont(BigFont); myGLCD.setColor(255, 255, 0); //Цвет отображения myGLCD.print(stringOne.substring(6), 170, 10); // Вывод секунд //delay(500); myGLCD.setColor(255, 255, 0); myGLCD.setFont(BigFont); myGLCD.fillCircle(85, 25, 7); //Верхняя точка myGLCD.fillCircle(85, 45, 7); //Нижняя точка myGLCD.setColor(0, 255, 0); myGLCD.setFont(BigFont); myGLCD.print(rtc.getDateStr(), 15, 70); //Отображаем дату myGLCD.drawRoundRect(5,5,475,315); // рамка myGLCD.setColor(VGA_FUCHSIA); //Цвет отображения myGLCD.setFont(Grotesk16x32); //Шрифт для отображения myGLCD.print("ZAL", 230, 10); //Отображаем зал myGLCD.setColor(VGA_FUCHSIA); myGLCD.setFont(BigFont); myGLCD.print("temp", 290, 10); myGLCD.setColor(VGA_FUCHSIA); myGLCD.setFont(BigFont); myGLCD.print("vlajn", 290, 40); myGLCD.setColor(VGA_MAROON); myGLCD.setFont(Grotesk16x32); myGLCD.print("KUCH", 230, 70); //Отображаем кухня myGLCD.setColor(VGA_MAROON); myGLCD.setFont(BigFont); myGLCD.print("temp", 300, 70); myGLCD.setColor(VGA_MAROON); myGLCD.setFont(BigFont); myGLCD.print("vlajn", 300, 100); }
Лучше бы написали текст с подставленными проблемными строчками, иначе по приведенному куску выброса компилятора непонятно куда именно это относится. а вот это Код (C++): myGLCD(ILI9341,A2,A1,A3,A4,A0); что вы имели ввиду?
извиняюсь... я только разбираюсь с utft... в скетче стоит из библиотеки: UTFT myGLCD(TFT395UNO,A2,A1,A3,A4,A0); с этим дисплей нормально работает... разберусь с выводом датчиков потом с этим разберусь... хорошо щас распишу скетч
Вот это Код (C++): UTFT myGLCD(TFT395UNO,A2,A1,A3,A4,A0); и вот это Код (C++): myGLCD(ILI9341,A2,A1,A3,A4,A0); не одно и то же. И второй кусочек вполне может порождать ошибки Код (C++): test_chasy_3.ino:14:7: error: expected constructor, destructor, or type conversion before '(' token test_chasy_3.ino: In function 'void setup()': test_chasy_3.ino:33:1: error: 'myGLCD' was not declared in this scope test_chasy_3.ino: In function 'void loop()': test_chasy_3.ino:51:1: error: 'myGLCD' was not declared in this scope
вот полный скетч не пойму как дальше здесь прописать вывод датчика на дисплей Код (C++): // подключение необхдимых библиотек #include <dht11.h> #include <UTFT.h> #include <DS1307.h> // подключение шрифтов extern uint8_t BigFont[]; extern uint8_t SmallFont[]; extern uint8_t SevenSegNumFont[]; extern uint8_t Grotesk16x32[]; // подключение исплея UTFT myGLCD(TFT395UNO,A2,A1,A3,A4,A0); // подключение датчика DHT11 dht11 DHT; #define DHTPIN 12 // 12 pin для датчика DHT11 #define DHTTYPE dht11 // DS1307: SDA pin -> pin 9 // SCL pin -> pin 10 // часы DS1307 rtc(10, 11); Time t; void setup() { Serial.begin(9600); rtc.halt(false); //Запускаем часы myGLCD.InitLCD(); //Инициализируем дисплей myGLCD.fillScr(0, 0, 0); //Закрашиваем дисплей черным цветом // The following lines can be commented out to use the values already stored in the DS1302 // rtc.setDOW(SUNDAY); // день FRIDAY //rtc.setTime(17, 39, 0); // час, мин, сек (24 часовой) //rtc.setDate(11, 07, 2017); // день, месяц, год } void loop() { // вывод часов и даты t = rtc.getTime(); String stringOne = rtc.getTimeStr(); myGLCD.setColor(255, 255, 255); //Цвет отображения myGLCD.setFont(SevenSegNumFont); //Шрифт для отображения myGLCD.print(stringOne.substring(0,2), 10, 10); //Отображаем часы myGLCD.print(stringOne.substring(3,5), 100, 10); //Отображаем минуты myGLCD.setFont(BigFont); myGLCD.setColor(255, 255, 0); //Цвет отображения myGLCD.print(stringOne.substring(6), 170, 10); // Вывод секунд //delay(500); myGLCD.setColor(255, 255, 0); myGLCD.setFont(BigFont); myGLCD.fillCircle(85, 25, 7); //Верхняя точка myGLCD.fillCircle(85, 45, 7); //Нижняя точка myGLCD.setColor(0, 255, 0); myGLCD.setFont(BigFont); myGLCD.print(rtc.getDateStr(), 15, 70); //Отображаем дату // рамка по краю дисплея myGLCD.drawRoundRect(5,5,475,315); // рамка // на данном этапе планировалось вывести датчики DHT11 myGLCD.setColor(VGA_FUCHSIA); //Цвет отображения myGLCD.setFont(Grotesk16x32); //Шрифт для отображения myGLCD.print("ZAL", 230, 10); //Отображаем зал myGLCD.setColor(VGA_FUCHSIA); //Цвет отображения myGLCD.setFont(BigFont); //Шрифт для отображения myGLCD.print("temp", 290, 10); //Отображаем температура myGLCD.setColor(VGA_FUCHSIA); //Шрифт для отображения myGLCD.setFont(BigFont); //Шрифт для отображения myGLCD.print("vlajn", 290, 40); //Отображаем влажность // на данном этапе планировалось вывести датчики DHT11 myGLCD.setColor(VGA_MAROON); //Цвет отображения myGLCD.setFont(Grotesk16x32); //Шрифт для отображения myGLCD.print("KUCH", 230, 70); //Отображаем кухня myGLCD.setColor(VGA_MAROON); //Цвет отображения myGLCD.setFont(BigFont); //Шрифт для отображения myGLCD.print("temp", 300, 70); //Отображаем температура myGLCD.setColor(VGA_MAROON);//Цвет отображения myGLCD.setFont(BigFont); //Шрифт для отображения myGLCD.print("vlajn", 300, 100); //Отображаем влажность }
то же ошибку выдает... Код (C++): test_chasy_3.ino: In function 'void loop()': test_chasy_3.ino:70:21: error: 'dht' was not declared in this scope test_chasy_3.ino:70:45: error: 'x' was not declared in this scope test_chasy_3.ino:70:48: error: 'y' was not declared in this scope Ошибка компиляции.
Ну x и y просто имелись ввиду координат, куда там вывести. У вас непонятно, то так Код (C++): DHT dht(DHTPIN, DHTTYPE); то такое Код (C++): dht11 DHT; причем DHT вроде вообще имя типа. Верните Код (C++): #define DHTPIN 12 // 12pin для датчика DHT11 #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); x и y замените реальными координатами
поправил, но показания не считываются... по нулям стоят. где то ошибку допустил, почти 12 ночи мозги не варят уже... завтра еще раз по скетчу пройдусь. Код (C++): // подключение необхдимых библиотек #include <dht11.h> #include <UTFT.h> #include <DS1307.h> // подключение шрифтов extern uint8_t BigFont[]; extern uint8_t SmallFont[]; extern uint8_t SevenSegNumFont[]; extern uint8_t Grotesk16x32[]; // подключение исплея UTFT myGLCD(TFT395UNO,A2,A1,A3,A4,A0); // подключение датчика DHT11 dht11 DHT; #define DHT11PIN 12 // 12 pin для датчика DHT11 #define DHTTYPE dht11 long Temperature = 0, Pressure = 0; // DS1307: SDA pin -> pin 9 // SCL pin -> pin 10 // часы DS1307 rtc(10, 11); Time t; void setup() { Serial.begin(9600); rtc.halt(false); //Запускаем часы myGLCD.InitLCD(); //Инициализируем дисплей myGLCD.fillScr(0, 0, 0); //Закрашиваем дисплей черным цветом // The following lines can be commented out to use the values already stored in the DS1302 // rtc.setDOW(SUNDAY); // день FRIDAY //rtc.setTime(17, 39, 0); // час, мин, сек (24 часовой) //rtc.setDate(11, 07, 2017); // день, месяц, год } void loop() { // вывод часов и даты t = rtc.getTime(); String stringOne = rtc.getTimeStr(); myGLCD.setColor(255, 255, 255); //Цвет отображения myGLCD.setFont(SevenSegNumFont); //Шрифт для отображения myGLCD.print(stringOne.substring(0,2), 10, 10); //Отображаем часы myGLCD.print(stringOne.substring(3,5), 100, 10); //Отображаем минуты myGLCD.setFont(BigFont); myGLCD.setColor(255, 255, 0); //Цвет отображения myGLCD.print(stringOne.substring(6), 170, 10); // Вывод секунд //delay(500); myGLCD.setColor(255, 255, 0); myGLCD.setFont(BigFont); myGLCD.fillCircle(85, 25, 7); //Верхняя точка myGLCD.fillCircle(85, 45, 7); //Нижняя точка myGLCD.setColor(0, 255, 0); myGLCD.setFont(BigFont); myGLCD.print(rtc.getDateStr(), 15, 70); //Отображаем дату // рамка по краю дисплея myGLCD.drawRoundRect(5,5,475,315); // рамка // на данном этапе планировалось вывести датчики DHT11 myGLCD.setColor(VGA_WHITE); myGLCD.print(String(DHT.temperature), 400,10) ; myGLCD.setColor(VGA_FUCHSIA); //Цвет отображения myGLCD.setFont(Grotesk16x32); //Шрифт для отображения myGLCD.print("ZAL", 230, 10); //Отображаем зал myGLCD.setColor(VGA_FUCHSIA); //Цвет отображения myGLCD.setFont(BigFont); //Шрифт для отображения myGLCD.print("temp", 290, 10); //Отображаем температура myGLCD.setColor(VGA_FUCHSIA); //Шрифт для отображения myGLCD.setFont(BigFont); //Шрифт для отображения myGLCD.print("vlajn", 290, 40); //Отображаем влажность myGLCD.print(String(DHT.humidity), 400,40); }
Я бы предложил вам сначала отладить работу только с датчиком (чтобы проверить можно писать в последовательный порт). Уберите все лишнее и проверьте, работает ли датчик.
просмотрел много примеров... нашел свою ошибку... нужно было указывать: Код (C++): int chk; chk = DHT.read(DHT11_PIN); // Чтение данных с датчика DHT11 (ЗАЛ) далее как вы указали вставил строку, выставил координаты и загрузил скетч... все заработало. другой вопрос - как указать второй датчик???
Код (C++): int chk; chk = DHT.read(DHT11_PIN); вот этот DHT11_PIN это пин, к которому подключен ваш датчик. Укажите другой пин, к которому подключен второй и делайте точно также.
нифига не получается... указал куда подключаются... переобозвал их чтоб при считывании по разному определялись... далее указал какой считывать... в итоге один датчик считывается на обе позиции. Код (C++): #define DHT11a_PIN 12 #define DHT11b_PIN 13 __________ int chk; {chk = DHT.read(DHT11a_PIN); // Чтение данных с датчика DHT11 (ЗАЛ) myGLCD.setColor(VGA_WHITE); myGLCD.print(String(DHT.temperature), 380,10) ; myGLCD.print("C ", 430,10 ); myGLCD.print(String(DHT.humidity), 380,40); myGLCD.print("%", 430,40);} int chk2; {chk2 = DHT.read(DHT11b_PIN); myGLCD.setColor(VGA_WHITE); myGLCD.print(String(DHT.temperature), 380,70) ; myGLCD.print("C ", 430,70 ); myGLCD.print(String(DHT.humidity), 380,100); myGLCD.print("%", 430,100);}