练习内容
通过接收温度传感器传递的温度值,判断是否达到设定的报警温度,使蜂鸣器的警报响声。
接线图
可以发现这个这接线图和练习二的很像,其实就是把模拟电位器换成了温度传感器,
然后接收温度传感器里面传来的数值。
电路图
练习代码
我这里为了方便测试,设置了一个比较低的温度,手握传感器的时候就会升至34度以上发出蜂鸣声。
// 蜂鸣器连接的引脚
const int VOICE_PIN = 9;
// 出发蜂鸣器发出声音的温度值
const float MAX_TEMP = 34.0;
void setup()
{
// 初始化串口通信频率
Serial.begin(9600);
}
void loop()
{
float reading = analogRead(A0);
// 读取的引脚值转换成温度
float temperature = reading * (5.0 / 1023.0) * 100;
// 打印读取A0引脚的值
Serial.println(temperature);
// 当温度小于设定的最大温度,蜂鸣器发出声音
if (temperature >= MAX_TEMP)
{
for (int i = 200; i <= 800; i++)
{
/* 循环的方式增加频率赫兹 200-800 */
pinMode(VOICE_PIN, OUTPUT);
tone(VOICE_PIN, i);
delay(5);
}
for (int i = 800; i >= 200; i--)
{
/* 循环的方式降低频率赫兹 */
pinMode(VOICE_PIN, OUTPUT);
tone(VOICE_PIN, i);
delay(10);
}
}
else
{
// 停止对应引脚的声音输出
noTone(VOICE_PIN);
}
}
练习到这发生了有趣的一件事情。因为电脑一直开着,中午后楼上的温度升高触发蜂鸣器,吵醒了正在楼下睡午觉的我们。感叹这东西真有意思, 哈哈。
扩展练习
将温度传感器读取的温度,输出到1602液晶显示屏上
接线图
电路图
第一次用1602的液晶显示屏,最开始接线完成后看不清显示屏上的文字,需要斜着看才能看清楚。查了资料后说是有可能电压过载,加了一个10K的电阻在前面解决了。
1602液晶显示屏又是另外一个比较复杂的元件,还得找时间另外再练习一下中文输出。