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 :
Si vous avez des suggestions sa sera avec plaisir ! Merci d'avance.Code: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); } }
.
-----