I, too, am having the same issue. Here is the code I am working with (down below, copied from elsewhere), but have had the same problem in code from other sources trying to do the same thing basically - take a pic with the linkSprite jpeg camera and write it to an sd card on the sparkfun sd shield.
the trouble line, as described by ebird:
MemoryCard.file.print(response[i], BYTE);
with the following change, i was at least able to upload/compile successfully, but then there is an issue with a couple other files in libraries:
MemoryCard.file.print(Serial.write(response[i]));
but this gives the following errors:
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/MemoryCard/MemoryCardDevice.cpp: In function 'boolean callback_makeDirPath(SdFile&, char*, boolean, void*)':
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/MemoryCard/MemoryCardDevice.cpp:129: error: no matching function for call to 'SdFile::makeDir(SdFile&, char*&)'
/Applications/Arduino 2.app/Contents/Resources/Java/libraries/SdFat/SdBaseFile.h:275: note: candidates are: bool SdBaseFile::makeDir(SdBaseFile*, const char*)
Again, I am running Arduino 2.0 on a Mac, using Uno and the SD shield from Sparkfun. Any help would be greatly appreciated!
Complete code:
/*
JPEG Camera Example Sketch
The sketch will take a picture on the JPEG Serial Camera and store the jpeg to an SD card
on an SD Shield
Written by Ryan Owens
SparkFun Electronics
Hardware Notes:
This sketch assumes the arduino has the microSD shield from SparkFun attached.
The camera Rx/Tx should be attached to pins 2 and 3.
IMPORTANT: The JPEG camera requires a TTL level shifter between the camera output
and the arduino. Bypassing this may damage the Arduino pins.
*/
//This example requires the MemoryCard, SdFat, JPEGCamera and NewSoftSerial libraries
#include <MemoryCard.h>
#include <SdFat.h>
#include <JPEGCamera.h>
#include <SoftwareSerial.h>
//Create an instance of the camera
JPEGCamera camera;
//Create a character array to store the cameras response to commands
char response[32];
//Count is used to store the number of characters in the response string.
unsigned int count=0;
//Size will be set to the size of the jpeg image.
int size=0;
//This will keep track of the data address being read from the camera
int address=0;
//eof is a flag for the sketch to determine when the end of a file is detected
//while reading the file data from the camera.
int eof=0;
void setup()
{
//Setup the camera, serial port and memory card
camera.begin();
Serial.begin(9600);
MemoryCard.begin();
//Reset the camera
count=camera.reset(response);
delay(3000);
//Take a picture
count=camera.takePicture(response);
//Print the response to the 'TAKE_PICTURE' command.
Serial.write(response);
Serial.write(count);
Serial.println();
//Get the size of the picture
count = camera.getSize(response, &size);
//Print the size
Serial.print("Size: ");
Serial.println(size);
//Create a file called 'test.txt' on the SD card.
//NOTE: The memoryCard libary can only create text files.
//The file has to be renamed to .jpg when copied to a computer.
MemoryCard.open("/test.txt", true);
//Starting at address 0, keep reading data until we've read 'size' data.
while(address < size)
{
//Read the data starting at the current address.
count=camera.readData(response, address);
//Store all of the data that we read to the SD card
for(int i=0; i<count; i++){
//Check the response for the eof indicator (0xFF, 0xD9). If we find it, set the eof flag
if((response[i] == (char)0xD9) && (response[i-1]==(char)0xFF))eof=1;
//Save the data to the SD card
MemoryCard.file.print(response[i], BYTE);
//If we found the eof character, get out of this loop and stop reading data
if(eof==1)break;
}
//Increment the current address by the number of bytes we read
address+=count;
//Make sure we stop reading data if the eof flag is set.
if(eof==1)break;
}
//Close the file
MemoryCard.close();
Serial.print("Done.");
}
void loop()
{
}