Всем здравствуйте! Делаю проект по анализатору воздуха Анализатор воздуха на платформе Arduino | Статья в журнале «Юный ученый»
Вроде собрал, но работает как-то странно. Сначала загорается зелёный светодиод, потом красный и пищит зуммер (я так понимаю, калибровка) на протяжении минуты-двух, потом снова зелёный. Проблема в том, что со временем зелёный светодиод начинает мерцать (хотя в коде такого не прописано), потом начинают немного гаснуть сами датчики, а потом и вовсе никакой диод не горит. Это может быть какая-то проблема с питанием от ардуинки или это уже проблема с платой расширения? До этого пару раз ардуинка пищала странно и гасла, через время оживала, шьётся нормально. Может, кто-то с подобной проблемой сталкивался или собирал этот проект ?
P.S.Библиотеки другие для DHT11, код немного менялся, поэтому выкладываю на всякий случай:
#include <BaseMQ.h>
#include <MQ135.h>
#include <MQ2.h>
#include <MQ3.h>
#include <MQ4.h>
#include <MQ5.h>
#include <MQ6.h>
#include <MQ7.h>
#include <MQ8.h>
#include <MQ9.h>
#include <TroykaMQ.h>
#include <DHT.h> // библиотека Adafruit (классическая)
#include <SoftwareSerial.h>
#define LED_1 9
#define LED_2 11
#define PIN_MQ2 A1
#define PIN_MQ7 A4
#define BUZZER_PIN 10
#define DHTPIN 8
#define DHTTYPE DHT11
DHT sensor(DHTPIN, DHTTYPE);
MQ2 mq2(PIN_MQ2);
MQ7 mq7(PIN_MQ7);
void setup() {
pinMode(LED_1, OUTPUT);
pinMode(LED_2, OUTPUT);
sensor.begin();
mq2.calibrate();
mq7.calibrate();
digitalWrite(LED_1, HIGH);
Serial.begin(9600);
Serial.print(“\nTemp(C)”);
Serial.print(“\t\t”);
Serial.print(“Humidity”);
Serial.print(“\t”);
Serial.print(“LPG”);
Serial.print(“\t\t”);
Serial.print(“Methane”);
Serial.print(“\t\t”);
Serial.print(“Smoke”);
Serial.print(“\t\t”);
Serial.print(“Hydrogen”);
Serial.print(“\t”);
Serial.println(“Carbon Monoxide”);
Serial.println(“------------------------------------------------------------------------”);
}
void loop() {
int val, frequency;
Serial.println(“\n”);
float t = sensor.readTemperature();
float h = sensor.readHumidity();
if (isnan(t) || isnan(h)) {
Serial.print("Er\\t\\tEr\\t\\t");
} else {
Serial.print((int)t);
Serial.print("\\t\\t");
Serial.print((int)h);
Serial.print("\\t\\t");
}
delay(5000);
Serial.print(mq2.readLPG());
Serial.print(“\t\t”);
Serial.print(mq2.readMethane());
Serial.print(“\t\t”);
delay(5000);
Serial.print(mq2.readSmoke());
Serial.print(“\t\t”);
Serial.print(mq2.readHydrogen());
Serial.print(“\t\t”);
delay(5000);
Serial.print(mq7.readCarbonMonoxide());
val = 500;
frequency = map(val, 0, 1023, 3500, 4500);
int temp = (int)t;
int hum = (int)h;
if ((temp > 35) || (temp < 15) ||
(hum > 80) || (hum < 20) ||
(mq7.readCarbonMonoxide() > 90) ||
(mq2.readLPG() > 100) ||
(mq2.readMethane() > 100) ||
(mq2.readHydrogen() > 400)) {
digitalWrite(LED_1, LOW);
digitalWrite(LED_2, HIGH);
tone(BUZZER_PIN, frequency, 2000);
delay(500);
tone(BUZZER_PIN, frequency, 2000);
delay(500);
tone(BUZZER_PIN, frequency, 2000);
} else {
digitalWrite(LED_1, HIGH);
digitalWrite(LED_2, LOW);
}
delay(5000);
}
