Trouble interfacing with an ADNS-2610 optical mouse

I am trying to use code that was posted in another thread on this forum. The code communicates with an ADNS-2610 optical mouse. I am using the code below;

[color=blue]// This example reads out the PixArt PAN3101 Optical Navigation Sensor
// It's used in many cheap optical mouses.
//
// For support for the Agilent ADNS-2051, ADNS-2083 or ADNS-2610, move
// the files for your mouse to the folder with the OptiMouse files.
// Then uncomment the right header files and object instances below.
//
// The Arduino will keep track of a (x, y) coordinate by increasing
// or decreasing the x and y variables by dx and respectively dy.
// Every 128th sample it reports the current (x, y) over the Serial.
//
// Written by Martijn The -> post [at] martijnthe.nl
// Tutorial: http://www.martijnthe.nl/optimouse/
// Based on the sketches by Beno?t Rousseau


#include "C:\Documents and Settings\Kevin Wynne\Desktop\arduino-0022\ADNS2610.h"

#define SCLK 2                            // Serial clock pin on the Arduino
#define SDIO 4                           // Serial data (I/O) pin on the Arduino

ADNS2610 Optical1 = ADNS2610(SCLK, SDIO);


signed long x = 0;                        // Variables for our 'cursor'
signed long y = 0;                        //

int c = 0;                                // Counter variable for coordinate reporting

void setup()
{
  Serial.begin(38400);
  Optical1.begin();                       // Resync (not really necessary?)
}

void loop()
{

    x += Optical1.dx();                   // Read the dX register and in/decrease X with that value
    y += Optical1.dy();                   // Same thing for dY register.....

  if (c++ & 0x80)
  {                                       // Report the coordinates once in a while...
    Serial.print("x=");
    Serial.print(x, DEC);
    Serial.print(" y=");
    Serial.print(y, DEC);
    Serial.println();
    c = 0;                                // Reset the report counter
  }
}

[/color]

I am getting the following errors:

Optical_Mouse.cpp.o: In function __static_initialization_and_destruction_0': C:\DOCUME~1\KEVINW~1\LOCALS~1\Temp\build8919888951995157087.tmp/Optical_Mouse.cpp:25: undefined reference to ADNS2610::ADNS2610(unsigned char, unsigned char)'
Optical_Mouse.cpp.o: In function loop': C:\DOCUME~1\KEVINW~1\LOCALS~1\Temp\build8919888951995157087.tmp/Optical_Mouse.cpp:42: undefined reference to ADNS2610::dx()'
C:\DOCUME~1\KEVINW~1\LOCALS~1\Temp\build8919888951995157087.tmp/Optical_Mouse.cpp:43: undefined reference to ADNS2610::dy()' Optical_Mouse.cpp.o: In function setup':
C:\DOCUME~1\KEVINW~1\LOCALS~1\Temp\build8919888951995157087.tmp/Optical_Mouse.cpp:36: undefined reference to `OptiMouse::begin()'

I was hoping some one would be able to help me.

Thanks

Kevin

It looks like you just pointed to a copy of ADNS2610.h without installing the ADNS2610 library.

Take the ADNS2610 files (.c or .cpp and .h) and put them in a directory called "libraries/ADNS2610/" in the directory where Arduino keeps your sketches.

I will try that thank you

Kevin

I moved the files that you suggested and I am still getting the same errors.

Do you have any other ideas.

Kevin

Hello Kevin,
i have a similar problem, but with the ADNS2051. My post is here, but in german.
http://arduino.cc/forum/index.php/topic,64442.0.html
You can help me?
Willi

I got the sketch to work by:

  1. Adding "#include <OptiMouse.h>" above the line "#include <ADNS2610.h>"

  2. Edit OptiMouse.h to remove the line "#include "WConstants.h""

Note that you have to move ADNS2610 .h out of the 'drivers' directory and into the same directory as OptiMouse.h

Many many thanks. My error messages are gone. But my mistake was that I set the WProgram.h had included the wrong. Now I can continue to tinker.
Best regards Willi