在这个项目中,我们将使用Arduino Uno开发一个音源。我们将有与UNO交互的按钮,每个按钮都会产生不同的音调强度。UNO产生的音调频率在每个内部都相同。声音的强度随每次按下而变化。这是用Arduino Uno制作钢琴的最简单方法之一。还要检查此钢琴电路。
音调可以增加到20。这可以提供最佳的音调变化和更平滑的变化。音调的强度通过PWM(脉冲宽度调制)改变。下图显示了一个PWM示例。
在PWM中,信号的频率或信号的时间周期(Ton + Toff)始终是恒定的。仅“打开”和“关闭”时间的比率改变。例如,在上图中的第二个图表中,“开启”时间为完整持续时间的80%,而“关闭”时间为完整持续时间的20%。
在第三张图中,“开启”时间为完整持续时间的50%,“关闭”时间为完整持续时间的50%。因此,在第一种情况下,我们的占空比为80%,在第二种情况下,我们的占空比为20%。
通过占空比的变化,我们可以改变Vrms(电压的均方根值),当将此电压提供给蜂鸣器时,只要占空比发生变化,它都会发出不同的噪声。
我们将对UNO进行编程,以为每个按钮提供不同占空比的PWM信号。因此,我们手边有一个音调发生器,每次按下按钮时都会产生不同的音调。
所需组件
硬件: Arduino Uno,电源(5v),1000 uF电容器,100 nF电容器,蜂鸣器,按钮(8个)。
软体: AURDINO nightly或Atmel studio 6.2
电路图和工作说明
音频发生器的电路如下图所示。
为了滤除来自电源电压的噪声,如图所示,在端子之间放置电容器。
Arduino Uno的PWM可以在PCB板上标为“〜”的任何引脚上实现。UNO中有六个PWM通道。但是,我们不能使用在PINS 0-7上建立的PWM引脚,因为PINS是按钮接口的首选。
选择PINS 0-7作为输入是有原因的,因为PINS 0-7代表微控制器的PORTD。因此,在后一种情况下,我们可以采用PORTD的完整BYTE。
现在,为了获得不同的占空比PWM,我们将使用以下命令。
AnalogWrite(9,VALUE); |
从上述情况我们可以直接在相应的引脚上获得PWM信号。括号中的第一个参数用于选择PWM信号的引脚号。第二个参数用于写入占空比。
可以将Arduino Uno的PWM值从0更改为255。将最低“ 0”更改为最高“ 255”。当占空比为255时,我们将在PIN9处获得5V。如果占空比为125,则PIN9上将获得2.5V。我们将在UNO的PORTD接口的8个按钮之间分配0-250的占空比。在这里,我为每个按钮选择25个增量,但这是您选择的。
这样,我们将获得一个PWM信号,其占空比随每个按钮而变化。给蜂鸣器,我们有声音发生器。 下面给出的C代码逐步说明了这种基于Arduino的音调发生器的工作 原理。