Skip to content

Position

Tiogaplanet edited this page Oct 26, 2018 · 3 revisions

readPosition()

MiPPosition readPosition()

Description

Read MiP's current position.

Parameters

None

Returns

One of the values from the following table:

MiPPosition Value
MIP_POSITION_ON_BACK
MIP_POSITION_FACE_DOWN
MIP_POSITION_UPRIGHT
MIP_POSITION_PICKED_UP
MIP_POSITION_HAND_STAND
MIP_POSITION_FACE_DOWN_ON_TRAY
MIP_POSITION_ON_BACK_WITH_KICKSTAND

Notes

  • These status updates are usually sent every 30 seconds or earlier if MiP detects a change in position.

Example

#include <mip_esp8266.h>

MiP     mip;

void setup() {
  bool connectResult = mip.begin();
  if (!connectResult) {
    Serial.println(F("Failed connecting to MiP!"));
    return;
  }

  Serial.println(F("Status.ino - Display MiP's status as it changes."));
}

void loop() {
  static float       lastBatteryLevel = 0.0f;
  static MiPPosition lastPosition = (MiPPosition) - 1;

  float              currentBatteryLevel = mip.readBatteryVoltage();
  MiPPosition        currentPosition = mip.readPosition();

  if (currentBatteryLevel != lastBatteryLevel) {
    Serial.print(F("Battery: "));
      Serial.print(currentBatteryLevel);
      Serial.println(F("V"));
    lastBatteryLevel = currentBatteryLevel;
  }

  if (currentPosition != lastPosition) {
    if (mip.isOnBack()) {
      Serial.println(F("Position: On Back"));
    }
    if (mip.isFaceDown()) {
      Serial.println(F("Position: Face Down"));
    }
    if (mip.isUpright()) {
      Serial.println(F("Position: Upright"));
    }
    if (mip.isPickedUp()) {
      Serial.println(F("Position: Picked Up"));
    }
    if (mip.isHandStanding()) {
      Serial.println(F("Position: Hand Stand"));
    }
    if (mip.isFaceDownOnTray()) {
      Serial.println(F("Position: Face Down on Tray"));
    }
    if (mip.isOnBackWithKickstand()) {
      Serial.println(F("Position: On Back With Kickstand"));
    }

    lastPosition = currentPosition;
  }
}

isOnBack()

bool isOnBack()

Description

Is MiP currently lying on its back?

Parameters

None

Returns

  • true if MiP is currently lying on its back.
  • false otherwise.

Notes

  • These status updates are usually sent every 30 seconds or earlier if MiP detects a change in position.

Example

#include <mip_esp8266.h>

MiP     mip;

void setup() {
  bool connectResult = mip.begin();
  if (!connectResult) {
    Serial.println(F("Failed connecting to MiP!"));
    return;
  }

  Serial.println(F("Status.ino - Display MiP status as it changes."));
}

void loop() {
  static float       lastBatteryLevel = 0.0f;
  static MiPPosition lastPosition = (MiPPosition) - 1;

  float              currentBatteryLevel = mip.readBatteryVoltage();
  MiPPosition        currentPosition = mip.readPosition();

  if (currentBatteryLevel != lastBatteryLevel) {
    Serial.print(F("Battery: "));
      Serial.print(currentBatteryLevel);
      Serial.println(F("V"));
    lastBatteryLevel = currentBatteryLevel;
  }

  if (currentPosition != lastPosition) {
    if (mip.isOnBack()) {
      Serial.println(F("Position: On Back"));
    }
    if (mip.isFaceDown()) {
      Serial.println(F("Position: Face Down"));
    }
    if (mip.isUpright()) {
      Serial.println(F("Position: Upright"));
    }
    if (mip.isPickedUp()) {
      Serial.println(F("Position: Picked Up"));
    }
    if (mip.isHandStanding()) {
      Serial.println(F("Position: Hand Stand"));
    }
    if (mip.isFaceDownOnTray()) {
      Serial.println(F("Position: Face Down on Tray"));
    }
    if (mip.isOnBackWithKickstand()) {
      Serial.println(F("Position: On Back With Kickstand"));
    }

    lastPosition = currentPosition;
  }
}

isFaceDown()

bool isFaceDown()

Description

Is MiP currently lying on its front?

Parameters

None

Returns

  • true if MiP is currently lying on its front.
  • false otherwise.

Notes

  • These status updates are usually sent every 30 seconds or earlier if MiP detects a change in position.

Example

#include <mip_esp8266.h>

MiP     mip;

void setup() {
  bool connectResult = mip.begin();
  if (!connectResult) {
    Serial.println(F("Failed connecting to MiP!"));
    return;
  }

  Serial.println(F("Status.ino - Display MiP status as it changes."));
}

void loop() {
  static float       lastBatteryLevel = 0.0f;
  static MiPPosition lastPosition = (MiPPosition) - 1;

  float              currentBatteryLevel = mip.readBatteryVoltage();
  MiPPosition        currentPosition = mip.readPosition();

  if (currentBatteryLevel != lastBatteryLevel) {
    Serial.print(F("Battery: "));
      Serial.print(currentBatteryLevel);
      Serial.println(F("V"));
    lastBatteryLevel = currentBatteryLevel;
  }

  if (currentPosition != lastPosition) {
    if (mip.isOnBack()) {
      Serial.println(F("Position: On Back"));
    }
    if (mip.isFaceDown()) {
      Serial.println(F("Position: Face Down"));
    }
    if (mip.isUpright()) {
      Serial.println(F("Position: Upright"));
    }
    if (mip.isPickedUp()) {
      Serial.println(F("Position: Picked Up"));
    }
    if (mip.isHandStanding()) {
      Serial.println(F("Position: Hand Stand"));
    }
    if (mip.isFaceDownOnTray()) {
      Serial.println(F("Position: Face Down on Tray"));
    }
    if (mip.isOnBackWithKickstand()) {
      Serial.println(F("Position: On Back With Kickstand"));
    }

    lastPosition = currentPosition;
  }
}

isUpright()

bool isUpright()

Description

Is MiP currently standing upright and self-balancing?

Parameters

None

Returns

  • true if MiP is currently standing up right and self-balancing.
  • false otherwise.

Notes

  • These status updates are usually sent every 30 seconds or earlier if MiP detects a change in position.

Example

#include <mip_esp8266.h>

MiP     mip;

void setup() {
  bool connectResult = mip.begin();
  if (!connectResult) {
    Serial.println(F("Failed connecting to MiP!"));
    return;
  }

  Serial.println(F("Status.ino - Display MiP status as it changes."));
}

void loop() {
  static float       lastBatteryLevel = 0.0f;
  static MiPPosition lastPosition = (MiPPosition) - 1;

  float              currentBatteryLevel = mip.readBatteryVoltage();
  MiPPosition        currentPosition = mip.readPosition();

  if (currentBatteryLevel != lastBatteryLevel) {
    Serial.print(F("Battery: "));
      Serial.print(currentBatteryLevel);
      Serial.println(F("V"));
    lastBatteryLevel = currentBatteryLevel;
  }

  if (currentPosition != lastPosition) {
    if (mip.isOnBack()) {
      Serial.println(F("Position: On Back"));
    }
    if (mip.isFaceDown()) {
      Serial.println(F("Position: Face Down"));
    }
    if (mip.isUpright()) {
      Serial.println(F("Position: Upright"));
    }
    if (mip.isPickedUp()) {
      Serial.println(F("Position: Picked Up"));
    }
    if (mip.isHandStanding()) {
      Serial.println(F("Position: Hand Stand"));
    }
    if (mip.isFaceDownOnTray()) {
      Serial.println(F("Position: Face Down on Tray"));
    }
    if (mip.isOnBackWithKickstand()) {
      Serial.println(F("Position: On Back With Kickstand"));
    }

    lastPosition = currentPosition;
  }
}

isPickedUp()

bool isPickedUp()

Description

Has the user picked up MiP?

Parameters

None

Returns

  • true if MiP has been picked up by the user.
  • false otherwise.

Notes

  • These status updates are usually sent every 30 seconds or earlier if MiP detects a change in position.

Example

#include <mip_esp8266.h>

MiP     mip;

void setup() {
  bool connectResult = mip.begin();
  if (!connectResult) {
    Serial.println(F("Failed connecting to MiP!"));
    return;
  }

  Serial.println(F("Status.ino - Display MiP status as it changes."));
}

void loop() {
  static float       lastBatteryLevel = 0.0f;
  static MiPPosition lastPosition = (MiPPosition) - 1;

  float              currentBatteryLevel = mip.readBatteryVoltage();
  MiPPosition        currentPosition = mip.readPosition();

  if (currentBatteryLevel != lastBatteryLevel) {
    Serial.print(F("Battery: "));
      Serial.print(currentBatteryLevel);
      Serial.println(F("V"));
    lastBatteryLevel = currentBatteryLevel;
  }

  if (currentPosition != lastPosition) {
    if (mip.isOnBack()) {
      Serial.println(F("Position: On Back"));
    }
    if (mip.isFaceDown()) {
      Serial.println(F("Position: Face Down"));
    }
    if (mip.isUpright()) {
      Serial.println(F("Position: Upright"));
    }
    if (mip.isPickedUp()) {
      Serial.println(F("Position: Picked Up"));
    }
    if (mip.isHandStanding()) {
      Serial.println(F("Position: Hand Stand"));
    }
    if (mip.isFaceDownOnTray()) {
      Serial.println(F("Position: Face Down on Tray"));
    }
    if (mip.isOnBackWithKickstand()) {
      Serial.println(F("Position: On Back With Kickstand"));
    }

    lastPosition = currentPosition;
  }
}

isHandStanding()

bool isHandStanding()

Description

Is MiP currently in a hand stand pose?

Parameters

None

Returns

  • true if MiP is currently in a hand stand pose.
  • false otherwise.

Notes

  • These status updates are usually sent every 30 seconds or earlier if MiP detects a change in position.

Example

#include <mip_esp8266.h>

MiP     mip;

void setup() {
  bool connectResult = mip.begin();
  if (!connectResult) {
    Serial.println(F("Failed connecting to MiP!"));
    return;
  }

  Serial.println(F("Status.ino - Display MiP status as it changes."));
}

void loop() {
  static float       lastBatteryLevel = 0.0f;
  static MiPPosition lastPosition = (MiPPosition) - 1;

  float              currentBatteryLevel = mip.readBatteryVoltage();
  MiPPosition        currentPosition = mip.readPosition();

  if (currentBatteryLevel != lastBatteryLevel) {
    Serial.print(F("Battery: "));
      Serial.print(currentBatteryLevel);
      Serial.println(F("V"));
    lastBatteryLevel = currentBatteryLevel;
  }

  if (currentPosition != lastPosition) {
    if (mip.isOnBack()) {
      Serial.println(F("Position: On Back"));
    }
    if (mip.isFaceDown()) {
      Serial.println(F("Position: Face Down"));
    }
    if (mip.isUpright()) {
      Serial.println(F("Position: Upright"));
    }
    if (mip.isPickedUp()) {
      Serial.println(F("Position: Picked Up"));
    }
    if (mip.isHandStanding()) {
      Serial.println(F("Position: Hand Stand"));
    }
    if (mip.isFaceDownOnTray()) {
      Serial.println(F("Position: Face Down on Tray"));
    }
    if (mip.isOnBackWithKickstand()) {
      Serial.println(F("Position: On Back With Kickstand"));
    }

    lastPosition = currentPosition;
  }
}

isFaceDownOnTray()

bool isFaceDownOnTray()

Description

Is MiP currently face down on the tray?

Parameters

None

Returns

  • true if MiP is currently face down on the tray.
  • false otherwise.

Notes

  • These status updates are usually sent every 30 seconds or earlier if MiP detects a change in position.

Example

#include <mip_esp8266.h>

MiP     mip;

void setup() {
  bool connectResult = mip.begin();
  if (!connectResult) {
    Serial.println(F("Failed connecting to MiP!"));
    return;
  }

  Serial.println(F("Status.ino - Display MiP status as it changes."));
}

void loop() {
  static float       lastBatteryLevel = 0.0f;
  static MiPPosition lastPosition = (MiPPosition) - 1;

  float              currentBatteryLevel = mip.readBatteryVoltage();
  MiPPosition        currentPosition = mip.readPosition();

  if (currentBatteryLevel != lastBatteryLevel) {
    Serial.print(F("Battery: "));
      Serial.print(currentBatteryLevel);
      Serial.println(F("V"));
    lastBatteryLevel = currentBatteryLevel;
  }

  if (currentPosition != lastPosition) {
    if (mip.isOnBack()) {
      Serial.println(F("Position: On Back"));
    }
    if (mip.isFaceDown()) {
      Serial.println(F("Position: Face Down"));
    }
    if (mip.isUpright()) {
      Serial.println(F("Position: Upright"));
    }
    if (mip.isPickedUp()) {
      Serial.println(F("Position: Picked Up"));
    }
    if (mip.isHandStanding()) {
      Serial.println(F("Position: Hand Stand"));
    }
    if (mip.isFaceDownOnTray()) {
      Serial.println(F("Position: Face Down on Tray"));
    }
    if (mip.isOnBackWithKickstand()) {
      Serial.println(F("Position: On Back With Kickstand"));
    }

    lastPosition = currentPosition;
  }
}

isOnBackWithKickstand()

bool isOnBackWithKickstand()

Description

Is MiP currently laying back on its kickstand?

Parameters

None

Returns

  • true if MiP is currently laying back on its kickstand.
  • false otherwise.

Notes

  • These status updates are usually sent every 30 seconds or earlier if MiP detects a change in position.

Example

#include <mip_esp8266.h>

MiP     mip;

void setup() {
  bool connectResult = mip.begin();
  if (!connectResult) {
    Serial.println(F("Failed connecting to MiP!"));
    return;
  }

  Serial.println(F("Status.ino - Display MiP status as it changes."));
}

void loop() {
  static float       lastBatteryLevel = 0.0f;
  static MiPPosition lastPosition = (MiPPosition) - 1;

  float              currentBatteryLevel = mip.readBatteryVoltage();
  MiPPosition        currentPosition = mip.readPosition();

  if (currentBatteryLevel != lastBatteryLevel) {
    Serial.print(F("Battery: "));
      Serial.print(currentBatteryLevel);
      Serial.println(F("V"));
    lastBatteryLevel = currentBatteryLevel;
  }

  if (currentPosition != lastPosition) {
    if (mip.isOnBack()) {
      Serial.println(F("Position: On Back"));
    }
    if (mip.isFaceDown()) {
      Serial.println(F("Position: Face Down"));
    }
    if (mip.isUpright()) {
      Serial.println(F("Position: Upright"));
    }
    if (mip.isPickedUp()) {
      Serial.println(F("Position: Picked Up"));
    }
    if (mip.isHandStanding()) {
      Serial.println(F("Position: Hand Stand"));
    }
    if (mip.isFaceDownOnTray()) {
      Serial.println(F("Position: Face Down on Tray"));
    }
    if (mip.isOnBackWithKickstand()) {
      Serial.println(F("Position: On Back With Kickstand"));
    }

    lastPosition = currentPosition;
  }
}