Programmation Robot - C - Programmation
Marsh Posté le 27-01-2010 à 10:57:04
Plop,
Je remarque d'après les espaces / retour a la lignes que tu as au niveau de tes if que tu as peut etre pas mis d'accolades:
Code :
|
Marsh Posté le 27-01-2010 à 23:06:05
En fait il s'arrête lorsqu'il détecte un obstacle mais c'est un autre sous programme que j'ai pas affiché puisqu'il ne présentait pas d'intérêt.
En fait le problème ne vient pas de mon programme.. C'est juste qu'il faut une carte d'interface que mon prof n'a pas.. donc je ne pourrais jamais tester mon programme..
Désolé et merci de ta réponse
Marsh Posté le 26-01-2010 à 10:55:39
Bonjour à tous, je suis actuellement sur le projet d'un robot suiveur de ligne et détecteur d'obstacle, nous programmons un PIC 18F2550 avec le logiciel PIC C COMPILER. Le robot comporte 2 moteurs branchés en inverses.
Mon problème c'est que je n'arrive pas à faire tourné les moteurs, Il faut 4,5V a ses bornes pour qu'ils puissent avancé, cependant j'obtiens 4,8 au + et 0.8 au - je comprend pas pourquoi... Je suis débutant en programmation de C donc je suis preneur de tous conseils.
Je commande les moteurs sur le port A : A0 jusque A3 en analogique
Voila mon programme :
void main()
{
init();
output_low (Mgm);
output_low (Mdp);
while(1==1)
{
moteur();
//detect();
}
}
//*****************************************************************************
void init()
{
setup_adc_ports(AN0_TO_AN3|VSS_VDD);
setup_adc(ADC_OFF);
port_b_pullups (TRUE); // initialisation portB
output_bit (Almm, 1);
output_bit (Gndm, 0);
// initilisation interruption externe
// ext_int_edge( l_to_h ); //Interruption déclenchée sur un front montant
// enable_interrupts( INT_EXT1 ); // Autorisation d'interruption par RB1
// enable_interrupts( GLOBAL ); //Autorisation d'interruption global
}
//*****************************************************************************
//void detect()
//{
//output_high (CmdAlimGP2);
//}
//*****************************************************************************
void moteur()
{
if (LM == 1)
{
if ((LD == 0)&&(LG == 0))
output_high((Mdm)&&( Mgp));
if ((LD == 1)&&(LG == 0))
output_high(Mgp);
output_low(Mdm);
if ((LD == 0)&&(LG == 1))
output_high(Mdm);
output_low(Mgp);
}
if (LM == 0)
{
if ((LD == 0)&&(LG == 0))
output_high((Mdm)&&( Mgp));
if ((LD == 1)&&(LG == 0))
output_high(Mgp);
output_low(Mdm);
if ((LD == 0)&&(LG == 1))
output_high(Mdm);
output_low(Mgp);
}
}
Si vous avez des suggestions sa sera avec plaisir ! Merci d'avance.