utft вывод температуры и влажности

Тема в разделе "Arduino & Shields", создана пользователем andrys, 12 июл 2017.

  1. andrys

    andrys Нерд

    зашел в тупик с выводом температуры и влажности датчика 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???
    все обгуглин не нашел ответ на свой вопрос.
     
  2. railmisaka

    railmisaka Гик

    а какая ошибка?
     
  3. andrys

    andrys Нерд

    да там куча вылазит... без этих строк все нормально кампилирует

    Код (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
    Ошибка компиляции.

      .
     
     
  4. andrys

    andrys Нерд

    что бы вопросов небыло вот весь скетч без этих строк...
    планировалось вывести часы и пару температурных датчиков...
    Код (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);



    }
     
  5. railmisaka

    railmisaka Гик

    Лучше бы написали текст с подставленными проблемными строчками, иначе по приведенному куску выброса компилятора непонятно куда именно это относится.

    а вот это
    Код (C++):
    myGLCD(ILI9341,A2,A1,A3,A4,A0);
    что вы имели ввиду?
     
  6. andrys

    andrys Нерд

    извиняюсь... я только разбираюсь с utft...
    в скетче стоит из библиотеки:
    UTFT myGLCD(TFT395UNO,A2,A1,A3,A4,A0);
    с этим дисплей нормально работает...

    разберусь с выводом датчиков потом с этим разберусь...

    хорошо щас распишу скетч
     
  7. railmisaka

    railmisaka Гик

    Вот это
    Код (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
     
  8. andrys

    andrys Нерд

    вот полный скетч
    не пойму как дальше здесь прописать вывод датчика на дисплей
    Код (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); //Отображаем влажность

    }
     
  9. railmisaka

    railmisaka Гик

    а так?
    Код (C++):
    myGLCD.print(String(dht.readHumidity(), 3), x, y);
     
    andrys нравится это.
  10. andrys

    andrys Нерд

    то же ошибку выдает...
    Код (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
    Ошибка компиляции.
     
     
  11. railmisaka

    railmisaka Гик

    Ну 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 замените реальными координатами
     
    andrys нравится это.
  12. andrys

    andrys Нерд

    я уже это понял, спасибо... )
    нашел, что то подобное пока практикуюсь
     
  13. andrys

    andrys Нерд

    поправил, но показания не считываются... по нулям стоят.
    где то ошибку допустил, почти 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);

      }
     
     
  14. railmisaka

    railmisaka Гик

    Я бы предложил вам сначала отладить работу только с датчиком (чтобы проверить можно писать в последовательный порт). Уберите все лишнее и проверьте, работает ли датчик.
     
    andrys нравится это.
  15. andrys

    andrys Нерд

    просмотрел много примеров... нашел свою ошибку...
    нужно было указывать:
    Код (C++):
    int chk;
    chk = DHT.read(DHT11_PIN);  // Чтение данных с датчика DHT11 (ЗАЛ)
    далее как вы указали вставил строку, выставил координаты и загрузил скетч... все заработало.

    другой вопрос - как указать второй датчик???
     
  16. railmisaka

    railmisaka Гик

    Код (C++):
    int chk;
    chk = DHT.read(DHT11_PIN);
    вот этот DHT11_PIN это пин, к которому подключен ваш датчик.
    Укажите другой пин, к которому подключен второй и делайте точно также.
     
  17. andrys

    andrys Нерд

    нифига не получается...
    указал куда подключаются... переобозвал их чтоб при считывании по разному определялись...
    далее указал какой считывать... в итоге один датчик считывается на обе позиции.

    Код (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);}
     
  18. andrys

    andrys Нерд

    еще предложения будут???