Привет, ребята. Я пытаюсь прочитать данные акселерометра после события 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!");
У вас есть какие-нибудь советы или рекомендации?Лучший!