做一个烟雾报警系统,但是就定时出问题了,求助!!-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 807|回复: 11

[未解决] 做一个烟雾报警系统,但是就定时出问题了,求助!!

[复制链接]
发表于 2022-3-4 17:49 | 显示全部楼层 |阅读模式
#define MQ2PIN 36  //烟雾报警器AO
#define FMQ 15    //蜂鸣器引脚
unsigned long detect_os_time = 0;

const uint8_t JDQ = 16; //控制风扇继电器
void setup()
{                                                                    蜂鸣器是低电平触发
  pinMode(FMQ,OUTPUT);
  pinMode(MQ2PIN, INPUT);
  Serial.begin(9600);
  digitalWrite(FMQ,HIGH);
}




void MQ2_FanCtrol()
{
  int MQ2Val = analogRead(MQ2PIN);
  if(MQ2Val > 2000)
  {
     //digitalWrite(FMQ, LOW);//打开蜂鸣器
      digitalWrite(JDQ, HIGH);//打开风扇
     
    if(millis()- detect_os_time > 5000)                     
    {
         detect_os_time = millis();
        digitalWrite(FMQ, HIGH);  
        Serial.println("GOGOGOG ");
        digitalWrite(JDQ, LOW);
    }
  }
}
      
   


void loop()
{
  Serial.println("Sensor AD Value = ");
  Serial.println(analogRead(MQ2PIN));
  MQ2_FanCtrol();
  delay(1000);
  
}




我想烟雾传感器监测到大于2000值,然后就让蜂鸣器和电机转动,但是每次一监测到后,蜂鸣器就一直响,进入不了停止里边,我对定时方面不太懂,麻烦大佬为我解答一下。

 楼主| 发表于 2022-3-4 17:57 | 显示全部楼层
每次蜂鸣器响后就停不下来了
发表于 2022-3-4 19:42 | 显示全部楼层
你是想让它响一会就停止吗
 楼主| 发表于 2022-3-4 19:46 | 显示全部楼层
mengxgh 发表于 2022-3-4 19:42
你是想让它响一会就停止吗

对,就烟雾报警器监测到后,让蜂鸣器响10秒后再停止。
发表于 2022-3-4 19:46 | 显示全部楼层
我感觉,大于2000就风扇转和蜂鸣器响,延时多长时间,蜂鸣器停止。
应该还要加上如果在正常数值,让他们停止吧,比如小于=2000.
我也刚学习,互相学习
发表于 2022-3-4 19:49 | 显示全部楼层
z1208592408 发表于 2022-3-4 19:46
对,就烟雾报警器监测到后,让蜂鸣器响10秒后再停止。

是不是再加上一个变量,如果是第一次报警,就响,响完就不再响了。如果报警解除又复位这样子
发表于 2022-3-4 20:01 | 显示全部楼层

bool baojing = false;   //定义一个变量用于记录报警有没有响过

void MQ2_FanCtrol()
{
  int MQ2Val = analogRead(MQ2PIN);
  if(MQ2Val > 2000)
    {
      if baojing = false;
      {
        digitalWrite(JDQ, HIGH);//打开风扇
        digitalWrite(FMQ, LOW);//打开蜂鸣器
        delay=10000;
        digitalWrite(FMQ, LOW);//关闭蜂鸣器
        baojing=true;           //已经报警过
      }
     

   else if (MQ2Val <= 2000);
    {
      baojing=false;            //报警状态复位
      digitalWrite(JDQ, low);   //关闭风扇
    }
  }
}
      

大概写了一下,是不是这样子
 楼主| 发表于 2022-3-4 20:01 | 显示全部楼层
mengxgh 发表于 2022-3-4 19:49
是不是再加上一个变量,如果是第一次报警,就响,响完就不再响了。如果报警解除又复位这样子 ...

我前边加了标记,但是还是一样..我总感觉millis()有时候会失灵,我现在弄了个中断来
发表于 2022-3-4 20:05 | 显示全部楼层
millis()
我其实不知道这个是干啥的,是时间吗,没看懂,我没用过这个函数。所以按我的理解写了一下
 楼主| 发表于 2022-3-4 20:21 | 显示全部楼层
mengxgh 发表于 2022-3-4 20:05
millis()
我其实不知道这个是干啥的,是时间吗,没看懂,我没用过这个函数。所以按我的理解写了一下 ...

一个系统定时功能的函数,我感觉不太好用,现在用Ticker这个库,还不错
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 13:44 , Processed in 0.092966 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表