求助,温度传感器问题
刚刚制作了一个DS18B20的温度传感报警器,将测得温度通过1602lcd显示,在温度大于30摄氏度时蜂鸣器报警,但实际操作中并不会报警,请大家帮忙看看,问题到底出在哪里,谢谢大家。#include <LiquidCrystal.h>#include <OneWire.h>
#include <SPI.h>//这里我使用了arduino.cc上的lcd与寄存器配合使用的库
#include <DallasTemperature.h>//感谢海神提供的DS18B20库
LiquidCrystal lcd(10);
int pin_tem=7;
int i;
OneWire onewire(pin_tem);
DallasTemperature sensors(&onewire);
int pin=2;
void setup() {
lcd.begin(16,2);
lcd.setCursor(0,0);
sensors.begin();//初始化设置
}
void loop() {
lcd.setCursor(0,0);
sensors.requestTemperatures();//温度请求
lcd.print("T=");
lcd.setCursor(2,0);
lcd.print(sensors.getTempCByIndex(0));//输出温度
if(sensors.getTempCByIndex(0)>30){
for(i;i<100;i++){
digitalWrite(pin,HIGH);
}
}
else{
digitalWrite(pin,LOW);
}
} for循环是干嘛用的。。。 设置蜂鸣器的频率 lonelyman 发表于 2016-2-28 09:14 static/image/common/back.gif
设置蜂鸣器的频率
for(i=0;i<100;i++) lonelyman 发表于 2016-2-28 09:14 static/image/common/back.gif
设置蜂鸣器的频率
无源蜂鸣器?为啥不直接用tone更简单点 用tone怎么控制蜂鸣器开关啊 lonelyman 发表于 2016-3-18 19:31 static/image/common/back.gif
用tone怎么控制蜂鸣器开关啊
你去看看api就不会提问了 notone lovezypj 发表于 2016-3-18 22:44 static/image/common/back.gif
你去看看api就不会提问了 notone
好吧,有时间我试一下行不行,感谢你的回复 那个,现在的确成功了,但是又有一个问题:为什么使用tone()可以,而使用digitalWrite和for循环配合就不行呢? lonelyman 发表于 2016-4-23 10:42 static/image/common/back.gif
那个,现在的确成功了,但是又有一个问题:为什么使用tone()可以,而使用digitalWrite和for循环配合就不行 ...
for没有意义,建议删除。超30 蜂鸣器打开,低于30蜂鸣器关了。
林定祥 发表于 2016-4-23 11:11 static/image/common/back.gif
for没有意义,建议删除。超30 蜂鸣器打开,低于30蜂鸣器关了。
那么我要是加一个led灯,岂不是不能用digitalWrtie()? lonelyman 发表于 2016-4-29 16:45 static/image/common/back.gif
那么我要是加一个led灯,岂不是不能用digitalWrtie()?
for(i;i<100;i++){
digitalWrite(pin,HIGH);
}
意思为对digitalWrite(pin,HIGH)操作一百次! #include <LiquidCrystal.h>
#include <OneWire.h>
#include <SPI.h>//这里我使用了arduino.cc上的lcd与寄存器配合使用的库
#include <DallasTemperature.h>//感谢海神提供的DS18B20库
LiquidCrystal lcd(10);
int pin_tem = 7;
int i;
OneWire onewire(pin_tem);
DallasTemperature sensors(&onewire);
int pin = 2;
void setup()
{
lcd.begin(16, 2);
lcd.setCursor(0, 0);
sensors.begin();//初始化设置
}
void loop()
{
lcd.setCursor(0, 0);
sensors.requestTemperatures();//温度请求
lcd.print("T=");
lcd.setCursor(2, 0);
lcd.print(sensors.getTempCByIndex(0));//输出温度
if (sensors.getTempCByIndex(0) > 30)
{
for (i=0; i < 100; i++)
{
digitalWrite(pin, HIGH);
delay(10);
digitalWrite(pin, LOW);
delay(10);
}
}
}
直接换个有源的蜂鸣器,多简单。
有源蜂鸣器:直接高电压就可以响
无源蜂鸣器:需要自己产生人可以听到的频率。相当于喇叭。
页:
[1]