DHT11 не работает со светодиодом в arduino

смысл моего кода в том, чтобы включить светодиод, когда уровень влажности достигнет определенной величины. Однако он считывает количество влажности, но светодиод не включается. Почему он не работает??

#include <SimpleDHT.h>

// для DHT11,
// VCC: 5V или 3V
// GND: GND
// ДАННЫЕ: 2
int pinDHT11 = 2;
SimpleDHT11 dht11;


void setup() {
  Serial.begin(9600);
  pinMode(9, OUTPUT);
  }

void loop() {
  // начните работать...
  Serial.println("=================================");
  Serial.println("Sample DHT11...");

  // читать без образцов.
  byte temperature = 0;
  byte humidity = 0;
  int err = SimpleDHTErrSuccess;

  if (humidity > 70 ) {
     digitalWrite(9, HIGH);
  }
  else if ((err = dht11.read(pinDHT11, &temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
    Serial.print("Read DHT11 failed, err="); Serial.println(err);delay(1000);
    return;
  }

  Serial.print("Sample OK: ");
  Serial.print((int)temperature); Serial.print(" *C, ");
  Serial.print((int)humidity); Serial.println(" H");

  // DHT11 частота дискретизации составляет 1 Гц.
  delay(1500);
}

, 👍0

Обсуждение

Не могли бы вы поделиться схемой, @Maaz Sk

почему вы ожидаете, что он загорится? ... вы устанавливаете влажность на ноль непосредственно перед тем, как проверить, не превышает ли она 70, @jsotola


1 ответ


1

Ваш код не работает, потому что на самом деле error statement считывает значение датчика температуры и влажности.

Вы устанавливаете переменные влажности и температуры равными 0. Оператор If сравнивает эти переменные с 70, прежде чем фактически считывать данные датчика.

Я еще не тестировал, но это должно сработать.

#include <SimpleDHT.h>

int pinDHT11 = 2;
SimpleDHT11 dht11;

void setup()
{
    Serial.begin(9600);
    pinMode(9, OUTPUT);
}

void loop()
{
    // начните работать...
    Serial.println("=================================");
    Serial.println("Sample DHT11...");

    // читать без образцов.
    byte temperature = 0;
    byte humidity = 0;

    int err = SimpleDHTErrSuccess;
    if ((err = dht11.read(pinDHT11, &temperature, &humidity, NULL))
        != SimpleDHTErrSuccess)
    {
        Serial.print("Read DHT11 failed, err=");
        Serial.println(err);
        delay(1000);
        return;
    }

    Serial.print("Sample OK: ");
    Serial.print((int)temperature);
    Serial.print(" *C, ");
    Serial.print((int)humidity);
    Serial.println(" H");

    if (humidity > 70 )
    {
        Serial.println("Humidity is above 70%");
        digitalWrite(9, HIGH);
    }
    else
    {
        Serial.println("Humidity is below 70%");
    }
    // DHT11 частота дискретизации составляет 1 Гц.
    delay(1500);
}
,

привет, к сожалению, этот код не работает, но спасибо. Он доставляет мне сообщение об ошибке "статус выхода 1 нет соответствующей функции для вызова "SimpleDHT11::read(byte *, byte *, NULL)"., @Miri

@Miri, теперь это исправлено в ответе, добавив DHT11pin к вызову dht11.read(). Это очень простое устранение неполадок, и вы могли бы исправить это сами., @StarCat