CMUCAM 4

hey !

I'm a french student and with three friends we have to realize a project for our exams. We want to make a robot which uses a CMUCAM4 with Arduino. In the CMUCAM4 there is a test mod which track a color.
We have found this program (http://www.cmucam.org/docs/cmucam4/arduino_api/_c_m_ucam4_8cpp_source.html), and we don't know if it's the program of the test mod, because we need it. And I found another program and it's the same problem :

#include "CMUCam4.h"
#define led1 5
#define led2 6
#define led3 7
#define blob_left_led 8
#define blob_middle_led 9
#define blob_right_led 10
#define error_led 11
CMUCam4 camera;
unsigned char blob_x;
unsigned char blob_y;
int mode;
int error;
CMUCam4::CMUCAM4_color_range_t blueTracking;
CMUCam4::CMUCAM4_track_data_t trackingData;
void setup()
{
camera.init();
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(blob_left_led, OUTPUT);
pinMode(blob_middle_led, OUTPUT);
pinMode(blob_right_led, OUTPUT);
pinMode(error_led, OUTPUT);
blueTracking.redLow = 40;
blueTracking.redHigh = 120;
blueTracking.greenLow = 160;
blueTracking.greenHigh = 255;
blueTracking.blueLow = 150;
blueTracking.blueHigh = 230;
trackingData.centroidX = 0;
trackingData.centroidY = 0;
trackingData.boundX1 = 0;
trackingData.boundY1 = 0;
trackingData.boundX2 = 0;
trackingData.boundY2 = 0;
trackingData.trackedPixels = 0;
trackingData.trackingConfidence = 0;
mode = 0;
}
void loop()
{
if(mode == 0) //send tracking information
{
camera.setTrackColor(&blueTracking);
camera.startTrackColor(&blueTracking);
delay(1000); //give a second to settle
mode = 1;
digitalWrite(led1, HIGH);
}
else if(mode == 1)
{
//get tracking data, and note if error occured
error = camera.getTrackData(&trackingData);
if(error < 0)
digitalWrite(error_led, HIGH);
else
digitalWrite(error_led, LOW);
digitalWrite(led2, HIGH);
delay(100);
mode = 2;
}
else if(mode == 2)
{
//display information
blob_x = trackingData.centroidX;
blob_y = trackingData.centroidY;
Serial.print("Error: ");
Serial.println(error);
Serial.print("Centroid X: ");
Serial.println(blob_x);
Serial.print("Centroid Y: ");
Serial.println(blob_y);
mode = 3;
}
else if(mode == 3)
{
//indicate with LED where target is
if(blob_x < '2') //blob left (50)
{
digitalWrite(blob_left_led, HIGH);
}
else if(blob_x < 'n') //blob middle (110)
{
digitalWrite(blob_middle_led, HIGH);
}
else //blob_x < CMUCAM4_WINDOW_X_MAX
{
digitalWrite(blob_right_led, HIGH);
}
}
}

If you know the answer of our problem or if you know where we can find the program of the test mod, please help us.
Thank you very much for reading it :wink:

Moderator edit:
</mark> <mark>[code]</mark> <mark>

</mark> <mark>[/code]</mark> <mark>
tags added.

and it's the same problem

And that problem is..?

we don't know if these programs are really the CMUCAM4 test mode. We posted the same message on the CMUCAM forum and we received an answer. This new code is :

/***************************************************************************//**
* @file
* Color Tracking Template Code
*
* @version @n 1.0
* @date @n 8/14/2012
*
* @authors @n Kwabena W. Agyeman
* @copyright @n (c) 2012 Kwabena W. Agyeman
* @n All rights reserved - Please see the end of the file for the terms of use
*
* @par Update History:
* @n v1.0 - Initial Release - 8/14/2012
*******************************************************************************/

#include <CMUcam4.h>
#include <CMUcom4.h>

#define RED_THRESHOLD 30
#define GREEN_THRESHOLD 30
#define BLUE_THRESHOLD 30

#define LED_BLINK 5 // 5 Hz
#define WAIT_TIME 5000 // 5 seconds

CMUcam4 cam(CMUCOM4_SERIAL); // Replace this with what serial port you are using.... CMUCOM4_SERIAL, CMUCOM4_SERIAL1, CMUCOM4_SERIAL2, CMUCOM4_SERIAL3... etc.

void setup()
{
  cam.begin();

  // Wait for auto gain and auto white balance to run.

  cam.LEDOn(LED_BLINK);
  delay(WAIT_TIME);

  // Turn auto gain and auto white balance off.

  cam.autoGainControl(false);
  cam.autoWhiteBalance(false);

  // See automatic pan and tilt for more details.

  cam.automaticPan(true, false);
  cam.automaticTilt(true, false);

  cam.colorTracking(true); // Go to YUV mode! False foir RGB mode!  
  cam.monitorSignal(false); // Operate in PAL mode. False for NTSC mode.

  cam.LEDOn(CMUCAM4_LED_ON);
}

void loop()
{
  while(!cam.getButtonPressed()); // Wait for the user to press the button...

  CMUcam4_tracking_data_t data;

  cam.trackWindow(RED_THRESHOLD, GREEN_THRESHOLD, BLUE_THRESHOLD);

  for(;;)
  {
    cam.getTypeTDataPacket(&data); // Get a tracking packet.

    // Process the packet data safely here.
  }

  // Do something else here.
}

/***************************************************************************//**
* @file
* @par MIT License - TERMS OF USE:
* @n Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"), to
* deal in the Software without restriction, including without limitation the
* rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
* sell copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
* @n
* @n The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
* @n
* @n THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*******************************************************************************/

It's good ? thank you very much for answering :slight_smile:

Moderator edit: Code tags again.

It's good ?

You're the ones with the hardware - you tell us.

so, your final exam project is based on other peoples code, and you want us to troubleshoot it for you...

um not me, I actually worked my ass off learning this stuff on my own and made a career of it