亲,“电路城”已合并到全星升级的「与非网」。了解新「与非网」

  • 方案介绍
  • 相关文件
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

我的项目是一个按钮控制的警报器,具有不同的 LED 转换。您可以更改每次按下的警笛声(例如警察或救护车警笛等)。我使用 10 个 LED 为每个警报器添加了 2 个不同的 LED 模式。我总共添加了 4 个警笛音。

代码解释
1. 由于我们使用按键来切换音调,我们必须消除按键去抖的问题,我通过软件实现使用布尔去抖功能消除了这个问题。

2. 条件if-else 用于在不同功能之间切换。这里one()和oneA()是具有两个不同 LED 转换的第一个音调,对于其他功能也是如此。每个功能的音调都与delay()适当使用的 LED 转换同步。

同步的工作原理
tone()使用 Arduino 上的内置计时器之一,并且该计时器独立于delay(). 或者换句话说,我们可以说,如果你想播放区域节拍,你应该检查延迟时间和持续时间之间的差异,tone()因为这两个功能是并行工作的。现在我所做的是将延迟分成更小的部分,以便与不同的 LED 组一起使用。

让我们以three()一个例子来理解它。

void three() { //This function produces the 3rd siren (AMBULANCE sound).tone(buzz,440,200);
delay(300);
for(int i=3;i<=6;i++)
digitalWrite(i,HIGH);
noTone(buzz);
tone(buzz,494,500);
delay(300);
for(int i=3;i<=6;i++)
{ digitalWrite(i,LOW);
digitalWrite(i+6,HIGH); }
noTone(buzz);
tone(buzz,523,300);
delay(200);
digitalWrite(7,HIGH);
delay(50);
digitalWrite(8,HIGH);
delay(50);
noTone(buzz);
}
最后tone()我将300ms的延迟分为200、50和50,这样7脚和8脚的LED在523hz音调结束时有闪烁效果,而音调在后台持续300ms(因为没有如上所述的延迟和音调持续时间之间的差异)。

本方案更多详细资料可在附件中下载查看

以上内容翻译自网络,原作者:coding_killer,如涉及侵权,可联系删除。

  • 接线图.rar
    6下载
    描述:示意图
  • Siren-Code-Arduino-master.zip
    7下载
    描述:代码

相关推荐

电子产业图谱