Умная теплица(код)

Тема в разделе "Arduino & Shields", создана пользователем Уыфгдщм, 2 июн 2017.

  1. Уыфгдщм

    Уыфгдщм Нерд

    Здравствуйте, решил сделать умную теплицу в которой используются: датчик температуры и влажности,датчик влажности почвы,экран WG12864B. Хочу получать данные с датчиков и выводить их на экран используя библиотеку u8glib. И я хочу впихнуть в "u8g.drawStr" переменную типа int в которая принимает значение одного из датчиков.Но "u8g.drawStr" не хочет её принимать.Прошу подсказать способ решения данной проблемы.

    Код (C++):
    #include <iarduino_DHT.h>                     // Подключаем библиотеку для работы с датчиком DHT
    #include "U8glib.h"                           // Подключаем библиотеку U8glib
    U8GLIB_ST7920_128X64_1X u8g(10);              // Создаём объект u8g для работы с дисплеем, указывая номер вывода CS для аппаратной шины SPI
    iarduino_DHT sensor(2);                       // Объявляем объект, указывая номер вывода, к которому подключён модуль
    int ground = 0;
    int humidity = 0;
    int temperature = 0;
    void setup()
    {
      delay(1000);                          
    }

    void loop()
    {
      ground = analogRead(A0);
      ground = map(ground,0,1023,100,0);
      switch(sensor.read()) // Читаем показания датчика
      {
        case DHT_OK:        
        humidity = sensor.hum ; temperature = sensor.tem ;
        break;
        case DHT_ERROR_CHECKSUM:
        humidity = 1; temperature = 99;                          
        break;
        case DHT_ERROR_DATA:
        humidity = 1; temperature = 99;        
        break;
        case DHT_ERROR_NO_REPLY:
        humidity = 1; temperature = 99;                                
        break;
        default:            
        humidity = 1; temperature = 99;                                      
        break;
      }  delay(2000);

      u8g.firstPage();                                      
        do{  u8g.setColorIndex(1);                            
             u8g.drawBox(0, 0, 128, 16);          
             u8g.drawBox(0, 32, 128, 16);
             u8g.setFont(u8g_font_9x15);            //              
             u8g.setColorIndex(0);                            
             u8g.drawStr(1,13, "HUM:     %");                      
             u8g.drawStr(1,45, "TEMP:    *C");                  
             u8g.setColorIndex(1);                            
             u8g.drawStr(1,29, "SOIL:    %");
             u8g.drawStr(3,61, "LOL:");
        }    while(u8g.nextPage());
    }
    А вот как я пытаюсь сделать
    Код (C++):
    u8g.drawStr(1,13, "HUM:" + humidity + "%");  
    https://yadi.sk/i/o_DpNPxC3JmHF2 фото устройства
     
  2. DetSimen

    DetSimen Guest

    после инклудов где-нить вставь
    template <typename T> Print &operator << (Print &s, T n) { s.print(n); return s; }
    и потом вместо
    u8g.drawStr(1,13, "HUM:"+ humidity +"%");
    пиши
    u8g.setPrintPos(1,13);
    u8g<<"HUM:"<< humidity <<"%";
     
    Andrey12, zelenzoom и Уыфгдщм нравится это.
  3. zelenzoom

    zelenzoom Нуб

    Спасибо, очень помогло! Была аналогичная задача.