voilà j'ai avancé un peut plus je voudrais avoir votre avis sur ce code il y a surement des érreur ou des chose que l'on peut remplacé par d'autre...
dans ce code j'ai voulu mettre des touche de clavier mais je ne sait pas top comment sa marche
j'ai vu le codage ASCII mais je ne sait pas si sa marche et si c'est compatible avec arduino (surement que si mais je préfaire demandé et faut-il que je dise que je code avec ASCII (comme une librairie je crois)
voici mon nouveau code :
int vitesseM1 = 3; //la carte controleur de moteur
int vitesseM2 = 5; //à 6 entrées les deux première serve à réglé la vitesse
int broche1M1 = 4; //les suivante corspondent au deux broche d'un moteur
int broche2M1 = 8; //donc si le courant passe dans une broche et que l'autre broche
int broche1M2 = 6; //est en mode 0V le moteur tourne et si on inverce les deux broche
int broche2M2 = 7; //le moteur tourne dans l'autre sens
int distance = analogRead(0); //lecture du capteur de distance
int aleatoire = 0; //initialisation d'une variable
int valComp = 0;
int modeAuto = 0;
void arret() //permet de ne pas avoir tout à réécrire juste à marquer le mot qui se trouve après "void" ici "arret"
{
analogWrite (vitesseM1, 0);
digitalWrite (broche1M1, LOW);
digitalWrite (broche2M1, LOW);
analogWrite (vitesseM2, 0);
digitalWrite (broche1M2, LOW);
digitalWrite (broche2M2, LOW);
}
void avance (char a,char <img src='http://www.robot-maker.com/forum/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' /> //de même pour "avance" mais on peut changer la vitesse des moteur
{
analogWrite (vitesseM1, a);
digitalWrite (broche1M1, LOW);
digitalWrite (broche2M1, HIGH);
analogWrite (vitesseM2, <img src='http://www.robot-maker.com/forum/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' />;
digitalWrite (broche1M2, LOW);
digitalWrite (broche2M2, HIGH);
}
void arriere (char a, char <img src='http://www.robot-maker.com/forum/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' />
{
analogWrite (vitesseM1, a);
digitalWrite (broche1M1, HIGH);
digitalWrite (broche2M1, LOW);
analogWrite (vitesseM2, <img src='http://www.robot-maker.com/forum/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' />;
digitalWrite (broche1M2, HIGH);
digitalWrite (broche2M2, LOW);
}
void droite (char a,char <img src='http://www.robot-maker.com/forum/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' /> //droite
{
analogWrite (vitesseM1, a);
digitalWrite (broche1M1, LOW);
digitalWrite (broche2M1, HIGH);
analogWrite (vitesseM2, <img src='http://www.robot-maker.com/forum/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' />;
digitalWrite (broche1M2, HIGH);
digitalWrite (broche2M2, LOW);
}
void gauche (char a,char <img src='http://www.robot-maker.com/forum/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' /> //gauche
{
analogWrite (vitesseM1, 160);
digitalWrite (broche1M1, HIGH);
digitalWrite (broche2M1, LOW);
analogWrite (vitesseM2, 160);
digitalWrite (broche1M2, LOW);
digitalWrite (broche2M2, HIGH);
}
void setup()
{
pinMode (vitesseM1, OUTPUT);
pinMode (vitesseM2, OUTPUT); //met les pin moteur en
pinMode (broche1M1, OUTPUT); //mode sortie
pinMode (broche2M1, OUTPUT);
pinMode (broche1M2, OUTPUT);
pinMode (broche2M2, OUTPUT);
Serial.begin(9600); //conection pc
}
void loop()
{
if (Serial.available() > 0) //regarde si un message est envoyé depuis l'ordinateur
{
valComp = Serial.read();
if (valComp == 97) //la touche "a" est appuyé
{
modeAuto = 1; //le mode est automatique
}
else if (valComp == 109) //la touche "m" est appuyé
{
modeAuto = 0; //le mode est manuel
}
}
if (distance <= 10)
{
//ce mode aléatoire sert à
aleatoire = random(2); //se que le robot ne tourne
// pas toujours dans le même sens
if (aleatoire == 0)
{
//fait tourné le robot vers la droite
droite(160,160);
delay (1500);
}
else
{
//fait touné le robot vers la gauche
gauche(160,160);
delay (1500);
}
}
else if (modeAuto == 0)
{
switch(valComp)
{
case '24': //la touche "flèche haut" est appuyé
avance (100,100);
Serial.print('avance'); //envoie "avance" à l'ordinateur
break;
case '25': //touche "flèche bas"
arriere (100,100);
Serial.print('recule'); //envoie "recule"
break;
case '26': //"flèche droite"
droite (50,50);
Serial.print('tourne à droite'); //"tourne à droite"
break;
case '27': //"flèche gauche"
gauche (50,50);
Serial.print('tourne à gauche'); //"tourne à gauche"
break;
case '0': //si aucune touche n'est appuyé
arret();
Serial.print('arret'); //"arret"
}
}
else if (modeAuto == 1) //mode auto toujours tout droit
{
avance(160,160);
}
else //au cas ou...
{
arret();
}
}
voilà si vous avez des remarque des question nésité pas
et aussi si vous avez d'autre chose que je pourais rajouté... je commence à ne plus avoir d'idée sauf mocuper des codeur (hum sa va être dur)
A+