Je lui ai fait un code que je pense être assez didactique (fichier demo_train2.ino ici).
Tu devrais pouvoir t'en inspirer pour voir la méthode de travail.
Je lui ai fait un code que je pense être assez didactique (fichier demo_train2.ino ici).
Tu devrais pouvoir t'en inspirer pour voir la méthode de travail.
A+
J ai pas trop compris ton histoire de machine etat, peut tu m' expliquer plus en details.
ce que j ai compris c est que chaque etat que tu me parle serait une fonction
//
// declare the NXShield(s) attached to your Arduino.
//
NXShield nxshield;
//
// declare analog devices attached to nxshields.
//
NXTTouch touch1;
Void main()
{
str= 100
avancer(str);// comme ça l'appel de fonction avec paramètre
}
Void Avancer(int str)
{
int str;
// Drive both motors forward and backward for a specific number of
// rotations
delay(1000);
sprintf(str, "Both Motors Forward %d Rotations", rotations);
Serial.println(str);
str[0] = '\0';//bon reflex =)
nxshield.bank_a.motorRunRotations(SH_Motor_Both,
SH_Direction_Forward,
SH_Speed_Medium,
rotations,
SH_Completion_Wait_For,
SH_Next_Action_BrakeHold);
delay(1000);
sprintf(str, "Both Motors Reverse %d Rotations", rotations);
Serial.println(str);
str[0] = '\0';
nxshield.bank_a.motorRunRotations(SH_Motor_Both,
SH_Direction_Reverse,
SH_Speed_Medium,
rotations,
SH_Completion_Wait_For,
SH_Next_Action_BrakeHold);
Serial.println("Bank B motors >>");
}
Petite question,
je dois gerer l'évitement durant mon déplacement (en gros je m’arrête si y a quelqu'un devant), est il plus simple de mettre une condition si dans mon void.avancer() ou de créer un programme annexe
ça c'est à toi de voir si dans ta fonction il avance une seconde après il vois ce qui ce passe et continue a nouveau d'avance tu peut le mettre dans ta fonction mais bon pendant ces une seconde tout peut ce passé sans qu'il le vois :s
et c'est histoire de machine d'état c'est une façon simple de procéder, comme tu dit sa donnerai sa:
switche (x):
{
case 1: avancer
break;
case 2: reculer
break;
case 3: tourner
break;
}
et avec ça soit a chaque fin de case tu passe au suivant soit tu choisie l'action avant:
switche (x):
{
case 1: avancer
x=2;
break;
case 2: reculer
x=3;
break;
case 3: tourner
x=1;
break;
}
if(je veux tourner){x=3;}
if(je veux avancer){x=1;}
if(je veux reculer){x=2;}
switche (x):
{
case 1: avancer
break;
case 2: reculer
break;
case 3: tourner
break;
}
Void timer(int time)
{
time1=milis();//bof comme téchnique, ca va marcher au début et plus apres... il te faut une reference...
if (time1>=(time))
{time=millis();
else Void arreturgence // <================= encore une fois l'appel c'est : arreturgence(); et c'est tout :s
}
}
change comme ça !
Void timer(int time)
{
time1=milis();
if (time1>=(time2+time))
{
time2=millis();
return 1; //<=== signe que ta tempo est passée..
}
else { return 0; }//<=== tempo pas fini
}
l'appel de l’arrêt d'urgence ce fait pas la, il ce fait après avoir testé ton capteur ou la variable qui est image de la présence de quelque chose..
tu a encore trop de chemin à faire avant d'avoir un problème compréhensible va sur le cite du zero un peut tu avancera plus vite..
skizoh:
tu a encore trop de chemin à faire avant d'avoir un problème compréhensible va sur le cite du zero un peut tu avancera plus vite..
Skizo !
Je comprend pas, il s'agit bien la du forum arduino, ou les gens s'entraide dans leur galère ??? Il y a des gens qui sont complétement hors sujet vis a vis d'arduino (ex info de capteur ou autre) et on les aide, je vois pas pourquoi on pourrais pas m'aider sur un projet de robot, avec un nxt shield que beaucoup de jeunes roboticiens pourraient utiliser.
le problème n'est pas la, ton projet est intéressent et le matos approprier au forum, mais ton code n'est pas du tout compilable et tu nous donne une version avec ton idée et nous faut qu'on en face un code qui fonctionne.. c'est pas trop comme ça que ça marche.. normalement tu apprend comment fonctionne tes fonction etc, tu fait ton programme petit bou par petit bou ou gros programme peut importe et la on répond a toute tes questions et on corrige ton code, mais la c'est même pas du C même les if(){ }else.. son pas respecté etc.. il va falloir que tu apprenne un peu avant je pense..
ps: on dirait que tu veut faire marcher un robot sans savoir programmer en C...