-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathExample01_PresenceBasicReadings.ino
117 lines (97 loc) · 3.26 KB
/
Example01_PresenceBasicReadings.ino
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
/*
Example 1: Presence Basic Readings
Using the Acconeer XM125 A121 60GHz Pulsed Coherent Radar Sensor.
This example shows how operate the XM125 when the device is in Presence Reading Mode.
The sensor is initialized, then the presence distance values will print out
to the terminal.
By: Madison Chodikov
SparkFun Electronics
Date: 2024/1/22
SparkFun code, firmware, and software is released under the MIT License.
Please see LICENSE.md for further details.
Hardware Connections:
QWIIC --> QWIIC
Serial.print it out at 115200 baud to serial monitor.
Feel like supporting our work? Buy a board from SparkFun!
https://www.sparkfun.com/products/ - Qwiic XM125 Breakout
*/
#include "SparkFun_Qwiic_XM125_Arduino_Library.h"
#include <Arduino.h>
SparkFunXM125Presence radarSensor;
// I2C default address
uint8_t i2cAddress = SFE_XM125_I2C_ADDRESS;
// Presence distance values
uint32_t distance = 0;
// Error statuses
int32_t errorStatus = 0;
int32_t busyError = 0;
int32_t setupError = 0;
int32_t presValError = 0;
int32_t detectorError = 0;
// Presence range in mm used
#define MY_XM125_RANGE_START 200
#define MY_XM125_RANGE_END 1000
void setup()
{
// Start serial
Serial.begin(115200);
Serial.println("");
Serial.println("-------------------------------------------------------");
Serial.println("XM125 Example 1: Basic Presence Readings");
Serial.println("-------------------------------------------------------");
Serial.println("");
Wire.begin();
// If begin is successful (1), then start example
bool success = radarSensor.begin(i2cAddress, Wire);
if (success == false)
{
Serial.println("Device failed to setup - Freezing code.");
while (1)
; // Runs forever
}
// Start the sensor with default register values
int32_t setupError = radarSensor.detectorStart(MY_XM125_RANGE_START, MY_XM125_RANGE_END);
if (setupError != 0)
{
Serial.print("Presence Detection Start Setup Error: ");
Serial.println(setupError);
}
Serial.print("Presense Detection Started - range: ");
Serial.print(MY_XM125_RANGE_START);
Serial.print("mm to ");
Serial.print(MY_XM125_RANGE_END);
Serial.println("mm");
Serial.println();
delay(500);
}
void loop()
{
// Busy wait loop until data is ready
radarSensor.busyWait();
// Get the presence distance value and print out if no errors.
// Note - this returns if Presence is detected now, or since last check (sticky)
presValError = radarSensor.getDistanceValuemm(distance);
if (presValError == 0)
{
Serial.print("Presence Detected: ");
// if distance is > 0, presence is detected, else it is not
if (distance > 0)
{
Serial.print("YES - Distance: ");
Serial.print(distance);
Serial.print("mm, ");
Serial.print(distance * .1);
Serial.print("cm, ");
Serial.print(distance * .001);
Serial.print("m, ");
Serial.print(distance * .03937008);
Serial.println("In");
}
else
Serial.println("NO");
}
else
Serial.println("Error returning presence distance value");
// Delay 2.5 seconds between readings
delay(2500);
}