Что не так в коде?

Тема в разделе "Arduino & Shields", создана пользователем Mestniy, 30 сен 2015.

  1. Mestniy

    Mestniy Гуру

    Добрый день подскажите пожалуйста, правильно ли я код написал?
    Код (C++):
    #include "DHT.h"                            // Подключение библиотеки датчика влажности и температуры
    #define DHTPIN 5           // Cигнальный выход датчика подключен к 6 пину
    // выбор используемого датчика
    #define DHTTYPE DHT11   // DHT 11
    DHT dht(DHTPIN, DHTTYPE);                  //инициализация датчика DHT

    int sens = 2;//устанавливаем датчик света на 2 пин...
    int relepin = 6; //Определяем для вентилятора пин 6...
    int dhtmax=53;
    int dhtminim=50;
    unsigned long currentTime;//переменные для времени
    unsigned long loopTime;
    //Блок настроек, выполняется однократно
    void setup()
    { // Начало инициализации блока
      Serial.begin(9600);
      currentTime = millis(); // считываем время
      loopTime = currentTime;
      pinMode(sens, INPUT);//устанавливаем значение нашего датчика света, как вход
      pinMode(relepin, OUTPUT);//устанавливаем значение нашего датчика вентиляции, как выход                        // Запускаем ход чаов
    }
    // Основной блок программы, выполняется бесконечно, циклично
    void loop() {   // Начало инициализации блока
      int h = digitalRead(5);
      int dsens = digitalRead(sens); //переменная для считывания показаний с датчика света
      Serial.print(h);
      if (dsens==1 && h>=dhtmax)//если свет выключен, то проверяем состояние датчика влажности и если оно превышает 53%
    {
      digitalWrite(relepin, HIGH); //включаем вентилятор
    }
    if (dsens==0 && h>=dhtmax)//если включили свет и влажность по прежнему > 53%, то...
    {
      currentTime = millis(); // считываем время
      if(currentTime >= (loopTime + 60000*3) && dsens==0)//ставим условие: если через 3 мин свет включен то...
      {
       digitalWrite(relepin, LOW);//выключаем реле.
         }
         else if (currentTime < (loopTime + 60000*3) && dsens==1)//в противном случае если свет выключили раньше 3 мин то...
           {
            digitalWrite(relepin, HIGH);//включить реле
           }
    }
    else if (h<=dhtminim)//если влажность меньше 50%, то...
    {
    digitalWrite(relepin, LOW);//выключаем реле.
    }
    }
     
    Viquis нравится это.
  2. Tomasina

    Tomasina Сушитель лампочек Модератор

    h всегда будет либо 1, либо 0, других значений у digitalRead не бывает, поэтому дальнейшее h>=dhtmax не сработает как задумано.

    Посмотри в примерах к библиотеке DHT как правильно получать значения для h и что прописывать в setup/
     
    Mestniy нравится это.