Programme type

Pour avoir un exemple de programmation de la partie électronique nous avons décidé de faire un module de base pour le drone.  Ce module  caméra  permettra d’effectuer des photos et vidéos aériennes.  Ce module comporte aussi 2 servomoteurs pour orienter la caméra. Les programmes gèrent les servomoteurs et l'allumage de la caméra (optionnel) mais ne sauvegarde pas les vidéos prises. Les programmes que nous montrons portent sur l’envoi, la réception et le traitement  d’informations. Si vous n' êtes pas trop calé en programmation et en électronique nous vous conseillons de lire ce PDF très intéressant (qui n'est pas de nous) : http://www.craslab.org/arduino/LivretArduinoFr06.pdf

 On a donc pris l' exemple d'une caméra montées sur deux servomoteurs pour l 'orienter.

Voici l'algorithme du programme d'envoi puis celui de reception :

     Programme d'envoi

//Ce programme doit permettre d'envoyer les commandes de la caméra
//via un émetteur


//On commence par définir les variables :
int droite ;
int gauche ;
int haut ;
int bas ;

void setup()
{
//On configure ensuite  l'émetteur en sortie et la vitesse de
//transmission entre les deux cartes
pinMode(5,INPUT) ;
pinMode(4,INPUT) ;
pinMode(3,INPUT) ;
pinMode(2,INPUT) ;
 Serial.begin(9600) ;
}
void loop ()
{
droite = digitalRead(5) ;
gauche = digitalRead(4) ;
haut = digitalRead(3) ;
bas = digitalRead(2) ;


//Et enfin on défini les action à effectuer en fonction des entrées en
//en mettant deux info (8 et 9) pour sécuriser ce que l'on veut transmettre
  if (droite == HIGH)
  {
    Serial.print(8) ;
    Serial.print(2) ;
    Serial.print(9) ;
  }
  if (gauche == HIGH)
  {
    Serial.print(8) ;
    Serial.print(3) ;
    Serial.print(9) ;
  }
  if (haut == HIGH)
  {
    Serial.print(8) ;
    Serial.print(4) ;
    Serial.print(9) ;
  }
  if (bas == HIGH)
  {
    Serial.print(8) ;
    Serial.print(5) ;
    Serial.print(9) ;
  }
}

 

         

 

 

      Programme de réception

//Ce programme traite les informations qu'il reçoit par le récepteur
//pour commander des servomoteurs et activer la photo et la video de
//la caméra
 
//On inclut la commande des servo pour simplifier le programme
#include <Servo.h> ;
//on défini les variables et les servo ainsi que leurs attaches
Servo servo1 ;
Servo servo2 ;
int position1 ;
int position2 ;
int sortie ;
int fin ;
int début  ;
 
void setup()
{
//on initialise la vitesse de communication ici aussi ainsi que les
//sortie, la valeur de certaines variables et où sont attachés les
//servos.
  Serial.begin(9600) ; //on défini la vitesse de communication
  servo2.attach(11) ;//on attache les servos à leurs broches respectives
  servo1.attach(10) ;
  servo1.write(90) ;
  delay(100) ;
  servo2.write(90) ;
  delay(100) ;
}
  void loop ()
//Ce programme cherche s'il y a des infos à recevoir puis confirme
//la valeur de départ et de fin avant de réagir en fonction de
//l'info du milieu}
{if (Serial.available()>0); //on s'assure qu'il reçoit des infos
  { début = Serial.read() ; //on lit la valeur transmise
   if ( début == 8)
    {sortie = Serial.read () ; // réactions possibles
     fin = Serial.read () ; }
     if (fin == 9)
      {if (sortie == 1) ;
        {if(position1<179)
          {position1 += 1 ;
           servo1.write(position1);   
           delay(15);
          }   
        }         
       if (sortie == 2) ;
        {if(position1>1)
          {position1-=1 ;
           servo1.write(position1);
           delay(15);
          }
        }
       if (sortie == 3) ;
        {if(position2<179)
          {position2+=1 ;
           servo2.write(position2);
           delay(15);
          }
        }
       if (sortie == 4) ;
        {if(position2>1)
          {position2-=1 ;
           servo2.write(position2);
           delay(15);
         }
     }
  }
}   
//Et voilà, "à peine" quelques semaines de recherches...