Salut,
Pfiou, ça fuse les réponses par ici :we: !
Là si contact_1 > 10 tu fais avancer le robot, sinon tu changes juste la couleur de la LED, je ne sais pas si c'est ce que tu veux faire (comment on arrête le robot après ?).
En fait, c'était juste un mini-programme pour voir coment réagissait la fonction PollSwitch, d'où certaines incohérences (en fait volontaires car je ne voulais pas me prendre la tête sur un programme vraiment foncionnel, je reconnais quand même que j'ai oublié "init()" au début... :--: )
Là tu as écris « tant que 1, ne rien faire », c'est une boucle infinie.
En fait, je mets "while(1)" à la fin pour emprisonner le programme en fin de cycle. C'est recommandé pour éviter que des résidus de vieux programmes, qui n'ont pas été correctement flashés, n'interviennent pas dans le déroulement du programme actuel !
En gros, la fonction PollSwitch() ne fait que lire le nombre de byte, on est d'accord ??
Maintenant, je comprends mon erreur, j'avais déclaré ma variable contact au mauvais endroit ce qui fait qu'elle était ignorée : Voici un petit programme un peu plus abouti :
- Code: Tout sélectionner
#include "asuro.h"
int main(void)
{
Init();
unsigned char contact;
unsigned char temps;
while(1){
contact=PollSwitch();
if (contact>0){
StatusLED(RED);
MotorDir(BREAK,BREAK);
MotorSpeed(0,0);
BackLED(ON,ON);
MotorDir(RWD,RWD);
MotorSpeed(150,150);
for (temps=0;temps<5;temps++){
Sleep(50);
StatusLED(YELLOW);
}
}
else{
MotorDir(FWD,FWD);
MotorSpeed(150,150);
BackLED(OFF,OFF);
StatusLED(GREEN);
}
}
return 0;
}
Par contre, les fonctions de temporisation conduisent à des résultats aléatoires, si quelqu'un savait comment mieux les exploiter, je suis preneur ???
Sinon, je pense qu'on peut se servir de l'odométrie sur les roues : quelqu'un sait si on doit les programmer de la même façon que le suivi de ligne ?
Merci Beaucoup !
Bonne nuit !