Как закрыть датчик влажности при определенной влажности
Я использую датчик влажности и температуры dht на arduino и хотел бы добавить реле и зуммер в систему. Что я хотел бы сделать, так это закрыть его через зуммер и при влажности 65% запустить зуммер. Код, который я использую:
/* DHT-22 sensor with 12c 16x2 LCD with Arduino uno
Temperature and humidity sensor displayed in LCD
based on: http://www.ardumotive.com/how-to-use-dht-22-sensor-en.html and
https://www.ardumotive.com/i2clcden.html for the i2c LCD library by Michalis Vasilakis
Recompile by adhitadhitadhit
Notes: use LCD i2c Library from link above, i'm not sure why but new Liquidcristal library from Francisco Malpartida isn't working for me
other thing, check your */
//Libraries
#include <dht.h> // sensor library using lib from https://www.ardumotive.com/how-to-use-dht-22-sensor-en.html
#include <LiquidCrystal_I2C.h> // LCD library using from https://www.ardumotive.com/i2clcden.html for the i2c LCD library
#include <Wire.h>
dht DHT;
//Constants
#define DHT22_PIN 2 // DHT 22 (AM2302) - pin used for DHT22
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x27 after finding it from serial monitor (see comment above) for a 16 chars and 2 line display
//Variables
float hum; //Stores humidity value
float temp; //Stores temperature value
void setup()
{
Serial.begin(9600);
lcd.init(); // initialize the lcd
// Print a message to the LCD.
lcd.backlight();
lcd.setBacklight(HIGH);
}
void loop()
{
int chk = DHT.read22(DHT22_PIN);
//Read data and store it to variables hum and temp
hum = DHT.humidity;
temp= DHT.temperature;
//Print temp and humidity values to LCD
lcd.setCursor(0,0);
lcd.print("Humidity: ");
lcd.print(hum);
lcd.print("%");
if (humidity <= 50)
{
digitalWrite(ledPin, HIGH);
digitalWrite(buzzer, HIGH);
}
else
{
digitalWrite(ledPin, LOW); digitalWrite(buzzer, LOW);
lcd.setCursor(0,1);
lcd.print("Temp: ");
lcd.print(temp);
lcd.println("Celcius");
delay(2000); //Delay 2 sec between temperature/humidity check.
}
Как добавить реле и зуммер, чтобы закрыть его с помощью зуммера, работающего при значении влажности 65%?
@krank s, 👍0
Обсуждение1 ответ
Лучший ответ:
В этом коде:
void loop()
{
sample temp and humidity;
display temp;
display humidity;
if humidity <= 50
LED on;
buzzer on;
else
display temp
wait 2 sec
end
- Отсутствует символ'}', чтобы закрыть if/else.
- Почему вы показываете температуру дважды в цикле?
- Где логика для реле и зуммера на 65%?
- Номера выводов для светодиода и зуммера не определены.
- Вывод светодиода и зуммера должен быть установлен в режим вывода в функции setup ().
Если я понимаю ваше описание, вам, вероятно, нужно что-то вроде следующего, в вашей функции цикла:
if humidity <= 50
LED on;
buzzer on;
else if hum >= 65%m
close relay;
buzzer on;
end
Когда у меня возникает проблема с программной логикой, которая мне неочевидна, я записываю ее в псевдокод, как и выше. Как только я разберусь с логикой, то наберу код на C++ с правильным синтаксисом. Если я не понял ваших намерений в приведенном выше псевдокоде, я бы посоветовал вам делать то же самое, пока вы не поверите в то, что написали. Только после этого попытайтесь превратить его в рабочий код.
То, что я пропустил, было, кажется, добавлено функцией влажности в основную функцию void. Проверив c# , я решил эту проблему. Теперь система работает нормально., @krank s
- Цепь с зуммером не работает
- Причины, по которым нельзя подключать реле непосредственно к цифровому контакту Arduino
- Пассивный зуммер работает с AnalogWrite(), но не с DigitalWrite(). Он также имеет постоянный статический шум.
- Несколько неблокирующих таймеров обратного отсчета?
- Управление регулятором вентилятора от Arduino
- Ток потребления зуммера
- Почему пассивный зуммер щелкает, а не гудит, когда установлен на ВЫСОКИЙ?
- Какой релейный модуль купить и в чем разница между 1-канальными и 2-канальными релейными платами
Знаете ли вы, как реализовать необходимые подзадачи (реле управления/зуммер, сравнение значений)? Если да, то где именно у вас есть проблемы?, @Sim Son
Да, я сделал это один раз, но на этот раз я изменил свое ЖК-соединение с разъемом. Определение зуммера и реле дает ошибку на ide. У меня есть официальный код arduino. Поэтому мне нужно адаптировать его к вышеуказанному коду, который обеспечивает влажность и температуру на ЖК-дисплее, @krank s
Хм, нам нужно увидеть код, который *не* работает и с которым у вас есть проблемы... как вы на самом деле "определяете" реле/зуммер? Вам просто нужно установить нужные контакты на выходы и управлять ими с помощью "digitalWrite ()" и " tone ()", соответствующих некоторой логике, которую вы должны реализовать. Не видя, что вы делаете, мы не можем знать, что вы делаете неправильно., @Sim Son
у вас нет кода, который говорит: "если влажность равна 65%, то звоните зуммер"., @jsotola
Я бы также предложил вам включить вашу схему, а не нечеткий рисунок, который очень поможет., @Gil
Для зуммера я добавил if (влажность <= 50) { digitalWrite(ledPin, HIGH); digitalWrite(зуммер, ВЫСОКИЙ); } еще { digitalWrite(ledPin, LOW); digitalWrite(зуммер, НИЗКИЙ); } Но он обеспечивает ошибку. Мое соединение выглядит следующим образом: LCD: SCL to A5 CDA до A4 GND к GND VCC до 5V Данные DHT в D2 VCC до 5V GND к GND Зуммер: Данные до 7 GND к GND, @krank s
А) отредактируйте код в вопросе вместо того, чтобы публиковать фрагменты кода в комментариях. Б) какая ошибка?! В) хотя это, вероятно, не связано с аппаратным обеспечением, если вы хотите сообщить нам о своей схеме, вы должны нарисовать *принципиальную схему*., @Sim Son
Я загрузил информацию, которую вы просили. Я не мог решить, что такое релейное соединение, поэтому мне нужна ваша помощь в релейном соединении и коде., @krank s
Это релейный модуль или автономное реле?, @Sim Son
Это внешнее реле 12V. Я буду кормить его отдельно от arduino. Что я хочу, так это запустить зуммер при влажности 65% и закрыть систему через реле около 80% huımidity. Я знаю, что я не добавил код ретрансляции и библиотеку зуммера, потому что эта сторона полностью является той частью, которая мне нужна., @krank s
"ledPin" и "зуммер" не объявлены/не определены, и соответствующие контакты не настроены в качестве выходов. Я предполагаю, что черная точка на рисунке-это зуммер. Проблема здесь в том, что вы не должны подключать зуммер между Vin (подключенным к батарее 9V) и GPIO - **это поджарит arduino!** Что это за зуммер (datasheet)?, @Sim Son
Вы на самом деле Google для "arduino зуммер"/"arduino реле"? Есть тонны учебников там... те также показывают, как подключить все, @Sim Son
https://components101.com/misc/buzzer-pinout-working-datasheet, @krank s
да, я так и сделал. Но это не сработало. Как я уже упоминал, однажды я уже делал ту же систему, но я не стал бы использовать ЖК-дисплей IC12, и он испортил все :), @krank s
Обычно я являюсь разработчиком python и уже много лет не использую C#. В данный момент мне это кажется полной чушью., @krank s
да, КСТАТИ, я погуглил его. У меня есть проблема, где я должен добавить зуммер и релейные линии., @krank s
В настоящее время я могу показывать значения температуры и влажности на жидкокристаллическом дисплее. Другие стороны я развратил., @krank s
Можете ли вы порекомендовать свое решение по черновику и коду, если это возможно?, @krank s
Подумайте о модернизации вашего источника питания, батарея 9 В его не перережет. Кроме того, схема была бы большим подспорьем, эта вьющаяся штука трудно поддается интерпретации. Вы можете получить KiCad бесплатно, но приятно оставить пожертвование., @Gil
да, вместо этого я использую внешний адаптер 12 В., @krank s