90后小白搭 发表于 2014-5-22 22:07:54

为什么最后要写两遍notone和low才能停掉蜂鸣器和LED(引脚7)?

本帖最后由 90后小白搭 于 2014-5-22 22:09 编辑

void setup() {

Serial.begin(9600);         //使用9600速率进行串口通讯
}

void loop() {

int n = analogRead(A0);    //读取A0口的电压值

float vol = n * (5.0 / 1023.0*100);   //使用浮点数存储温度数据,温度数据由电压值换算得到

Serial.println(vol);                   //串口输出温度数据
delay(2000);                           //等待2秒,控制刷新速度



if (vol>=28)
{digitalWrite (7,HIGH);

pinMode(2,OUTPUT);         //让2号IO口输出   
tone(2,10000);   
//发出指定频响   

delay(40); //最高频率下维持0.04秒钟
         
if (vol<28)
noTone(2);

digitalWrite (7,LOW);

delay(1000);
noTone(2);
digitalWrite (7,LOW);

}
}

shihaipeng04 发表于 2014-5-23 00:55:08

pinmode在loop里就不用再写了,除非需要改变pinmode,这个一般不会遇到。
为什么不用 if   else?而是用了两个if?
如果指定tone发声时长,可以是 tone(2,10000,40)就可以了,不用后面跟一个delay(40)了。
另外如果用了tone(2,10000),那必须用notone才能让他停止。
页: [1]
查看完整版本: 为什么最后要写两遍notone和low才能停掉蜂鸣器和LED(引脚7)?