STAR
Cal STAR — firmware, DAQ server, and engine design
Loading...
Searching...
No Matches
main.cpp
Go to the documentation of this file.
1
#include "
main.h
"
2
3
#include <
Adafruit_LIS3DH.h
>
4
#include <Adafruit_Sensor.h>
5
#include <
Arduino.h
>
6
#include <
SPI.h
>
7
8
static
SPIClass
lis_spi
(FSPI);
9
static
Adafruit_LIS3DH
lis
(
LIS3DH_CS_PIN
, &
lis_spi
);
10
static
volatile
bool
g_interrupt_flag
=
false
;
11
12
void
IRAM_ATTR
onInterrupt
() {
13
g_interrupt_flag
=
true
;
14
}
15
16
void
setup
() {
17
Serial
.begin(115200);
18
while
(!
Serial
)
19
delay
(10);
20
21
Serial
.println(
"LIS3DH firmware starting..."
);
22
23
lis_spi
.begin(
LIS3DH_CLK_PIN
,
LIS3DH_MISO_PIN
,
LIS3DH_MOSI_PIN
,
24
LIS3DH_CS_PIN
);
25
26
if
(!
lis
.begin()) {
27
Serial
.println(
"ERROR: LIS3DH not found. Check wiring!"
);
28
while
(1)
29
delay
(100);
30
}
31
32
lis
.setDataRate(
ACCEL_ODR
);
33
lis
.setRange(
ACCEL_RANGE
);
34
35
lis
.configureHighGInterrupt(
INT1_THS_VALUE
,
INT1_DUR_VALUE
);
36
37
pinMode
(
LIS3DH_INT1_PIN
,
INPUT
);
38
attachInterrupt(digitalPinToInterrupt(
LIS3DH_INT1_PIN
),
onInterrupt
,
39
RISING);
40
41
Serial
.println(
"-----------------------------------"
);
42
Serial
.print(
"Range: ±"
);
43
switch
(
ACCEL_RANGE
) {
44
case
LIS3DH_RANGE_2_G
:
45
Serial
.println(
"2g"
);
46
break
;
47
case
LIS3DH_RANGE_4_G
:
48
Serial
.println(
"4g"
);
49
break
;
50
case
LIS3DH_RANGE_8_G
:
51
Serial
.println(
"8g"
);
52
break
;
53
case
LIS3DH_RANGE_16_G
:
54
Serial
.println(
"16g"
);
55
break
;
56
}
57
Serial
.print(
"INT threshold: "
);
58
Serial
.print(
INTERRUPT_THRESHOLD_G
);
59
Serial
.print(
"g (INT1_THS = 0x"
);
60
Serial
.print(
INT1_THS_VALUE
,
HEX
);
61
Serial
.println(
")"
);
62
Serial
.print(
"INT duration: "
);
63
Serial
.print(
INTERRUPT_DURATION_COUNTS
);
64
Serial
.print(
" ODR cycles (INT1_DUR = 0x"
);
65
Serial
.print(
INT1_DUR_VALUE
,
HEX
);
66
Serial
.println(
")"
);
67
Serial
.print(
"INT1 GPIO: "
);
68
Serial
.println(
LIS3DH_INT1_PIN
);
69
Serial
.println(
"-----------------------------------"
);
70
Serial
.println(
"X_g,Y_g,Z_g"
);
71
}
72
73
void
loop
() {
74
if
(
g_interrupt_flag
) {
75
g_interrupt_flag
=
false
;
76
uint8_t src =
lis
.readAndClearInterrupt();
77
if
(src & 0x40) {
// IA bit — confirmed active interrupt
78
Serial
.print(
"[INTERRUPT] High-G event detected! INT1_SRC=0x"
);
79
Serial
.print(src,
HEX
);
80
Serial
.print(
" axes:"
);
81
if
(src & 0x02)
82
Serial
.print(
" XH"
);
83
if
(src & 0x08)
84
Serial
.print(
" YH"
);
85
if
(src & 0x20)
86
Serial
.print(
" ZH"
);
87
Serial
.println();
88
}
89
}
90
91
lis
.read();
92
sensors_event_t event;
93
lis
.getEvent(&event);
94
95
Serial
.print(event.acceleration.x / 9.80665f, 3);
96
Serial
.print(
","
);
97
Serial
.print(event.acceleration.y / 9.80665f, 3);
98
Serial
.print(
","
);
99
Serial
.println(event.acceleration.z / 9.80665f, 3);
100
101
delay
(10);
102
}
Adafruit_LIS3DH.h
This is a library for the Adafruit LIS3DH Accel breakout board.
LIS3DH_RANGE_16_G
@ LIS3DH_RANGE_16_G
Definition
Adafruit_LIS3DH.h:326
LIS3DH_RANGE_8_G
@ LIS3DH_RANGE_8_G
Definition
Adafruit_LIS3DH.h:327
LIS3DH_RANGE_2_G
@ LIS3DH_RANGE_2_G
Definition
Adafruit_LIS3DH.h:329
LIS3DH_RANGE_4_G
@ LIS3DH_RANGE_4_G
Definition
Adafruit_LIS3DH.h:328
Arduino.h
Serial
static SerialStub Serial
Definition
Arduino.h:128
INPUT
#define INPUT
Definition
Arduino.h:21
pinMode
void pinMode(int, int)
Definition
Arduino.h:46
HEX
#define HEX
Definition
Arduino.h:24
main.h
LIS3DH_CS_PIN
#define LIS3DH_CS_PIN
Definition
main.h:27
ACCEL_RANGE
#define ACCEL_RANGE
Definition
main.h:11
ACCEL_ODR
#define ACCEL_ODR
Definition
main.h:21
LIS3DH_CLK_PIN
#define LIS3DH_CLK_PIN
Definition
main.h:30
INTERRUPT_DURATION_COUNTS
#define INTERRUPT_DURATION_COUNTS
Definition
main.h:18
INTERRUPT_THRESHOLD_G
#define INTERRUPT_THRESHOLD_G
Definition
main.h:14
LIS3DH_INT1_PIN
#define LIS3DH_INT1_PIN
Definition
main.h:24
LIS3DH_MISO_PIN
#define LIS3DH_MISO_PIN
Definition
main.h:29
LIS3DH_MOSI_PIN
#define LIS3DH_MOSI_PIN
Definition
main.h:28
SPI.h
lis
Adafruit_LIS3DH lis
Definition
acceldemo.ino:23
delay
void delay(int ms)
Definition
actuator_nc.cpp:30
Adafruit_LIS3DH
Class that stores state and functions for interacting with Adafruit_LIS3DH.
Definition
Adafruit_LIS3DH.h:368
INT1_THS_VALUE
static constexpr uint8_t INT1_THS_VALUE
Definition
config.h:48
INT1_DUR_VALUE
static constexpr uint8_t INT1_DUR_VALUE
Definition
config.h:55
setup
void setup()
Definition
main.cpp:142
loop
void loop()
Definition
main.cpp:201
onInterrupt
void IRAM_ATTR onInterrupt()
Definition
main.cpp:12
g_interrupt_flag
static volatile bool g_interrupt_flag
Definition
main.cpp:10
lis_spi
static SPIClass lis_spi(FSPI)
firmware
IC_Testing
LIS3DH
src
main.cpp
Generated by
1.15.0