极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9554|回复: 1

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

[复制链接]
发表于 2014-5-22 22:07:54 | 显示全部楼层 |阅读模式
本帖最后由 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);

}
}
回复

使用道具 举报

发表于 2014-5-23 00:55:08 | 显示全部楼层
pinmode在loop里就不用再写了,除非需要改变pinmode,这个一般不会遇到。
为什么不用 if   else?而是用了两个if?
如果指定tone发声时长,可以是 tone(2,10000,40)就可以了,不用后面跟一个delay(40)了。
另外如果用了tone(2,10000),那必须用notone才能让他停止。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-14 19:42 , Processed in 0.035642 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表