Pic detection objet

Aller en bas

Pic detection objet

Message par GiovannI le Jeu 9 Avr - 18:10

voila le programe pour comander un servomoteur et donc un gp2d12 et placé desu pour savoir dans kel direction et l'objet
pour l'instant il manque une petit parti pour envoyait la distance par une frequence variable
Code:
#include "C:\Users\giovanni\Documents\robot\teterobot1.h"
  #ZERO_RAM
int i=0,t=0,C=0;
void main()
{

  setup_adc_ports(sAN0|VSS_VDD);
  setup_adc(ADC_OFF);
  setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
  setup_timer_1(T1_DISABLED);
  setup_comparator(NC_NC);
  setup_vref(FALSE);

while(1)
 
while(i<100)
{
  i++;
  output_high(pin_a5);
  delay_ms(1);
  delay_us(i);             
  output_low(pin_a5);
  delay_ms(18);
  t=999-i;
  delay_us(t);
  set_adc_channel(2);
  delay_us(20);
  c=read_adc();
      if (c<128)
        {if(c>18)
          { output_high(pin_a4);
            if ( i>0)
              {if(i<333)
              {output_high(pin_a3);}}
            if ( i>333)
              {if(i<666)
                  {output_high(pin_a2);}}
            if ( i>666)
            {if(i<1000)
              {output_high(pin_a3);
                output_high(pin_a2);}}
              }
        output_low(pin_a2);
        output_low(pin_a3);
        output_low(pin_a4);
        }
 
while(i==0)

{
  i--;
  output_high(pin_a5);
  delay_ms(1);
  delay_us(i);             
  output_low(pin_a5);
  delay_ms(18);
  t=999-i;
  delay_us(t);
  set_adc_channel(2);
  delay_us(20);
  c=read_adc();
      if (c<128)
        {if(c>18)
          { output_high(pin_a4);
            if ( i>0)
              {if(i<333)
              {output_high(pin_a3);}}
            if ( i>333)
              {if(i<666)
                  {output_high(pin_a2);}}
            if ( i>666)
            {if(i<1000)
              {output_high(pin_a3);
                output_high(pin_a2);}}
              }
        output_low(pin_a2);
        output_low(pin_a3);
        output_low(pin_a4);
 
}

}
avatar
GiovannI

Nombre de messages : 27
Date d'inscription : 25/03/2009

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Pic detection objet

Message par Nadar le Ven 10 Avr - 18:40

C'est un peut compliqué ton code ... Je te conseille de faire une fonction pour contrôler ton servomoteur afin de l'appeller quand tu veut le controler.

Pourrait tu commenter ton code car j'ai un peut de mal à le comprendre svp Razz

edit :

Pour piloter ton servomoteur tu peut utiliser cette fonction :
Code:
Void servo(int8 A,int32 T)
// A l'angle voulu entre 0 et 255 et T la durée de mise en marche du servo en ms
// Attention T >=20 !!!!!
{
  float T1=0,T2=0;
  int8 i;
  //conversion de la valeur A en ms
  T1=(A*2)/255;
  T2=20-T1;
  T1=T*1000 // conversion en µs
  T=T/20;
  for(i=1;i<=T;i++){
  output_high(pin_a5);// La sortie qui pilote le servomoteur
  delay_us(T1);
  output_low(pin_a5);
  delay_ms(T2);
  }

Je pense que sa peut marcher mais je ne l'ai jamais testé ...

on peut alors utiliser le code suivant :
Code:
INT16 read_captor() // Retourne la distance avec un obstacle
{
  int16 C=0;
  set_adc_channel(2);
  delay_us(20);
  C=read_adc();
  return C;
}
Qui va permettre de retourner la distance visualisé grace au capteur

Les deux utilisé ensemble vont permettre de mesurer la distance et de controler le servomoteur

_________________
la critique est nécessaire mais l'invention est vitale, car dans toute invention il y a une critique de la convention...
avatar
Nadar
Admin

Nombre de messages : 220
Date d'inscription : 10/07/2008

Voir le profil de l'utilisateur http://robotique-iut.forum-actif.eu

Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum