@Override
    public void loop() throws ConnectionLostException {
      try {

        float raw = mTempInput.read();

        float R = 10000 / raw - 10000; // R1 = (R2*Vi/Vo) - R2; Voltage Divider

        float steinhart;
        steinhart = R / Ro; // (R/Ro)
        steinhart = (float) Math.log(steinhart); // ln(R/Ro)
        steinhart /= B; // 1/B * ln(R/Ro)
        steinhart += 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1/ To)
        steinhart = (float) (1.0 / steinhart); // Invert
        steinhart -= 273.15; // convert to Cº | celsius = kelvin - 273.15

        String tempString = String.format("%.2f", steinhart) + "ºC";

        setText(tempString);

        Thread.sleep(1000);

      } catch (InterruptedException e) {
        ioio_.disconnect();
        setText(e.getMessage());
      } catch (ConnectionLostException e) {
        setText(e.getMessage());
        throw e;
      }
    }
  public static void searchVictims(MapController robot, BaseRescueBLooper ioio) {
    hasVictimLeft = false;
    hasVictimRight = false;
    hasVictimFront = false;
    hasVictimBack = false;
    lastIoio = ioio;
    try {
      Thread.sleep(40);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
    hasVictimLeft |= lastIoio.temp1.victimExist();
    hasVictimRight |= lastIoio.temp2.victimExist();
    hasVictimFront |= lastIoio.temp3.victimExist();
    hasVictimBack |= lastIoio.temp4.victimExist();

    boolean hasVictim = false;

    if (hasVictimLeft) {
      if (robot.getRelativeWall(Heading.West).exist()) {
        hasVictim = true;
      }
    }
    if (hasVictimRight) {
      if (robot.getRelativeWall(Heading.East).exist()) {
        hasVictim = true;
      }
    }
    if (hasVictimFront) {
      if (robot.getRelativeWall(Heading.North).exist()) {
        hasVictim = true;
      }
    }
    if (hasVictimBack) {
      if (robot.getRelativeWall(Heading.South).exist()) {
        hasVictim = true;
      }
    }
    if (hasVictim && !robot.getThisCell().hasVictim) {
      robot.getThisCell().hasVictim = true;
      for (int i = 0; i < 7; i++) {
        try {
          ioio.oLedVictim.write((i % 2) == 0);
          Thread.sleep(200);
        } catch (ConnectionLostException e) {
          e.printStackTrace();
        } catch (InterruptedException e) {
          e.printStackTrace();
        }
      }
    }
  }
  public static void updateMapController(MapController robot, BaseRescueBLooper ioio) {
    RobotHead head = ioio.Head;

    hasVictimRight = false;
    hasVictimLeft = false;
    hasVictimFront = false;
    hasVictimBack = false;
    lastIoio = ioio;

    double reads[][] =
        head.performReads(
            new int[] {angle1 * -1, angle2 * -1, 0, angle2, angle1},
            50,
            new Runnable() {
              int pos = 0;

              public void run() {
                if (pos == 2) {
                  try {
                    Thread.sleep(60);
                  } catch (InterruptedException e) {
                    e.printStackTrace();
                  }
                  hasVictimLeft |= lastIoio.temp1.victimExist();
                  hasVictimRight |= lastIoio.temp2.victimExist();
                  hasVictimFront |= lastIoio.temp3.victimExist();
                  hasVictimBack |= lastIoio.temp4.victimExist();
                  // hasVictim |= lastIoio.temp3.victimExist();
                }
                pos++;
              }
            });
    double read[] = reads[2];

    Wall w = robot.getRelativeWall(Heading.North);
    w.updateWall((Util.range(wallMinFirst, wallMaxFirst, read[0]) ? prob_dist1 : 1 - prob_dist1));
    if (!w.exist()) {
      w = robot.getRelativeWall(0, 1, Heading.North);
      w.updateWall(
          (Util.range(wallMinSecond, wallMaxSecond, read[0]) ? prob_dist2 : 1 - prob_dist2));

      w = robot.getRelativeWall(0, 1, Heading.West);
      w.updateWall(
          (Util.range(wallMinThird, wallMaxThird, reads[1][0]) ? prob_dist3 : 1 - prob_dist3));

      if (!w.exist()) {
        w = robot.getRelativeWall(-1, 1, Heading.North);
        w.updateWall(
            (Util.range(wallMinFour, wallMaxFour, reads[0][0]) ? prob_dist4 : 1 - prob_dist4));
      }

      w = robot.getRelativeWall(0, 1, Heading.East);
      w.updateWall(
          (Util.range(wallMinThird, wallMaxThird, reads[3][0]) ? prob_dist3 : 1 - prob_dist3));

      if (!w.exist()) {
        w = robot.getRelativeWall(1, 1, Heading.North);
        w.updateWall(
            (Util.range(wallMinFour, wallMaxFour, reads[4][0]) ? prob_dist4 : 1 - prob_dist4));
      }
    }

    w = robot.getRelativeWall(Heading.East);
    w.updateWall((Util.range(wallMinFirst, wallMaxFirst, read[1]) ? prob_dist1 : 1 - prob_dist1));
    if (!w.exist()) {
      w = robot.getRelativeWall(1, 0, Heading.East);
      w.updateWall(
          (Util.range(wallMinSecond, wallMaxSecond, read[1]) ? prob_dist2 : 1 - prob_dist2));

      w = robot.getRelativeWall(1, 0, Heading.North);
      w.updateWall(
          (Util.range(wallMinThird, wallMaxThird, reads[1][1]) ? prob_dist3 : 1 - prob_dist3));

      if (!w.exist()) {
        w = robot.getRelativeWall(1, 1, Heading.East);
        w.updateWall(
            (Util.range(wallMinFour, wallMaxFour, reads[0][1]) ? prob_dist4 : 1 - prob_dist4));
      }

      w = robot.getRelativeWall(1, 0, Heading.South);
      w.updateWall(
          (Util.range(wallMinThird, wallMaxThird, reads[3][1]) ? prob_dist3 : 1 - prob_dist3));

      if (!w.exist()) {
        w = robot.getRelativeWall(1, -1, Heading.East);
        w.updateWall(
            (Util.range(wallMinFour, wallMaxFour, reads[4][1]) ? prob_dist4 : 1 - prob_dist4));
      }
    }

    w = robot.getRelativeWall(Heading.South);
    w.updateWall((Util.range(wallMinFirst, wallMaxFirst, read[2]) ? prob_dist1 : 1 - prob_dist1));

    if (!w.exist()) {
      w = robot.getRelativeWall(0, -1, Heading.South);
      w.updateWall(
          (Util.range(wallMinSecond, wallMaxSecond, read[2]) ? prob_dist2 : 1 - prob_dist2));

      w = robot.getRelativeWall(0, -1, Heading.East);
      w.updateWall(
          (Util.range(wallMinThird, wallMaxThird, reads[1][2]) ? prob_dist3 : 1 - prob_dist3));

      if (!w.exist()) {
        w = robot.getRelativeWall(1, -1, Heading.South);
        w.updateWall(
            (Util.range(wallMinFour, wallMaxFour, reads[0][2]) ? prob_dist4 : 1 - prob_dist4));
      }

      w = robot.getRelativeWall(0, -1, Heading.West);
      w.updateWall(
          (Util.range(wallMinThird, wallMaxThird, reads[3][2]) ? prob_dist3 : 1 - prob_dist3));

      if (!w.exist()) {
        w = robot.getRelativeWall(-1, -1, Heading.South);
        w.updateWall(
            (Util.range(wallMinFour, wallMaxFour, reads[4][2]) ? prob_dist4 : 1 - prob_dist4));
      }
    }

    w = robot.getRelativeWall(Heading.West);
    w.updateWall((Util.range(wallMinFirst, wallMaxFirst, read[3]) ? prob_dist1 : 1 - prob_dist1));
    if (!w.exist()) {
      w = robot.getRelativeWall(-1, 0, Heading.West);
      w.updateWall(
          (Util.range(wallMinSecond, wallMaxSecond, read[3]) ? prob_dist2 : 1 - prob_dist2));

      w = robot.getRelativeWall(-1, 0, Heading.South);
      w.updateWall(
          (Util.range(wallMinThird, wallMaxThird, reads[1][3]) ? prob_dist3 : 1 - prob_dist3));

      if (!w.exist()) {
        w = robot.getRelativeWall(-1, -1, Heading.West);
        w.updateWall(
            (Util.range(wallMinFour, wallMaxFour, reads[0][3]) ? prob_dist4 : 1 - prob_dist4));
      }

      w = robot.getRelativeWall(-1, 0, Heading.North);
      w.updateWall(
          (Util.range(wallMinThird, wallMaxThird, reads[3][3]) ? prob_dist3 : 1 - prob_dist3));

      if (!w.exist()) {
        w = robot.getRelativeWall(-1, 1, Heading.West);
        w.updateWall(
            (Util.range(wallMinFour, wallMaxFour, reads[4][3]) ? prob_dist4 : 1 - prob_dist4));
      }
    }
    boolean hasVictim = false;

    if (hasVictimLeft) {
      if (robot.getRelativeWall(Heading.West).exist()) {
        hasVictim = true;
      }
    }
    if (hasVictimRight) {
      if (robot.getRelativeWall(Heading.East).exist()) {
        hasVictim = true;
      }
    }
    if (hasVictimFront) {
      if (robot.getRelativeWall(Heading.North).exist()) {
        hasVictim = true;
      }
    }
    if (hasVictimBack) {
      if (robot.getRelativeWall(Heading.South).exist()) {
        hasVictim = true;
      }
    }
    if (hasVictim && !robot.getThisCell().hasVictim) {
      robot.getThisCell().hasVictim = true;
      for (int i = 0; i < 7; i++) {
        try {
          ioio.oLedVictim.write((i % 2) == 0);
          Thread.sleep(200);
        } catch (ConnectionLostException e) {
          e.printStackTrace();
        } catch (InterruptedException e) {
          e.printStackTrace();
        }
      }
    }
  }