@@ -80,9 +80,7 @@ class WipperSnapper_I2C_Driver_MLX90632D : public WipperSnapper_I2C_Driver {
80
80
// Reset the device
81
81
if (!_mlx90632->reset ()) {
82
82
WS_DEBUG_PRINTLN (F (" Device reset failed" ));
83
- while (1 ) {
84
- delay (10 );
85
- }
83
+ return false ;
86
84
}
87
85
WS_DEBUG_PRINTLN (F (" Device reset: SUCCESS" ));
88
86
@@ -261,25 +259,25 @@ class WipperSnapper_I2C_Driver_MLX90632D : public WipperSnapper_I2C_Driver {
261
259
return true ;
262
260
}
263
261
262
+ // Check if we need to trigger a new measurement for step modes
263
+ mlx90632_mode_t currentMode = _mlx90632->getMode ();
264
+ if (currentMode == MLX90632_MODE_STEP ||
265
+ currentMode == MLX90632_MODE_SLEEPING_STEP) {
266
+ // Trigger single measurement (SOC bit) for step modes
267
+ if (!_mlx90632->startSingleMeasurement ()) {
268
+ WS_DEBUG_PRINTLN (F (" Failed to start single measurement" ));
269
+ return false ;
270
+ }
271
+ delay (510 ); // Wait for measurement to complete @ 2Hz
272
+ }
273
+
264
274
// Only check new data flag - much more efficient for continuous mode
265
275
if (_mlx90632->isNewData ()) {
266
- WS_DEBUG_PRINT (F (" New Data Available - Cycle Position: " ));
267
- WS_DEBUG_PRINTLN (_mlx90632->readCyclePosition ());
268
-
269
- // Read ambient temperature
270
276
_deviceTemp = _mlx90632->getAmbientTemperature ();
271
- WS_DEBUG_PRINT (F (" Ambient Temperature: " ));
272
- WS_DEBUG_PRINT (_deviceTemp, 4 );
273
- WS_DEBUG_PRINTLN (F (" °C" ));
274
-
275
- // Read object temperature
276
277
_objectTemp = _mlx90632->getObjectTemperature ();
277
- WS_DEBUG_PRINT (F (" Object Temperature: " ));
278
278
if (isnan (_objectTemp)) {
279
279
WS_DEBUG_PRINTLN (F (" NaN (invalid cycle position)" ));
280
- } else {
281
- WS_DEBUG_PRINT (_objectTemp, 4 );
282
- WS_DEBUG_PRINTLN (F (" °C" ));
280
+ return false ;
283
281
}
284
282
result = true ;
285
283
_lastRead = millis ();
@@ -291,15 +289,7 @@ class WipperSnapper_I2C_Driver_MLX90632D : public WipperSnapper_I2C_Driver {
291
289
WS_DEBUG_PRINTLN (F (" No new data available, skipping read" ));
292
290
}
293
291
294
- // Check if we need to trigger a new measurement for step modes
295
- mlx90632_mode_t currentMode = _mlx90632->getMode ();
296
- if (currentMode == MLX90632_MODE_STEP ||
297
- currentMode == MLX90632_MODE_SLEEPING_STEP) {
298
- // Trigger single measurement (SOC bit) for step modes
299
- if (!_mlx90632->startSingleMeasurement ()) {
300
- WS_DEBUG_PRINTLN (F (" Failed to start single measurement" ));
301
- }
302
- }
292
+
303
293
return result;
304
294
}
305
295
@@ -314,12 +304,6 @@ class WipperSnapper_I2C_Driver_MLX90632D : public WipperSnapper_I2C_Driver {
314
304
/* ******************************************************************************/
315
305
bool getEventAmbientTemp (sensors_event_t *tempEvent) {
316
306
if (ReadSensorData () && _deviceTemp != NAN) {
317
- // TODO: check max/min or error values in datasheet
318
- // if (_deviceTemp < -40 || _deviceTemp > 125) {
319
- // WS_DEBUG_PRINTLN(F("Invalid ambient temperature"));
320
- // return false;
321
- // }
322
- // if the sensor was read recently, return the cached temperature
323
307
tempEvent->temperature = _deviceTemp;
324
308
return true ;
325
309
}
@@ -337,7 +321,6 @@ class WipperSnapper_I2C_Driver_MLX90632D : public WipperSnapper_I2C_Driver {
337
321
/* ******************************************************************************/
338
322
bool getEventObjectTemp (sensors_event_t *tempEvent) {
339
323
if (ReadSensorData () && _objectTemp != NAN) {
340
- // if the sensor was read recently, return the cached temperature
341
324
tempEvent->temperature = _objectTemp;
342
325
return true ;
343
326
}
0 commit comments