基本上我正在尝试将频率发送到扬声器,并且我想根据加速度计的输入来调制频率。 此代码有效:
#include "Arduino_BMI270_BMM150.h"
void setup() {
pinMode(outpin, OUTPUT);
}
void loop() {
freqout(1000, 100);
}
void freqout(int freq, int t) // freq in hz, t in ms
{
int hperiod;
long cycles, i;
hperiod = (500000 / freq) - 7;
cycles = ((long)freq * (long)t) / 1000;
for (i=0; i<= cycles; i++){
digitalWrite(outpin, HIGH);
delayMicroseconds(hperiod);
digitalWrite(outpin, LOW);
delayMicroseconds(hperiod - 1);
}
}
但是一旦包含 IMU 设置代码,扬声器就不再有声音输出:
#include "Arduino_BMI270_BMM150.h"
void setup() {
Serial.begin(9600);
while (!Serial);
Serial.println("Started");
if (!IMU.begin()) {
Serial.println("Failed to initialize IMU!");
while (1);
}
Serial.print("Accelerometer sample rate = ");
Serial.print(IMU.accelerationSampleRate());
Serial.println(" Hz");
pinMode(outpin, OUTPUT);
}
void loop() {
freqout(1000, 100);
}
void freqout(int freq, int t) // freq in hz, t in ms
{
int hperiod;
long cycles, i;
hperiod = (500000 / freq) - 7;
cycles = ((long)freq * (long)t) / 1000;
for (i=0; i<= cycles; i++){
digitalWrite(outpin, HIGH);
delayMicroseconds(hperiod);
digitalWrite(outpin, LOW);
delayMicroseconds(hperiod - 1);
}
}
我对 mbed 操作系统或 nano 的总体架构并不是非常了解,所以如果有更多经验的人有任何见解,那就太棒了!更新:这似乎与arduino获得的功率有关。我一直在尝试通过 vin 使用 9v 电池为其供电,但在通过 USB 插入时尝试似乎可行。
我在设置代码中有
while (!Serial);
,所以它只是挂在无限循环中等待串行连接。