-
Notifications
You must be signed in to change notification settings - Fork 0
Radar
Tiogaplanet edited this page Jul 15, 2026
·
4 revisions
Use these functions to employ MiP's radar.
- enableRadarMode()
- disableRadarMode()
- isRadarModeEnabled()
- areGestureAndRadarModesDisabled()
- readRadar()
void enableRadarMode()
Switches MiP's head mounted IR sensors into radar mode. Once this mode is enabled, your code can call readRadar() to read the radar measurements.
None
Nothing
- When enableRadarMode() is called, gesture mode will be disabled. If you later enable gesture mode, radar mode will be disabled.
#include <MPU_D1_mini.h>
MiP mip;
void setup() {
bool connectResult = mip.begin();
if (!connectResult) {
Serial1.println(F("Failed connecting to MiP!"));
return;
}
Serial1.println(F("Radar.ino: Display current radar readings to user."));
Serial1.println(F("Waiting for MiP to be standing upright."));
while (!mip.isUpright()) {
// Waiting
}
mip.enableRadarMode();
}
void loop() {
static MiPRadar lastRadar = MIP_RADAR_INVALID;
MiPRadar currentRadar = mip.readRadar();
if (currentRadar != MIP_RADAR_INVALID && lastRadar != currentRadar) {
Serial1.print(F("Radar = "));
switch (currentRadar) {
case MIP_RADAR_NONE:
Serial1.println(F("None"));
break;
case MIP_RADAR_10CM_30CM:
Serial1.println(F("10cm - 30cm"));
break;
case MIP_RADAR_0CM_10CM:
Serial1.println(F("0cm - 10cm"));
break;
default:
break;
}
lastRadar = currentRadar;
}
}void disableRadarMode()
Switches MiP's head-mounted IR sensors out of radar mode.
None
Nothing
- Calling disableRadarMode() actually disables all IR sensing, so it will also shut down gesture mode as well.
#include <MPU_D1_mini.h>
MiP mip;
void setup() {
bool connectResult = mip.begin();
if (!connectResult) {
Serial1.println(F("Failed connecting to MiP!"));
return;
}
Serial1.println(F("GestureRadarMode.ino: Switches between gesture, radar, and default modes."));
Serial1.println(F("Calling mip.enableRadarMode()"));
mip.enableRadarMode();
Serial1.print(F("mip.isRadarModeEnabled() = "));
if (mip.isRadarModeEnabled()) {
Serial1.println(F("true - Pass"));
} else {
Serial1.println(F("false - Failed"));
}
Serial1.println(F("Calling mip.disableRadarMode()"));
mip.disableRadarMode();
Serial1.print(F("mip.isRadarModeEnabled() = "));
if (mip.isRadarModeEnabled()) {
Serial1.println(F("true - Failed"));
} else {
Serial1.println(F("false - Pass"));
}
Serial1.println(F("Calling mip.enableGestureMode()"));
mip.enableGestureMode();
Serial1.print(F("mip.isGestureModeEnabled() = "));
if (mip.isGestureModeEnabled()) {
Serial1.println(F("true - Pass"));
} else {
Serial1.println(F("false - Failed"));
}
Serial1.println(F("Calling mip.disableGestureMode()"));
mip.disableGestureMode();
Serial1.print(F("mip.isGestureModeEnabled() = "));
if (mip.isGestureModeEnabled()) {
Serial1.println(F("true - Failed"));
} else {
Serial1.println(F("false - Pass"));
}
Serial1.print(F("mip.areGestureAndRadarModesDisabled() = "));
if (mip.areGestureAndRadarModesDisabled()) {
Serial1.println(F("true - Pass"));
} else {
Serial1.println(F("false - Failed"));
}
Serial1.println();
Serial1.println(F("Sample done."));
}
void loop() {
}bool isRadarModeEnabled()
Returns whether MiP's head-mounted IR sensors are in radar mode.
None
- true if MiP was successfully placed in radar mode with a previous call to enableRadarMode().
- false if it is not in radar mode.
#include <MPU_D1_mini.h>
MiP mip;
void setup() {
bool connectResult = mip.begin();
if (!connectResult) {
Serial1.println(F("Failed connecting to MiP!"));
return;
}
Serial1.println(F("GestureRadarMode.ino: Switches between gesture, radar, and default modes."));
Serial1.println(F("Calling mip.enableRadarMode()"));
mip.enableRadarMode();
Serial1.print(F("mip.isRadarModeEnabled() = "));
if (mip.isRadarModeEnabled()) {
Serial1.println(F("true - Pass"));
} else {
Serial1.println(F("false - Failed"));
}
Serial1.println(F("Calling mip.disableRadarMode()"));
mip.disableRadarMode();
Serial1.print(F("mip.isRadarModeEnabled() = "));
if (mip.isRadarModeEnabled()) {
Serial1.println(F("true - Failed"));
} else {
Serial1.println(F("false - Pass"));
}
Serial1.println(F("Calling mip.enableGestureMode()"));
mip.enableGestureMode();
Serial1.print(F("mip.isGestureModeEnabled() = "));
if (mip.isGestureModeEnabled()) {
Serial1.println(F("true - Pass"));
} else {
Serial1.println(F("false - Failed"));
}
Serial1.println(F("Calling mip.disableGestureMode()"));
mip.disableGestureMode();
Serial1.print(F("mip.isGestureModeEnabled() = "));
if (mip.isGestureModeEnabled()) {
Serial1.println(F("true - Failed"));
} else {
Serial1.println(F("false - Pass"));
}
Serial1.print(F("mip.areGestureAndRadarModesDisabled() = "));
if (mip.areGestureAndRadarModesDisabled()) {
Serial1.println(F("true - Pass"));
} else {
Serial1.println(F("false - Failed"));
}
Serial1.println();
Serial1.println(F("Sample done."));
}
void loop() {
}bool areGestureAndRadarModesDisabled()
Returns whether MiP's head-mounted IR sensors are inactive, not performing radar measurements, or gesture detection.
None
- true if MiP is not in gesture detection or radar measurement mode.
- false if MiP is in gesture detection or radar measurement mode.
#include <MPU_D1_mini.h>
MiP mip;
void setup() {
bool connectResult = mip.begin();
if (!connectResult) {
Serial1.println(F("Failed connecting to MiP!"));
return;
}
Serial1.println(F("GestureRadarMode.ino: Switches between gesture, radar, and default modes."));
Serial1.println(F("Calling mip.enableRadarMode()"));
mip.enableRadarMode();
Serial1.print(F("mip.isRadarModeEnabled() = "));
if (mip.isRadarModeEnabled()) {
Serial1.println(F("true - Pass"));
} else {
Serial1.println(F("false - Failed"));
}
Serial1.println(F("Calling mip.disableRadarMode()"));
mip.disableRadarMode();
Serial1.print(F("mip.isRadarModeEnabled() = "));
if (mip.isRadarModeEnabled()) {
Serial1.println(F("true - Failed"));
} else {
Serial1.println(F("false - Pass"));
}
Serial1.println(F("Calling mip.enableGestureMode()"));
mip.enableGestureMode();
Serial1.print(F("mip.isGestureModeEnabled() = "));
if (mip.isGestureModeEnabled()) {
Serial1.println(F("true - Pass"));
} else {
Serial1.println(F("false - Failed"));
}
Serial1.println(F("Calling mip.disableGestureMode()"));
mip.disableGestureMode();
Serial1.print(F("mip.isGestureModeEnabled() = "));
if (mip.isGestureModeEnabled()) {
Serial1.println(F("true - Failed"));
} else {
Serial1.println(F("false - Pass"));
}
Serial1.print(F("mip.areGestureAndRadarModesDisabled() = "));
if (mip.areGestureAndRadarModesDisabled()) {
Serial1.println(F("true - Pass"));
} else {
Serial1.println(F("false - Failed"));
}
Serial1.println();
Serial1.println(F("Sample done."));
}
void loop() {
}MiPRadar readRadar()
Reads the current radar measurement from MiP's head-mounted IR sensors. MiP must already be in radar mode via a call to enableRadarMode().
None
- MIP_RADAR_NONE if no object has been detected in front of MiP's head.
- MIP_RADAR_10CM_30CM if an object has been detected between 10cm and 30cm in front of MiP's head.
- MIP_RADAR_0CM_10CM if an object has been detected at less than 10cm in front of MiP's head.
-
MIP_RADAR_INVALID if MiP hasn't sent back a radar measurement. This could happen for a few reasons:
- You just called enableRadarMode() and MiP hasn't had a chance to make its first reading yet.
- MiP isn't currently in radar mode. Call enableRadarMode() to tell it to start taking these measurements.
- You are spending so much time sending output back to a serial monitor that MiP's radar measurements are getting dropped. See Limitations section above.
- These radar measurements will be suppressed while MiP is executing long-running commands. Shorter commands, such as mipContinuousDrive(), allow MiP to make measurements.
- These radar measurements will only be sent when MiP is actively balancing. They will be suppressed, for example, if MiP is lying back on its kickstand.
#include <MPU_D1_mini.h>
MiP mip;
void setup() {
bool connectResult = mip.begin();
if (!connectResult) {
Serial1.println(F("Failed connecting to MiP!"));
return;
}
Serial1.println(F("Radar.ino: Display current radar readings to user."));
Serial1.println(F("Waiting for robot to be standing upright."));
while (!mip.isUpright()) {
// Waiting
}
mip.enableRadarMode();
}
void loop() {
static MiPRadar lastRadar = MIP_RADAR_INVALID;
MiPRadar currentRadar = mip.readRadar();
if (currentRadar != MIP_RADAR_INVALID && lastRadar != currentRadar) {
Serial1.print(F("Radar = "));
switch (currentRadar) {
case MIP_RADAR_NONE:
Serial1.println(F("None"));
break;
case MIP_RADAR_10CM_30CM:
Serial1.println(F("10cm - 30cm"));
break;
case MIP_RADAR_0CM_10CM:
Serial1.println(F("0cm - 10cm"));
break;
default:
break;
}
lastRadar = currentRadar;
}
}- MiP
- MiPChestLED
- MiPClapSettings
- MiPDebug
- MiPHardwareInfo
- MiPHeadLEDs
- MiPIRDongleCode
- MiPSoftwareVersion
- MiPStatus
- MiP_Battery
- MiP_ChestLED
- MiP_Clap
- MiP_EEPROM
- MiP_Gesture
- MiP_HeadLEDs
- MiP_Infrared
- MiP_Mode
- MiP_Motion
- MiP_Odometer
- MiP_Position
- MiP_Radar
- MiP_Serial
- MiP_Shake
- MiP_Sound
- MiP_Version
- MiP_Weight
- MiP_WiFi