Go Down

Topic: Code d'une camera LinkSprite ! (Read 534 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
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy