[FTC]: IR Beacon Problem

Hello,

We are currently having trouble with our HiTechnic IR Beacon. Our program, adapted from an FTC document, detects the direction and signal strength of the beacon. The direction has a range of 1-9, with range 0 if the beacon is not found. The strength is between 0-255. When we tested the program before, everything went fine. Yesterday though, one of our team members dropped the beacon. Today when we tested it, the reading fluctuated. The direction would be at 7, then 0, then 7, then 0… the signal strength would fluctuate from 0-255. We believe this because the beacon is not emitting the IR signal constantly, but in 1 second bursts.

A video of this is posted below; code is as follows:

#pragma config(Sensor, S1,     HTIRS2,              sensorI2CCustom)

// RoboSeek.c - This program uses the HiTechnic IR Seeker V2
// sensor to follow an IR source.  This program requires the
// HTIRS2-driver.h driver provided with RobotC.
//

// You can copy the "drivers" subdirectory and place it
// in the same directory as this source file. if you do,
// you can use the following #include statement to specify
// the path to the driver.
//#include "drivers/HTIRS2-driver.h"

// if you use the "drivers/HTIRS2-driver.h" line,
// then you should comment out the following line.
#include "hitechnic-irseeker-v2.h"

// main task
task main ()
{
  int _dirAC = 0;
	int acS1, acS2, acS3, acS4, acS5 = 0;

	int maxSig = 0;    // the max signal strength from the seeker.
	int val = 0;       // the translated directional value.

	// we are going to set DSP mode to 1200 Hz.
  tHTIRS2DSPMode _mode = DSP_1200;

  // attempt to set to DSP mode.
  if (HTIRS2setDSPMode(HTIRS2, _mode) == 0)
  {
    // unsuccessful at setting the mode.
    // display error message.
    eraseDisplay();
    nxtDisplayCenteredTextLine(0, "ERROR!");
    nxtDisplayCenteredTextLine(2, "Init failed!");
    nxtDisplayCenteredTextLine(3, "Connect sensor");
    nxtDisplayCenteredTextLine(4, "to Port 1.");

    // make a noise to get their attention.
    PlaySound(soundBeepBeep);

    // wait so user can read message, then leave main task.
    wait10Msec(300);
    return;
  }

  eraseDisplay();

  // loop continuously and read from the sensor.
  while(true)
  {
    // read the current modulated signal direction
    _dirAC = HTIRS2readACDir(HTIRS2);
    if (_dirAC < 0)
    {
      // error! - write to debug stream and then break.
      writeDebugStreamLine("Read dir ERROR!");
      break;
    }

    // Get the AC signal strength values.
    if (!HTIRS2readAllACStrength(HTIRS2, acS1, acS2, acS3, acS4, acS5 ))
    {
      // error! - write to debug stream and then break.
      writeDebugStreamLine("Read sig ERROR!");
      break;
    }  else {
      // find the max signal strength of all detectors.
      maxSig = (acS1 > acS2) ? acS1 : acS2;
      maxSig = (maxSig > acS3) ? maxSig : acS3;
      maxSig = (maxSig > acS4) ? maxSig : acS4;
      maxSig = (maxSig > acS5) ? maxSig : acS5;
    }

    // display info
    nxtDisplayCenteredBigTextLine(1, "Dir=%d", _dirAC);
    nxtDisplayCenteredBigTextLine(4, "Sig=%d", maxSig);

    // figure out which direction to go...
    // a value of zero means the signal is not found.
    // 1 corresponds to the far left (approx. 8 o'clock position).
    // 5 corresponds to straight ahead.
    // 9 corresponds to far right.

    // first translate directional index so 0 is straight ahead.
    val = _dirAC - 5;

    // calculate left and right motor speeds.
    motor[motorC] = 50 + 30 * val;
    motor[motorB] = 50 - 30 * val;

    // wait a little before resuming.
    wait10Msec(2);
  }
}

What can we do to fix the problem? Is the IR beacon damaged?

Regards,

The Charging Champions

bloggif_548e0947e6311.gif


bloggif_548e0947e6311.gif

I’m not too familiar with the new beacons but the red light is flashing and it might be a low battery. I volunteered at an event yesterday and the beacon that the used was the same one and I don’t remember the light flashing.

Take your cell phone camera and point it at the IR emitters on the beacon. Do you see the lights on your cell phone screen? If not, replace the batteries, in fact you should probably just replace the batteries.

It is most likely a battery issue. Those are common signs of low/dead batteries. To check it you can use a camera or phone and aim the camera at the IR beacon. The camera/phone can see IR light and it will look like the IR bulbs are lightinh up. If you don’t see this then try replacing the batteries. Best of luck!

Thanks! Replacing the battery worked!