Hi guys
I’m using a link sprite ls-201y and the LinkSprite suggested code for that camera. I got the camera here:
http://www.tinyosshop.com/index.php?rou … uct_id=586
And on the same page link to its tutorial with this sketch:
/* Linksprite */
//SPITS OUT WHITE SCREEN SERIAL MONITOR SCROLLING DOWN BUT NO DATA SAVED TO SD
// could white spaces on monitor be the data? if i let it run then it should show up as an image on sd car
#include <SoftwareSerial.h>
byte incomingbyte;
SoftwareSerial mySerial(4,5); //Configure pin 4 and 5 as soft serial port
long int a=0x0000,j=0,k=0,count=0; //Read Starting address
uint8_t MH,ML;
boolean EndFlag=0;
void SendResetCmd();
void SendTakePhotoCmd();
void SendReadDataCmd();
void StopTakePhotoCmd();
void setup(){
Serial.begin(19200);
mySerial.begin(38400);
}
void loop() {
SendResetCmd();
delay(4000); //After reset, wait 4 second to send take picture command
SendTakePhotoCmd();
while(mySerial.available()>0)
{
incomingbyte=mySerial.read();
Serial.print(incomingbyte);
}
byte a[32];
while(!EndFlag)
{
j=0;
k=0;
count=0;
SendReadDataCmd();
delay(5000);
while(mySerial.available()>0)
{
incomingbyte=mySerial.read();
k++;
if((k>5)&&(j<32)&&(!EndFlag))
{
a[j]=incomingbyte;
if((a[j-1]==0xFF)&&(a[j]==0xD9)) //Check if the picture is over
EndFlag=1;
j++;
count++;
}
}
for(j=0;j<count;j++)
{ if(a[j]<0x10)
Serial.print("0");
Serial.print(a[j],HEX);
Serial.print(" ");
} //Send jpeg picture over the serial port
Serial.println();
}
while(1);
}
//Send Reset command
void SendResetCmd()
{
mySerial.write((byte)0x56);
mySerial.write((byte)0x00);
mySerial.write((byte)0x26);
mySerial.write((byte)0x00);
}
//Send take picture command
void SendTakePhotoCmd()
{
mySerial.write((byte)0x56);
mySerial.write((byte)0x00);
mySerial.write((byte)0x36);
mySerial.write((byte)0x01);
mySerial.write((byte)0x00);
}
//Read data
void SendReadDataCmd()
{
MH=a/0x100;
ML=a%0x100;
mySerial.write((byte)0x56);
mySerial.write((byte)0x00);
mySerial.write((byte)0x32);
mySerial.write((byte)0x0c);
mySerial.write((byte)0x00);
mySerial.write((byte)0x0a);
mySerial.write((byte)0x00);
mySerial.write((byte)0x00);
mySerial.write(MH);
mySerial.write(ML);
mySerial.write((byte)0x00);
mySerial.write((byte)0x00);
mySerial.write((byte)0x00);
mySerial.write((byte)0x20);
mySerial.write((byte)0x00);
mySerial.write((byte)0x0a);
a+=0x20; //address increases 32£¬set according to buffer size
}
void StopTakePhotoCmd(){
mySerial.write((byte)0x56);
mySerial.write((byte)0x00);
mySerial.write((byte)0x36);
mySerial.write((byte)0x01);
mySerial.write((byte)0x03);
}
I got help with the (byte) error & the software serial error.
Now I’m stuck at getting 00 bytes back as evidenced in the serial monitor and the resulting file I’m saving to the SD card.
I’m logging the incomingbyte to the serial and I that’s where I get 00