@@ -29,182 +29,112 @@ SparkFunXM125Distance radarSensor;
29
29
// I2C default address
30
30
uint8_t i2cAddress = SFE_XM125_I2C_ADDRESS;
31
31
32
- // Setup Variables
33
- uint32_t startVal = 0 ;
34
- uint32_t endVal = 0 ;
35
- uint32_t numDistances = 9 ;
36
- uint32_t calibrateNeeded = 0 ;
37
- uint32_t measDistErr = 0 ;
38
-
39
- // Error statuses
40
- uint32_t errorStatus = 0 ;
41
- uint32_t distanceSetupError = 0 ;
42
-
43
- // Distance Variables
44
- int32_t distancePeakStrength0 = 0 ;
45
- uint32_t distancePeak0 = 0 ;
46
- int32_t distancePeakStrength1 = 0 ;
47
- uint32_t distancePeak1 = 0 ;
48
- int32_t distancePeakStrength2 = 0 ;
49
- uint32_t distancePeak2 = 0 ;
50
- int32_t distancePeakStrength3 = 0 ;
51
- uint32_t distancePeak3 = 0 ;
52
- int32_t distancePeakStrength4 = 0 ;
53
- uint32_t distancePeak4 = 0 ;
54
- int32_t distancePeakStrength5 = 0 ;
55
- uint32_t distancePeak5 = 0 ;
56
- int32_t distancePeakStrength6 = 0 ;
57
- uint32_t distancePeak6 = 0 ;
58
- int32_t distancePeakStrength7 = 0 ;
59
- uint32_t distancePeak7 = 0 ;
60
- int32_t distancePeakStrength8 = 0 ;
61
- uint32_t distancePeak8 = 0 ;
62
- int32_t distancePeakStrength9 = 0 ;
63
- uint32_t distancePeak9 = 0 ;
32
+ // Presence range in mm used
33
+ #define MY_XM125_RANGE_START 200
34
+ #define MY_XM125_RANGE_END 2000
64
35
65
36
void setup ()
66
37
{
67
38
// Start serial
68
39
Serial.begin (115200 );
40
+
41
+ Serial.println (" " );
42
+ Serial.println (" -------------------------------------------------------" );
69
43
Serial.println (" XM125 Example 6: Basic Distance Readings" );
44
+ Serial.println (" -------------------------------------------------------" );
70
45
Serial.println (" " );
71
46
72
47
Wire.begin ();
73
48
74
49
// If begin is successful (0), then start example
75
- if (radarSensor.begin (i2cAddress, Wire) == 1 )
76
- {
77
- Serial.println (" Begin" );
78
- }
79
- else // Otherwise, infinite loop
50
+ if (radarSensor.begin (i2cAddress, Wire) == false )
80
51
{
81
52
Serial.println (" Device failed to setup - Freezing code." );
82
53
while (1 )
83
54
; // Runs forever
84
55
}
85
-
86
- int32_t setupError = radarSensor.distanceBegin ();
56
+ Serial.println (" Starting Sensor..." );
57
+ Serial.println ();
58
+ // Start the sensor with the specified range values
59
+ int32_t setupError = radarSensor.distanceBegin (MY_XM125_RANGE_START, MY_XM125_RANGE_END);
87
60
if (setupError != 0 )
88
61
{
89
62
Serial.print (" Distance Detection Start Setup Error: " );
90
63
Serial.println (setupError);
91
64
}
92
-
65
+ Serial.println ();
66
+ Serial.print (" Distance Detection Started - range: " );
67
+ Serial.print (MY_XM125_RANGE_START);
68
+ Serial.print (" mm to " );
69
+ Serial.print (MY_XM125_RANGE_END);
70
+ Serial.println (" mm" );
71
+ Serial.println ();
93
72
// New-line and 0.5 second delay for easier reading
94
73
Serial.println ();
95
74
delay (500 );
96
75
}
97
76
98
77
void loop ()
99
78
{
100
- distanceSetupError = radarSensor.distanceDetectorReadingSetup ();
101
- if (distanceSetupError != 0 )
79
+ uint32_t retCode = radarSensor.distanceDetectorReadingSetup ();
80
+ if (retCode != 0 )
102
81
{
103
82
Serial.print (" Distance Reading Setup Error: " );
104
- Serial.println (distanceSetupError );
83
+ Serial.println (retCode );
105
84
}
106
85
107
- // Read PeakX Distance and PeakX Strength registers for the number of distances detected
108
- radarSensor.getDistancePeak0Distance (distancePeak0);
109
- radarSensor.getDistancePeak0Strength (distancePeakStrength0);
110
- radarSensor.getDistancePeak1Distance (distancePeak1);
111
- radarSensor.getDistancePeak1Strength (distancePeakStrength1);
112
- radarSensor.getDistancePeak2Distance (distancePeak2);
113
- radarSensor.getDistancePeak2Strength (distancePeakStrength2);
114
- radarSensor.getDistancePeak3Distance (distancePeak3);
115
- radarSensor.getDistancePeak3Strength (distancePeakStrength3);
116
- radarSensor.getDistancePeak4Distance (distancePeak4);
117
- radarSensor.getDistancePeak4Strength (distancePeakStrength4);
118
- radarSensor.getDistancePeak5Distance (distancePeak5);
119
- radarSensor.getDistancePeak5Strength (distancePeakStrength5);
120
- radarSensor.getDistancePeak6Distance (distancePeak6);
121
- radarSensor.getDistancePeak6Strength (distancePeakStrength6);
122
- radarSensor.getDistancePeak7Distance (distancePeak7);
123
- radarSensor.getDistancePeak7Strength (distancePeakStrength7);
124
- radarSensor.getDistancePeak8Distance (distancePeak8);
125
- radarSensor.getDistancePeak8Strength (distancePeakStrength8);
126
- radarSensor.getDistancePeak9Distance (distancePeak9);
127
- radarSensor.getDistancePeak9Strength (distancePeakStrength9);
128
-
129
- // If a peak distance was detected, then read out the distance and strength
130
- if (distancePeak0 != 0 )
131
- {
132
- Serial.print (" Peak0 Distance, Strength: " );
133
- Serial.print (distancePeak0);
134
- Serial.print (" mm, " );
135
- Serial.println (distancePeakStrength0);
136
- Serial.println ();
137
- }
138
- if (distancePeak1 != 0 )
139
- {
140
- Serial.print (" Peak1 Distance, Strength: " );
141
- Serial.print (distancePeak1);
142
- Serial.print (" mm, " );
143
- Serial.println (distancePeakStrength1);
144
- Serial.println ();
145
- }
146
- if (distancePeak2 != 0 )
147
- {
148
- Serial.print (" Peak2 Distance, Strength: " );
149
- Serial.print (distancePeak2);
150
- Serial.print (" mm, " );
151
- Serial.println (distancePeakStrength2);
152
- Serial.println ();
153
- }
154
- if (distancePeak3 != 0 )
155
- {
156
- Serial.print (" Peak3 Distance, Strength: " );
157
- Serial.print (distancePeak3);
158
- Serial.print (" mm, " );
159
- Serial.println (distancePeakStrength3);
160
- Serial.println ();
161
- }
162
- if (distancePeak4 != 0 )
163
- {
164
- Serial.print (" Peak4 Distance, Strength: " );
165
- Serial.print (distancePeak4);
166
- Serial.print (" mm, " );
167
- Serial.println (distancePeakStrength4);
168
- Serial.println ();
169
- }
170
- if (distancePeak5 != 0 )
171
- {
172
- Serial.print (" Peak5 Distance, Strength: " );
173
- Serial.print (distancePeak5);
174
- Serial.print (" mm, " );
175
- Serial.println (distancePeakStrength5);
176
- Serial.println ();
177
- }
178
- if (distancePeak6 != 0 )
179
- {
180
- Serial.print (" Peak6 Distance, Strength: " );
181
- Serial.print (distancePeak6);
182
- Serial.print (" mm, " );
183
- Serial.println (distancePeakStrength6);
184
- Serial.println ();
185
- }
186
- if (distancePeak7 != 0 )
187
- {
188
- Serial.print (" Peak7 Distance, Strength: " );
189
- Serial.print (distancePeak7);
190
- Serial.print (" mm, " );
191
- Serial.println (distancePeakStrength7);
192
- Serial.println ();
193
- }
194
- if (distancePeak8 != 0 )
86
+ // How many distance values were detected? (0-9)
87
+ uint32_t numDistances = 0 ;
88
+ radarSensor.getDistanceNumberDistances (numDistances);
89
+
90
+ if (numDistances == 0 )
91
+ Serial.println (" No distance values detected." );
92
+ else
195
93
{
196
- Serial.print (" Peak8 Distance, Strength: " );
197
- Serial.print (distancePeak8);
198
- Serial.print (" mm, " );
199
- Serial.println (distancePeakStrength8);
200
- Serial.println ();
94
+ Serial.print (" Number of Distances Values Detected: " );
95
+ Serial.println (numDistances);
201
96
}
202
- if (distancePeak9 != 0 )
97
+ Serial.println ();
98
+
99
+ uint32_t distance = 0 ;
100
+ int32_t distanceStrength = 0 ;
101
+ for (uint32_t i = 0 ; i < numDistances; i++)
203
102
{
204
- Serial.print (" Peak9 Distance, Strength: " );
205
- Serial.print (distancePeak9);
206
- Serial.print (" mm, " );
207
- Serial.println (distancePeakStrength9);
103
+ if (radarSensor.getDistancePeakDistance (i, distance) != ksfTkErrOk)
104
+ {
105
+ Serial.print (" Error retrieving Distance Peak " );
106
+ Serial.print (i);
107
+ Serial.println ();
108
+ continue ;
109
+ }
110
+ Serial.print (" Distance Peak " );
111
+ Serial.print (i);
112
+ Serial.print (" : " );
113
+ if (distance < 100 )
114
+ {
115
+ Serial.print (distance);
116
+ Serial.println (" mm" );
117
+ }
118
+ else if (distance < 1000 )
119
+ {
120
+ Serial.print (distance * 0.1 );
121
+ Serial.println (" cm" );
122
+ }
123
+ else
124
+ Serial.print (distance * 0.001 );
125
+ Serial.println (" m" );
126
+
127
+ if (radarSensor.getDistancePeakStrength (i, distanceStrength) != ksfTkErrOk)
128
+ {
129
+ Serial.print (" Error retrieving Distance Peak Strength" );
130
+ Serial.print (i);
131
+ Serial.println ();
132
+ continue ;
133
+ }
134
+ Serial.print (" Distance Peak Strength" );
135
+ Serial.print (i);
136
+ Serial.print (" : " );
137
+ Serial.println (distanceStrength);
208
138
Serial.println ();
209
139
}
210
140
0 commit comments