我试图使蜂鸣器播放时,附加到Arduino陀螺仪通过一定的旋转阈值在x轴上。问题是:当我模拟回到下的时,它也会激活阈值,这很奇怪。
#include <Adafruit_MPU6050.h>
#include <CuteBuzzerSounds.h>
int buzzer_pin = 4;
Adafruit_MPU6050 IMU;
void setup() {
pinMode(buzzer_pin, OUTPUT);
Serial.begin(115200); // Any baud rate should work
digitalWrite(buzzer_pin, LOW);
if (!IMU.begin()) {
Serial.println("Sensor init failed");
while (1)
yield();
}
Serial.println("Found a sensor");
IMU.setAccelerometerRange(MPU6050_RANGE_2_G);
switch (IMU.getAccelerometerRange()) {
case MPU6050_RANGE_2_G:
Serial.print("+-2G");
break;
}
IMU.setGyroRange(MPU6050_RANGE_250_DEG);
switch (IMU.getGyroRange()) {
case MPU6050_RANGE_250_DEG:
Serial.print("+- 250 deg/s");
break;
}
}
void loop() {
sensors_event_t acc, giro, t;
IMU.getEvent(&acc, &giro, &t);
Serial.print("n X: ");
Serial.print(giro.gyro.x, 1);
Serial.print(" Y: ");
Serial.print(giro.gyro.y, 1);
Serial.print(" Z: ");
Serial.print(giro.gyro.z, 1);
if (giro.gyro.x > 0.5) //threshold
{
digitalWrite(buzzer_pin, HIGH);
}
else
{
digitalWrite(buzzer_pin, LOW);
}
delay(1000);
}
试用链接:https://wokwi.com/projects/351917249533051471
阈值在25到30度之间:要模拟它,点击IMU并播放旋转X滑块。
我明白了这个问题:
在Wokwi中,蜂鸣器会"激活";(显示音符,但不发出任何真实的声音)当使用DigitalWrite()
时,但他们没有被激活。应该按照文档使用tone()
。