подключение светодиода к DHT и кодовой комбинации
Привет еще раз? Я увидел, что мой последний вопрос прозвучал неудачно, поэтому позвольте мне его перефразировать. В идеале мой проект состоит из 3 датчиков: 2 датчиков dht-22 и датчика mq-7. Для датчиков dht22 я использую контакты ШИМ 9 и 10 на плате Arduino mega 2560 с соответствующими резисторами 10 кОм, с питанием 5 В и заземлением. Проблема заключается в том, что я хочу установить пределы температуры и влажности для обоих датчиков: (16
#include "DHT.h"
#define DHT1PIN 9 // к какому выводу мы подключены
#define DHT2PIN 10
#define DHT1TYPE DHT22
#define DHT2TYPE DHT22
// Подключаем контакт 1 (слева) датчика к +5В
// Подключите контакт 2 датчика к любому вашему DHTPIN-коду
// Подключаем контакт 4 (справа) датчика к ЗАЗЕМЛЕНИЮ
// Подключите резистор 10 кОм от контакта 2 (данные) к контакту 1 (питание) датчика.
DHT dht1(DHT1PIN, DHT1TYPE);
DHT dht2(DHT2PIN, DHT2TYPE);
void setup() {
Serial.begin(115200);
Serial.println("DHTxx test!");
dht1.begin();
dht2.begin();
}
void loop() {
// Чтение температуры или влажности занимает около 250 миллисекунд!
// Показания датчика также могут быть устаревшими до 2 секунд (это очень медленный датчик)
float h1 = dht1.readHumidity();
float t1 = dht1.readTemperature();
float h2 = dht2.readHumidity();
float t2 = dht2.readTemperature();
// проверяем, действительны ли возвращаемые значения. Если они имеют значение NaN (а не число), значит, что-то пошло не так!
if (isnan(t1) || isnan(h1)) {
Serial.println("Failed to read from DHT #1");
} else {
Serial.print("Humidity 1: ");
Serial.print(h1);
Serial.print(" %\t");
Serial.print("Temperature 1: ");
Serial.print(t1);
Serial.println(" *C");
}
if (isnan(t2) || isnan(h2)) {
Serial.println("Failed to read from DHT #2");
} else {
Serial.print("Humidity 2: ");
Serial.print(h2);
Serial.print(" %\t");
Serial.print("Temperature 2: ");
Serial.print(t2);
Serial.println(" *C");
}
Serial.println();
}
Ps: Используемые светодиоды диаметром 10 мм. Для датчика MQ-7 это код.
/* MQ-7 Carbon Monoxide Sensor Circuit with Arduino */
const int AOUTpin=0;//вывод AOUT датчика CO переходит в аналоговый вывод A0 Arduino
const int DOUTpin=8;//вывод DOUT датчика CO переходит в цифровой вывод D8 ардуино
const int ledPin=13;//анод светодиода подключается к цифровому выводу D13 Arduino
int limit;
int value;
void setup() {
Serial.begin(115200);//устанавливает скорость передачи данных
pinMode(DOUTpin, INPUT);//устанавливает вывод в качестве входа для Arduino
pinMode(ledPin, OUTPUT);//устанавливает вывод как выход Arduino
}
void loop()
{
value= analogRead(AOUTpin);//считывает аналоговое значение с вывода AOUT датчика CO
limit= digitalRead(DOUTpin);//считывает цифровое значение с контакта DOUT датчика CO
Serial.print("CO value: ");
Serial.println(value);//печатает значение CO
Serial.print("Limit: ");
Serial.print(limit);// печатает достигнутый предел как LOW или HIGH (выше или ниже)
delay(100);
if (limit == HIGH){
digitalWrite(ledPin, HIGH);//если предел достигнут, светодиод загорается как индикатор состояния
}
else{
digitalWrite(ledPin, LOW);//если порог не достигнут, светодиод остается выключенным
}
}
Мне еще предстоит купить схему реле, чтобы иметь возможность соединить ее со схемой с помощью , но на данный момент я был бы признателен, если бы можно было рассмотреть сценарии, выделенные для датчиков, а также то, как можно объединить два кода для быть одним кодом. Если есть какие-либо вопросы, не стесняйтесь спрашивать. Проект предназначен для мониторинга и контроля бункеров.
@ynot, 👍0
1 ответ
Единственное, что вызывает проблемы при объединении двух простых скетчей, — это команды «задержки». Есть только одна "задержка", так что всё идеально.
- Создать новый скетч
- Вставьте все, чего нет в методе из двух скетчей.
- Объедините методы
setup
, вставив первый и второй ниже. - Удалите из метода повторяющиеся команды, такие как
Serial.begin(115200);
- Объедините методы
loop
, вставив первый и второй ниже. - Переместите код в
loop
, чтобы сделать его визуально приятным (это называется "запахом) " кода)
С этими двумя конкретными скетчами это не должно стать большой проблемой. Пожалуйста, задавайте более точные вопросы, как только у вас возникнут проблемы.
- Выводы прерываний Arduino Mega 2560 и отображение портов с помощью поворотного энкодера
- Измерение скорости двигателя постоянного тока с помощью поворотного энкодера
- Сообщение об ошибке: "exit status 1 expected initializer before 'void'."
- Как повторить другое действие внутри цикла?
- Проверить переключатель уровня с помощью Arduino и некоторых данных
- Arduino Mega TIMER1 интервал в одну секунду
- Светодиод, управляемый Midi через USB
- Serial — отправляет данные в Arduino, пока Arduino отправляет данные