arduino uno产生正弦波
时间: 2023-09-02 11:15:09 浏览: 142
要在Arduino Uno上生成正弦波,你可以使用PWM(脉宽调制)技术。以下是一个简单的示例代码,用于生成一个固定频率和幅度的正弦波:
```cpp
const int outputPin = 9; // 连接到输出引脚的引脚号
void setup() {
pinMode(outputPin, OUTPUT);
}
void loop() {
// 设置正弦波的参数
float frequency = 1000; // 正弦波频率(Hz)
float amplitude = 127.5; // 正弦波幅度(0-255)
// 计算每个采样点的PWM占空比
float period = 1 / frequency;
int samplingRate = 10000; // 采样率(每秒采样次数)
int numSamples = period * samplingRate;
for (int i = 0; i < numSamples; i++) {
float time = i * period / numSamples;
int value = amplitude * sin(2 * PI * frequency * time) + 127.5;
analogWrite(outputPin, value);
delayMicroseconds(1000000 / samplingRate); // 控制每个采样点之间的延迟时间
}
}
```
在上述代码中,我们使用了 `analogWrite()` 函数来输出PWM信号,通过改变 `value` 的值来控制占空比。`sin()` 函数用于计算正弦波的值。你可以根据需要修改 `frequency` 和 `amplitude` 的值来调整正弦波的频率和幅度。
请注意,Arduino Uno的PWM输出范围是0-255,因此我们将 `amplitude` 的范围设置为0-255,并在计算 `value` 时添加了一个偏移量127.5,以将其转换为0-255的范围。
希望这可以帮助到你!
阅读全文