Arduino的模拟火焰检测系统

一·实验效果

 

 

二·所需材料

  

 

三·接线图

   

 

四·实验所需代码

一·实验效果

·蜂鸣器 发出警报。
·红灯 亮。
·串口监视器打印“检测到火灾”

二·所需材料                                                                                                                                          

·Arduino Uno 开发板 x 1                                                                                                                     
·Arduino Uno 开发板 x 1                                                                                                                   
·火焰传感器模块 x 1                                                                                                                        
·无源蜂鸣器 x 1                                                                                                                               
·LED发光二极管 x 1                                                                                                                         
·220Ω 电阻 x 1 (用于LED限流)                                                                                                         
·杜邦线 若干                                                                                                                                        

三·接线图         

                四·实验所需代码

/*
 * 火焰传感器检测程序
 * 功能:检测火焰并输出数值,当检测到火焰时触发声光警报
 */

// --- 宏定义与常量 ---
#define NOTE_ALARM 1047 // 警报音频率
#define FLAME_VALUE 0   // 0表示检测到火灾(低电平触发)

// 定义引脚
const int FlameSensorPin = 13; // 火焰传感器连接引脚13
const int buzzerPin = 3;       // 蜂鸣器模块连接引脚3
const int LED_PIN = 8;         // 警报LED连接引脚8

// 变量
int sensorValue = 1; // 存储传感器读取结果

// --- 函数声明 ---
void playNote(int frequency, int duration);
void FlameAlarm();
void NoAlarm();
void LED(int pin, int state);

void setup() {
  // 1. 初始化串口通信
  Serial.begin(9600);
  
  // 2. 配置引脚模式
  pinMode(FlameSensorPin, INPUT); // 传感器为输入
  pinMode(buzzerPin, OUTPUT);     // 蜂鸣器为输出
  pinMode(LED_PIN, OUTPUT);       // LED为输出
  
  // 3. 初始化状态
  digitalWrite(buzzerPin, HIGH);  // 初始关闭蜂鸣器(视模块而定,有的为LOW关闭)
  LED(LED_PIN, LOW);              // 初始关闭LED
  
  Serial.println("火焰传感器初始化完成!");
  Serial.println("---------------------");
}

void loop() {
  // 1. 读取传感器值
  sensorValue = digitalRead(FlameSensorPin);
  
  // 2. 判断是否检测到火焰
  // 注意:大多数火焰传感器检测到火时输出低电平(0)
  if(sensorValue == FLAME_VALUE) 
  {
    FlameAlarm();      // 触发报警声音
    LED(LED_PIN, HIGH); // 点亮LED
  }
  else
  {
    NoAlarm();         // 停止报警
    LED(LED_PIN, LOW);  // 熄灭LED
  }
  
  // 3. 延时 (注意:这里延时太长会影响反应速度,后文会优化)
  delay(500);
}

// --- 自定义函数实现 ---

// 封装的LED控制函数
void LED(int pin, int state) {
  digitalWrite(pin, state);
}

// 没有检测到火灾时的状态
void NoAlarm() {
  // 对于某些有源蜂鸣器或特定模块,HIGH可能是关闭,noTone是更通用的关闭方法
  digitalWrite(buzzerPin, HIGH); 
  // noTone(buzzerPin); // 建议使用noTone确保无源蜂鸣器静音
  Serial.println("安全:没有检测到火灾");
}

// 检测到火灾时的报警动作
void FlameAlarm() {
  Serial.println("警报!!!检测到火灾");
  // 播放急促的警报音
  playNote(NOTE_ALARM, 300);
  delay(50); // 声音间隔
  playNote(NOTE_ALARM, 300);
  noTone(buzzerPin); // 播放完停止
}

// 基础工具函数:播放指定音符
void playNote(int frequency, int duration) {
  tone(buzzerPin, frequency);
  delay(duration);
}

       代码概括

 

这是一个基于Arduino的火焰报警器程序,主要功能如下:

 

核心功能

 

· 通过数字火焰传感器检测火焰(低电平触发)

· 检测到火焰时触发声光报警(蜂鸣器鸣响 + LED点亮)

· 安全状态下关闭所有警报

· 通过串口监视器输出状态信息

 

硬件连接

 

· 火焰传感器 → 引脚13

· 蜂鸣器 → 引脚3

· LED指示灯 → 引脚8

 

工作流程

 

1. 初始化:设置引脚模式,关闭所有输出

2. 主循环:

   · 读取火焰传感器状态

   · 检测到火焰(值为0)→ 触发警报

   · 未检测到火焰 → 关闭警报

   · 每次循环延迟500ms

 

警报模式

 

· 声音警报:蜂鸣器发出1047Hz的双短音

· 视觉警报:LED持续点亮

· 串口输出:显示"警报!!!检测到火灾"

 

这是一个基础的火焰检测报警系统,适用于简单的安全监控场景。                                                                                                                                                                                      


 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值