Go Down

Topic: Code d'une camera LinkSprite ! (Read 465 times) previous topic - next topic

stribuda

Salut , je cherche a comprendre ce programme mais comme je suis un peu débutant en informatique (je connais la base en c , pascal et j'ai 20 en informatique :D ) donc j'ai besoin de votre aide !
Ce programme est déstiné pour une camera que je compte relier avec mon arduino , voici le code :
Code: [Select]
/* Linksprite */

#include <NewSoftSerial.h>

byte incomingbyte;
NewSoftSerial mySerial(4,5);                     //Configure pin 4 and 5 as soft serial port
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 2-3 second to send take picture command
     
     SendTakePhotoCmd();

    while(mySerial.available()>0)
     {
       incomingbyte=mySerial.read();

     }  
     byte a[32];
     
     while(!EndFlag)
     {  
        j=0;
        k=0;
        count=0;
        SendReadDataCmd();

        delay(25);
         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.print(0x56, BYTE);
     mySerial.print(0x00, BYTE);
     mySerial.print(0x26, BYTE);
     mySerial.print(0x00, BYTE);
}

//Send take picture command
void SendTakePhotoCmd()
{
     mySerial.print(0x56, BYTE);
     mySerial.print(0x00, BYTE);
     mySerial.print(0x36, BYTE);
     mySerial.print(0x01, BYTE);
     mySerial.print(0x00, BYTE);  
}

//Read data
void SendReadDataCmd()
{
     MH=a/0x100;
     ML=a%0x100;
     mySerial.print(0x56, BYTE);
     mySerial.print(0x00, BYTE);
     mySerial.print(0x32, BYTE);
     mySerial.print(0x0c, BYTE);
     mySerial.print(0x00, BYTE);
     mySerial.print(0x0a, BYTE);
     mySerial.print(0x00, BYTE);
     mySerial.print(0x00, BYTE);
     mySerial.print(MH, BYTE);
     mySerial.print(ML, BYTE);  
     mySerial.print(0x00, BYTE);
     mySerial.print(0x00, BYTE);
     mySerial.print(0x00, BYTE);
     mySerial.print(0x20, BYTE);
     mySerial.print(0x00, BYTE);  
     mySerial.print(0x0a, BYTE);
     a+=0x20;                            //address increases 32£¬set according to buffer size
}

void StopTakePhotoCmd()
{
     mySerial.print(0x56, BYTE);
     mySerial.print(0x00, BYTE);
     mySerial.print(0x36, BYTE);
     mySerial.print(0x01, BYTE);
     mySerial.print(0x03, BYTE);        
}

manufwi

#1
Apr 10, 2013, 01:34 am Last Edit: Apr 21, 2013, 05:53 pm by manufwi Reason: 1
Ce code de démo est prévu pour la version d'arduino pre 1.0. Voici un lien vers une biblio post 1.0 qui marche bien avec deux sketches d'exemples un peu plus faciles à comprendre (un pour une caméra branchée sur un port série matériel et l'autre sur un port série logiciel, comme dans le code que tu cites).
J'avais oublié le lien: https://code.google.com/p/linksprite-serial-cam-arduino/

Go Up