first commit
This commit is contained in:
71
libraries/Adafruit_ADXL343/examples/singletap/singletap.ino
Normal file
71
libraries/Adafruit_ADXL343/examples/singletap/singletap.ino
Normal file
@@ -0,0 +1,71 @@
|
||||
#include <Wire.h>
|
||||
#include <Adafruit_Sensor.h>
|
||||
#include <Adafruit_ADXL343.h>
|
||||
|
||||
/* Assign a unique ID to this sensor at the same time */
|
||||
Adafruit_ADXL343 accel = Adafruit_ADXL343(12345);
|
||||
|
||||
/** The input pin to enable the interrupt on, connected to INT1 on the ADXL. */
|
||||
#define INPUT_PIN_INT1 (5) // SAMD21/SAMD51 = 5 for interrupt pin
|
||||
|
||||
uint32_t g_tap_count = 0;
|
||||
int_config g_int_config_enabled = { 0 };
|
||||
int_config g_int_config_map = { 0 };
|
||||
|
||||
/** Interrupt service routine for INT1 events. This will be called when a single tap is detected. */
|
||||
void int1_isr(void)
|
||||
{
|
||||
g_tap_count++;
|
||||
}
|
||||
|
||||
void setup(void)
|
||||
{
|
||||
Serial.begin(9600);
|
||||
while (!Serial);
|
||||
Serial.println("ADXL343 Single Tap INT Tester"); Serial.println("");
|
||||
|
||||
/* Initialise the sensor */
|
||||
if(!accel.begin())
|
||||
{
|
||||
/* There was a problem detecting the ADXL343 ... check your connections */
|
||||
Serial.println("Ooops, no ADXL343 detected ... Check your wiring!");
|
||||
while(1);
|
||||
}
|
||||
|
||||
/* Set the range to whatever is appropriate for your project */
|
||||
accel.setRange(ADXL343_RANGE_16_G);
|
||||
|
||||
/* Configure the HW interrupts. */
|
||||
pinMode(INPUT_PIN_INT1, INPUT);
|
||||
attachInterrupt(digitalPinToInterrupt(INPUT_PIN_INT1), int1_isr, RISING);
|
||||
|
||||
/* Enable single tap interrupts on the accelerometer. */
|
||||
g_int_config_enabled.bits.single_tap = true;
|
||||
accel.enableInterrupts(g_int_config_enabled);
|
||||
|
||||
/* Map single tap interrupts to INT1 pin. */
|
||||
g_int_config_map.bits.single_tap = ADXL343_INT1;
|
||||
accel.mapInterrupts(g_int_config_map);
|
||||
|
||||
/* Reset tap counter. */
|
||||
g_tap_count = 0;
|
||||
|
||||
Serial.println("ADXL343 init complete. Waiting for single tap INT activity.");
|
||||
}
|
||||
|
||||
void loop(void)
|
||||
{
|
||||
/* Get a new sensor event */
|
||||
/* Reading data clears the interrupts. */
|
||||
sensors_event_t event;
|
||||
accel.getEvent(&event);
|
||||
delay(10);
|
||||
|
||||
while (g_tap_count) {
|
||||
Serial.println("Single tap detected!");
|
||||
/* Clear the interrupt as a side-effect of reading the interrupt source register.. */
|
||||
accel.checkInterrupts();
|
||||
/* Decrement the local interrupt counter. */
|
||||
g_tap_count--;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user