OK cool ne t'inquiète pas ton message était correcte c'est moi qui me suis un peu emballes.
Donc pour le code je refais ma 1er techniques désoler si vous devez le télécharger:
voituremecanoV1.ino 3,88 Ko
237 téléchargement(s)
pour la question 2 merci sa ma sauvé la vie dans un autre programme
et pour la 4 je vais me faire des petits test.
Sinon un nouvelle question (je pense que sa va devenir un routine pour moi et sa doit être pas cool pour vous)
1-y a t-il une technique pour quand on utilise le moniteur série pour le débogage de mettre ou pas les messages ,une fonction booléenne avec un vrai si on les affiche et faux si non??
encore merci
le code :
#include <Stepper.h>
Stepper Moteur (200,10,11,12,13);//moteur pas a pas de récuperation pour la tourelle
int donneeCapteur[19][1];//tableau pour les angles de rotation du robot en fonction de la plus grnde distance trouvée avec la tourrelle
uint8_t indiceMax = 0;//variable pour le calcul de la plus grande valeur de la tourrelle
uint8_t angleMax;//variable pour l'angle max trouver dans le calcul
uint8_t distanceMax;//pareil mais pour la distance
const byte motorLeftEnablePin = 3;//pins de connexions du oteur gauche
const byte motorLeftIn1 = 2;
const byte motorLeftIn2 = 4;
const byte motorRighEnablePin = 5;//pins de connexions du moteur droit
const byte motorRighIn1 = 6;
const byte motorRighIn2 = 7;
const byte trigPin = 8;//pins pour la sortie du capteur ultason
const byte echoPin =9;//pins pour l'entrer du capteur
long distance,duree,maximum;//variable pour la mesure de la distance
void setup() {
for(byte i=2;i<= 8;i++){
pinMode(i,OUTPUT);
}
pinMode(9,INPUT);
Serial.begin(9600);
Moteur.setSpeed(240);
for(byte x=0;x <=19;x++){
donneeCapteur[x][1] = donneeCapteur[x-1][1] + 164;//remplissage de la 2éme colonne du tableau pour définir les anglesmax ,le robot fait un tour en 3280ms donc 164 pour 18° car 20mesure
Serial.print("azerty");
Serial.println(donneeCapteur[x][1]); //pour vérifir
}
}
void loop() {
mesure();
if(distance <= 25){
mesure();
if(distance <= 25){
arret();
tournicotit();
//recule(255);
//delay(1500);
turnRigh(angleMax);
}
}
else{
avance(255);
}
}
void mesure(){//code pour la mesure de la distance
digitalWrite(trigPin,LOW);
delayMicroseconds(10);
digitalWrite(trigPin,HIGH);
delayMicroseconds(10);
duree = pulseIn(echoPin,HIGH);
distance = duree*340/(2*10000);
/* Serial.print(distance);
Serial.print("cm");
Serial.print(duree);
Serial.println("ms");*/
if(distance > 250){//pour éviter des valeur éronnée
distance == 200;
}
delay(50);
}
void setMotorLeft (int speeds ,boolean reverse){//initialisation des moteur avec la vitesse et le sens
analogWrite( motorLeftEnablePin,speeds);
digitalWrite(motorLeftIn1,reverse);
digitalWrite(motorLeftIn2,! reverse);
}
void setMotorRigh (int speeds,boolean reverse){
analogWrite(motorRighEnablePin,speeds);
digitalWrite(motorRighIn1,reverse);
digitalWrite(motorRighIn2,! reverse);
}
void turnRigh (int Stop){//pour torner a gauche
setMotorLeft(255,true);
setMotorRigh(255,false);
delay(Stop);
setMotorLeft(255,true);
setMotorRigh(255,true);
}
void turnLeft (int Stop){//et a droite
setMotorLeft(255,false);
setMotorRigh(255,true);
delay(Stop);
setMotorLeft(255,true);
setMotorRigh(255,true);
}
void avance (int speeds){//pout avancer
setMotorLeft(speeds,true);//-25 pour avancer en ligne droit car le moteur gauche tire trop
setMotorRigh(speeds,true);
}
void recule (int speeds){
setMotorLeft(speeds,false);
setMotorRigh(speeds,false);
}
void arret (){
setMotorLeft(0,true);
setMotorRigh(0,true);
}
void tournicotit (){//pour faire tourner la tourelle en mesurant la disance pour apres aller vers ladistance la plus grande
for(byte a = 0; a <= 19;a++){//tourner la tourelle en mesurant
Moteur.step(390);
mesure();
distance = donneeCapteur[a][0]; //la distance est socker dans la 1er colonne du tableau :je pense qu'ily a un bug ici
Serial.println(donneeCapteur[a][0]);
}
Moteur.step(-7800);//retour de la tourelle pour éviter de se bloquer avec les cables de capteur
for(byte c = 0;c <= 19;c++){//pour calculer la plus grand valeur :marche mal,pas
if( donneeCapteur[indiceMax][0] < donneeCapteur[c][0] ){
indiceMax = c;
}
Serial.println(indiceMax);
}
distanceMax == donneeCapteur[indiceMax][0];//association de la distance maxtrouver
angleMax == donneeCapteur[indiceMax][1];//pareil mais avec le tableau rempli dans le setup
Serial.print("a");
Serial.println(angleMax);
Serial.print("b");
Serial.println(distanceMax);
}