помощь в отказе от delay

timofei
Offline
Зарегистрирован: 12.03.2016
#include "DHT.h" // библиотека датчика температуры
#define DHTPIN 13      
#define DHTTYPE DHT11   // DHT 11  в зависимости от датчика температуры
// Connect pin 1 (on the left) of the sensor to +5V
// Connect pin 2 of the sensor to whatever your DHTPIN is
// Connect pin 4 (on the right) of the sensor to GROUND
// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

DHT dht(DHTPIN, DHTTYPE);
int five_volts_Pin = 12;
char incomingByte;   // входящие данные

int diodBlue=4;
int diodGreen=3;
int diodRed=2;
int nasos=5;
int servo=6;
int PhotosensorPin=A5; // датчик света на ногу А5 через рез 10кОм
unsigned int sensorValue = 0;

int sensor=9; // VCC датчика подключить к пину 9

void setup()
{
Serial.begin(9600);
pinMode(diodBlue,OUTPUT);
pinMode(diodGreen,OUTPUT);
pinMode(diodRed,OUTPUT);
pinMode(nasos,OUTPUT);
pinMode(sensor,OUTPUT);
pinMode(servo,OUTPUT);
  pinMode(five_volts_Pin, OUTPUT);
  digitalWrite(five_volts_Pin, HIGH);
  Serial.println("DHTxx test!");
digitalWrite(sensor, LOW); delay(5000);
  dht.begin(); 

}
void loop()

{

 sensorValue = analogRead(PhotosensorPin); 
Serial.println(analogRead(0)); // сигнальный датчика влажности к АО

digitalWrite(sensor, LOW);
delay(5000); //  увеличить в разы в конечном устройстве
digitalWrite(sensor, HIGH);
delay(500);

 if (Serial.available() > 0) 
 //если пришли данные
 {
        incomingByte = Serial.read(); // считываем байт
        if(incomingByte == '1')  digitalWrite(nasos, LOW);  // если 1, то выключаем nasos
        if(incomingByte == '2')  digitalWrite(nasos, HIGH); // если 2, то включаем nasos
        if(incomingByte == '3')  digitalWrite(servo, LOW);  // если 3, то выключаем servo
        if(incomingByte == '4')  digitalWrite(servo, HIGH); // если 4, то включаем servo
}

if (analogRead(0) >= 900  ) // Очень сухая почва добавить && sensorValue < 500
{
Serial.print("Cyxo ");
digitalWrite(diodBlue, HIGH);
digitalWrite(diodGreen, LOW);
digitalWrite(diodRed, LOW);
digitalWrite(nasos,HIGH);
delay(5000); // включить на длительное время
digitalWrite(nasos,LOW);
}

else if( analogRead(0)>300 && analogRead(0) <900 && sensorValue < 500) // влажная почва
{
Serial.print("HOPMA "); // Влажная почва
digitalWrite(diodGreen,HIGH);
digitalWrite(diodBlue, LOW);
digitalWrite(diodRed, LOW);
digitalWrite(nasos,HIGH);
delay(500); // включить на короткое время
digitalWrite(nasos,LOW);
}

else if( analogRead(0)>10 && analogRead(0)<300)
{
digitalWrite(diodRed,HIGH);// Мокрая почва
Serial.print("MOKPO ");
digitalWrite(diodBlue, LOW);
digitalWrite(diodGreen, LOW);
}
      float h = dht.readHumidity();
      float t = dht.readTemperature();

      if (isnan(t) || isnan(h)) 
      {
            Serial.println("Нет данных ");

        } 
      else 
      {
            Serial.print("Влажность:  "); 
            Serial.print(h);
            Serial.print(" %\t");
            Serial.print("Температура: "); 
            Serial.print(t);
            Serial.println(" *C");
    }
    }
    

 

Клапауций 322
Offline
Зарегистрирован: 31.12.2015

// delay(xxx);

timofei
Offline
Зарегистрирован: 12.03.2016

Добрый день форумчане.

строки 046-049 для того, что бы датчик влажности не окислялся, питание на него подается в момент замера на 2 сек через 1 час. в момент остановки программы на 1 час через функцию delay, другие опции становятся не доступными. на сайте нашел как подавать питаниен на ногу без этой функции, но проблема в том, что время LOW  равно времени HIGT. как можно обойти?

timofei
Offline
Зарегистрирован: 12.03.2016