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);
}
@Miri, 👍0
Обсуждение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
- Светодиоды: разница между общим анодом и общим катодом
- Отображение двоичных данных на светодиодах
- Акцептант векселей ИКТ
- if/else в digitalRead не выполняется в части else
- я не могу работать над своим небольшим проектом
- Вопрос об ошибке в этом коде
- Кастомная функция переключения светодиодов: один из трех светодиодов работает неправильно
- Как использовать SPI на Arduino?
Не могли бы вы поделиться схемой, @Maaz Sk
почему вы ожидаете, что он загорится? ... вы устанавливаете влажность на ноль непосредственно перед тем, как проверить, не превышает ли она 70, @jsotola