【发布时间】:2019-02-26 17:10:39
【问题描述】:
大家好,我正在尝试在 Tap 事件后读出加速度计数据。这个想法是在检测到点击事件后,它使用 playTone 功能播放音调,等待 2 秒,然后从加速度计注册 XYZ 数据。 我面临的问题是使用延迟。这似乎不起作用,因为 XYZ 是在 Tap 事件之后直接写入的。 您可以使用下面的代码并检查串行监视器:
代码:
#include <Adafruit_CircuitPlayground.h>
#include <Wire.h>
#include <SPI.h>
#define CLICKTHRESHHOLD 120
int registry=1; //set initial move
void setup(void) {
while (!Serial);
Serial.begin(9600);
CircuitPlayground.begin();
}
void printAxis() {
float x, y, z;
x = CircuitPlayground.motionX();
y = CircuitPlayground.motionY();
z = CircuitPlayground.motionZ();
Serial.print("X: ");
Serial.print(x);
Serial.print(" Y: ");
Serial.print(y);
Serial.print(" Z: ");
Serial.println(z);
}
void tap() {
CircuitPlayground.playTone(50, 100);
Serial.print("Registry Number: " );
Serial.println(registry);
printAxis();
registry++;
}
void loop() {
// Only take action when either button is pressed.
if ( (CircuitPlayground.leftButton() == true) ) {
CircuitPlayground.setAccelRange(LIS3DH_RANGE_2_G);
// Tapping function
CircuitPlayground.setAccelTap(1, CLICKTHRESHHOLD);
// have a procedure called when a tap is detected
attachInterrupt(digitalPinToInterrupt(7), tap, RISING);
}
}
我尝试在 printAxis 内的循环中添加延迟函数。但是使用延迟时似乎会冻结-
Serial.print("Delaying...");
delay(2000);
Serial.print("Delay ready!");
你们有什么建议或建议吗?最好的!
【问题讨论】:
标签: arduino delay accelerometer circuit adafruit