一、项目说明

        当温度到达我们设定的限定值时,报警器就会响。这样一个功能可以用于厨房温度检测报警以及室内温度过高报警等各种需要检测温度的场合。

        这里需要讲解一个知识点——传感器。这是一种能感知周围环境,并把感知到的信号转换为电信号的感应元件。感应元件再把电信号传递给控制器。就好比我们人的各个感觉器官,当我们感知周围的环境后,再将信息传递给大脑。

二、所需元件 

  • 1 × Arduino UNO R3(以及配套USB数据线)
  • 1 × 面包板
  • 5 × 彩色面包线
  • 1 × 蜂鸣器
  • 1 ×  LM35温度传感器

 三、硬件连接

四、软件代码

//项目七:制作温度报警器
float sinVal;            
int toneVal;
unsigned long tepTimer ;    
 
void setup(){ 
    pinMode(10, OUTPUT);        // 蜂鸣器引脚设置
    Serial.begin(9600);        //设置波特率为9600 bps
}
 
void loop(){ 
    int val;            //用于存储LM35读到的值
    double data;        //用于存储已转换的温度值
    val=analogRead(0);   //LM35连到模拟口,并从模拟口读值
    data = (double) val * (5/10.24);  // 得到电压值,通过公式换成温度
 
    if(data>25){        //  如果温度大于27,蜂鸣器响   
          for(int x=0; x<180; x++){
            //将sin函数角度转化为弧度
            sinVal = (sin(x*(3.1412/180)));
            //用sin函数值产生声音的频率
            toneVal = 2000+(int(sinVal*1000));
            //给引脚10一个
            tone(10, toneVal);
            delay(2); 
          }   
     } else {          // 如果温度小于27,关闭蜂鸣器
           noTone(10);       //关闭蜂鸣器
     }
 
    if(millis() - tepTimer > 500){     // 每500ms,串口输出一次温度值
             tepTimer = millis();
             Serial.print("temperature: ");     // 串口输出“温度”
             Serial.print(data);         // 串口输出温度值
             Serial.println("C");         // 串口输出温度单位
       } 
}

五、运行结果