запись температуры в переменную в датчике dht 11

Тема в разделе "Arduino & Shields", создана пользователем WWWorm, 20 июн 2014.

  1. WWWorm

    WWWorm Нуб

    Подключил библиотеку, температура и влажность стабильно выводятся через последовательный порт на компьютер, но нужно записать температуру в переменную, чтобы включать светодиоды, если температура выше 22 градусов. Часа два пытаюсь это сделать, помогите, пожалуйста.
     
  2. ANV

    ANV Гуру

    А скетч показать?
     
  3. WWWorm

    WWWorm Нуб

    Код (Text):
    #include <dht.h>
    #define LED_PIN13 13
    #define LED_PIN12 12
    #define LED_PIN11 11
    #define LED_PIN10 10
    #define LED_PIN9 9
    #define LED_PIN8 8
    DHT sensor = DHT();

    void setup()
    {
        int temprtr;
        pinMode (LED_PIN13, OUTPUT);
        pinMode (LED_PIN12, OUTPUT);
        pinMode (LED_PIN11, OUTPUT);
        pinMode (LED_PIN10, OUTPUT);
        pinMode (LED_PIN9, OUTPUT);
        pinMode (LED_PIN8, OUTPUT);
        Serial.begin(9600);
        // объявляем к какому контакту подключен сенсор
        sensor.attach(A0);
        // после подачи питания ждём секунду до готовности сенсора к работе
        delay(1000);
    }

    void loop()
    {
        // метод update заставляет сенсор выдать текущие измерения
        sensor.update();

        switch (sensor.getLastError())
        {
            case DHT_ERROR_OK:
                char msg[128];
                // данные последнего измерения можно считать соответствующими
                // методами
                sprintf(msg, "Temperature = %dC, Humidity = %d%%",
                        sensor.getTemperatureInt(), sensor.getHumidityInt());
                Serial.println(msg);
                break;
            case DHT_ERROR_START_FAILED_1:
                Serial.println("Error: start failed (stage 1)");
                break;
            case DHT_ERROR_START_FAILED_2:
                Serial.println("Error: start failed (stage 2)");
                break;
            case DHT_ERROR_READ_TIMEOUT:
                //Serial.println("Error: read timeout");
                break;
            case DHT_ERROR_CHECKSUM_FAILURE:
                Serial.println("Error: checksum error");
                break;
        }
        /*if (tеmprtr > 22) {
          //включаем освещение
          digitalWrite(LED_PIN8, HIGH);
        } else {
          //выключаем освещение
          digitalWrite(LED_PIN8, LOW);
        }*/
          delay(5000);
    }
     
  4. Megakoteyka

    Megakoteyka Оракул Модератор

    Код (Text):
    int tmprtr = sensor.getTemperatureInt();
    ...

    if(tmprtr > 22)
    {
      ...
    }
    Вы об этом?
    Только переменную tmprtr нужно объявить внутри функции loop, иначе она будет не видна. Почитайте про область видимости переменных.
     
  5. WWWorm

    WWWorm Нуб

    ааа, вот с этим и была проблема, спасибо, разобрался вроде)