1、硬件部分
温度报警器。当温度到达我们设定的限定值时,报警器就会响,只是抛砖引玉,以后可自由发挥,能学到的知识点,串口监视器的使用。
LM35温度传感器正负为两测(正负极的方法:平面对自己,左边为+,右边为负,中间为模拟信号输出,具体还得看说明,这是自己总结的),Arduino板的右下方A0-A5是模拟信号的输入端子;
2、代码部分
float sinValue;
int toneVal;
unsigned long tepTimer;
void setup() {
pinMode(8,OUTPUT);
Serial.begin(9600); //使用串口监控
}
void loop() {
int val = analogRead(0); //用于读取LM35的值,读取到的是电压的值
double data = (double) val * (5/10.24); //用于存储已经转换过的值,通过电压值利用公式转换成温度
if(data > 30){
for(int i=0;i<180;i++){
//将sin函数角度转化为弧度
sinValue = (sin(i*(3.1412/180)));
//用sin函数值产生声音的频率
toneVal = 2000 + (int(sinValue*1000));
tone(8,toneVal);
delay(2);
}
}else{
noTone(8); //如果温度小于30,则关闭蜂鸣器
}
if(millis() - tepTimer > 5000){
tepTimer = millis();
Serial.print("tmp:");
Serial.print(data);
Serial.println("C"); //输出温度单位并换行
}
}
成功下载完程序后,打开Arduino IDE的串口监视器。
就可以直接从串口中读取温度值,并尝试升高周围环境温度,或者用手直接接触LM35使其升温,串口可以很直观的看到温度有明显的变化。
蜂鸣器工作的条件是,一旦检测到环境温度大于30度,蜂鸣器鸣响,环境温度小于30度,则关闭蜂鸣器。
3、关键部分
setup()函数的第一句,我们想必已经很熟了,设置蜂鸣器为输出模式,有人可能会问为什么LM35不用设置呢?LM35是个模拟量,模拟量不需要设置引脚模式。pinMode只用于数字引脚。
Arduino的通信伙伴——串口
串口是Arduino和外界进行通信的一个简单的方法。每个Arduino都至少有一个串口,UNO分别与数字引脚0(RX)和数字引脚1(TX)相连。所以如果要用到串口通信的,数字0和1不能用于输入输出功能。
这里用到了一个新函数——analogRead(pin)。
int val = analogRead(0); //用于读取LM35的值,读取到的是电压的值
这个函数用于从模拟引脚读值,pin是指连接的模拟引脚。Arduino的模拟引脚连接到一个了10位A/D转换,输入0~5V的电压对应读到0~1023的数值,每个读到的数值对应的都是一个电压值。
double data = (double) val * (5/10.24); //用于存储已经转换过的值,通过电压值利用公式转换成温度
这里读到的是温度的电压值,是以0~1023的方式输出。而我们LM35温度传感器每10mV对应1摄氏度。从传感器中读到的电压值,它的范围在0~1023,将该值分成1024份,再把结果乘以5,映射到0~5V,因为每度10mV,需要再乘以100得到一个double型温度值,最后赋给data变量。
Serial.print("tmp:");
Serial.print(data);
Serial.println("C"); //输出温度单位并换行
print()的解释是,以我们可读的ASCII形式从串口输出。