@@ -29,185 +29,116 @@ SparkFunXM125Distance radarSensor;
2929// I2C default address
3030uint8_t i2cAddress = SFE_XM125_I2C_ADDRESS;
3131
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
6435
6536void setup ()
6637{
6738 // Start serial
6839 Serial.begin (115200 );
40+
41+ Serial.println (" " );
42+ Serial.println (" -------------------------------------------------------" );
6943 Serial.println (" XM125 Example 6: Basic Distance Readings" );
44+ Serial.println (" -------------------------------------------------------" );
7045 Serial.println (" " );
7146
7247 Wire.begin ();
7348
7449 // 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 )
8051 {
8152 Serial.println (" Device failed to setup - Freezing code." );
8253 while (1 )
8354 ; // Runs forever
8455 }
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);
8760 if (setupError != 0 )
8861 {
8962 Serial.print (" Distance Detection Start Setup Error: " );
9063 Serial.println (setupError);
9164 }
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 ();
9372 // New-line and 0.5 second delay for easier reading
9473 Serial.println ();
9574 delay (500 );
9675}
9776
9877void loop ()
9978{
100- distanceSetupError = radarSensor.distanceDetectorReadingSetup ();
101- if (distanceSetupError != 0 )
79+ uint32_t retCode = radarSensor.distanceDetectorReadingSetup ();
80+ if (retCode != 0 )
10281 {
10382 Serial.print (" Distance Reading Setup Error: " );
104- Serial.println (distanceSetupError );
83+ Serial.println (retCode );
10584 }
10685
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.print (" ." );
92+ else
19593 {
196- Serial.print (" Peak8 Distance, Strength: " );
197- Serial.print (distancePeak8);
198- Serial.print (" mm, " );
199- Serial.println (distancePeakStrength8);
20094 Serial.println ();
95+ Serial.print (" Number of Values Detected: " );
96+ Serial.println (numDistances);
20197 }
202- if (distancePeak9 != 0 )
98+
99+ uint32_t distance = 0 ;
100+ int32_t distanceStrength = 0 ;
101+ for (uint32_t i = 0 ; i < numDistances; i++)
203102 {
204- Serial.print (" Peak9 Distance, Strength: " );
205- Serial.print (distancePeak9);
206- Serial.print (" mm, " );
207- Serial.println (distancePeakStrength9);
208- Serial.println ();
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.print (" mm" );
117+ }
118+ else if (distance < 1000 )
119+ {
120+ Serial.print (distance * 0.1 );
121+ Serial.print (" cm" );
122+ }
123+ else
124+ {
125+ Serial.print (distance * 0.001 );
126+ Serial.print (" m" );
127+ }
128+
129+ if (radarSensor.getDistancePeakStrength (i, distanceStrength) != ksfTkErrOk)
130+ {
131+ Serial.print (" Error retrieving Distance Peak Strength" );
132+ Serial.print (i);
133+ Serial.println ();
134+ continue ;
135+ }
136+ Serial.print (" Distance Peak Strength " );
137+ Serial.print (i);
138+ Serial.print (" : " );
139+ Serial.println (distanceStrength);
209140 }
210141
211- // Half a second delay for easier readings
212- delay (500 );
142+ // delay before next reading
143+ delay (2500 );
213144}
0 commit comments