Arduino 方波发生器

Ammar Ali 2024年2月15日
Arduino 方波发生器

本教程将讨论使用 Arduino 中的 digitalWrite() 函数生成方波。

Arduino 方波发生器

方波由最大值和最小值组成,这些值之间的转换是瞬时的。方波中的最大值和最小值持续时间相同。

例如,方波的最小值为 0,最大值为 1,每个值的持续时间为 1 秒。方波如下图所示。

Arduino 方波

方波还具有特定的频率,该频率指定方波在一秒内的周期数。60 Hz 的频率值意味着波在一秒钟内完成 60 个周期。

我们可以使用 digitalWrite() 函数在 Arduino 中生成方波。

语法:

digitalWrite(pin_num, value)

上述语法将 pin_num 变量指定的给定 PIN 设置为 value 变量指定的 HIGHLOW。在 Arduino 中,LOW 引脚状态表示 0 伏,而 HIGH 引脚状态表示 5 伏或 3.3 伏,具体取决于 Arduino 板。

为了产生方波,我们必须将数字引脚的值设置为 LOW,经过一些延迟后,我们必须将数字引脚的值设置为 HIGH。在设置数字引脚的值之前,我们必须为类似 INPUTOUTPUT 的引脚设置模式,因为每个数字引脚都有一个上拉电阻,如果我们不这样做会降低电压值’ t 设置数字引脚的模式。

我们可以使用 pinMode() 函数来设置引脚的模式。我们必须将 PIN 作为第一个参数传递,并将诸如 OUTPUTINPUT 之类的 pin 模式作为 pinMode() 函数内的第二个参数传递,以设置数字引脚的模式。

我们还必须在设置数字引脚的值后添加延迟,我们可以使用 delay()delayMicroseconds() 函数在 Arduino 代码中添加延迟。delay() 函数将以毫秒为单位设置给定的延迟,而 delayMicroseconds() 函数将以微秒为单位设置给定的延迟。

让我们在 Arduino 中生成一个频率为 10 Hz 的方波。

代码:

int f_hz = 10;

double delay_time = 1000 / (f_hz * 2);

void setup() { pinMode(11, OUTPUT); }
void loop() {
  digitalWrite(11, LOW);
  delay(delay_time);

  digitalWrite(11, HIGH);
  delay(delay_time);
}

我们使用 1/f 公式计算了上述代码中的延迟时间,其中 f 是方波频率。我们将时间周期乘以 1000,因为我们使用了 delay() 函数,该函数以毫秒为单位设置延迟,并将时间从秒转换为毫秒,我们将时间周期乘以 1000。

要检查输出波形和频率,我们必须使用示波器,或者我们可以使用带引脚 11 的 LED,如果频率较低,它会闪烁。要使用示波器,我们必须将示波器的正极端子与引脚 11 连接,将负极端子连接到 Arduino 的地。

我们还将时间段除以 2,因为我们在一个周期中有两个脉冲,我们将延迟值设置为在将数字引脚设置为 LOW 后等于总时间段的一半,而另一半时间段将用于在将数字引脚设置为 HIGH 后设置延迟。我们可以在上面的代码中看到我们两次使用了 delay() 函数。

delay() 函数的输入值的数据类型是 unsigned``long,如果我们想添加一个小于 1 毫秒的延迟,我们必须使用 delayMicroseconds() 函数可以以微秒为单位添加延迟。我们可以使用 delayMicroseconds() 函数生成高频方波。

请注意,delay()delayMicroseconds() 函数不支持浮点数,因此我们必须设置一个不应将时间段生成为浮点数的频率值。在 Arduino 代码中添加延迟也会停止 Arduino 的其他操作,因为 Arduino 在延迟时间结束之前不会移动到下一行代码,但 PWM 和中断将继续工作。

如果我们想要生成方波并同时执行一些其他任务,我们可以使用 millis() 函数,它将返回程序开始运行以来的时间(以毫秒为单位)。我们可以使用 millis() 函数和 if 语句来检查经过的时间,如果经过的时间等于或大于时间段,我们将改变数字引脚的状态。

查看这个网站了解关于 millis() 函数的更多细节,以及这个网站了解 delayMicroseconds() 函数。点击这个链接了解关于 delay() 函数的详细信息,点击这个链接了解 digitalWrite() 函数。

我们也可以使用 analogWrite() 函数来创建方波,但我们无法定义它的频率。频率已经定义,主要是 499 Hz,或者在某些引脚的情况下,频率是 1000 Hz。

我们必须将 PIN 作为第一个参数传递,波形的占空比应该是 127,作为 analogWrite() 函数中的第二个参数来生成方波。我们必须传递 127 作为第二个参数,因为它将占空比设置为一半,这是生成方波所必需的。

单击此链接以获取 PWM 引脚的频率详细信息以及有关 analogWrite() 函数的更多信息。

作者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook