2 pièce(s) jointe(s)
Question carte Arduino Mega 2560
Bonsoir,
Je travaille actuellement (comme je l'ai déjà dit sur une autre discussion ^^) sur un robot 6 axes comme projet de terminale. J'ai donc fait un montage avec une carte Mega 2560,breadboard,shield et créer un bout de code qui est censé faire tourner les servomoteurs grâce à un nunchuck. Bref tout ça pour dire que les Servomoteurs ont en quelques sorte une crise d'épilepsie (Oui c'est vraiment vrai ^^) C'est à dire qu'en ne touchant à rien le robot arrive quand même à bouger #WTF, je me demande donc si le problème ne vient pas de l'alimentation, car j'alimente la carte avec une pile de 6V. Je vous joint un photo de mon montage (la connectique du robot n’apparaît pas dessus)
Pièce jointe 203889
Pièce jointe 203890
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
|
#include <Servo.h>
#include <Wiichuck.h>
#include <Wire.h>
Wiichuck wii;
Servo Servo13;
Servo Servo12;
Servo Servo11;
Servo Servo10;
Servo Servo9;
Servo Servo8;
int p; //Variable indiquant le servo à controler
int JoyX;
int JoyY;
int angleX;
int angleY;
int memoire_Z;
int memoire_C;
void setup()
{
Servo13.attach(2); //Attache des servomoteur a un pin
Servo12.attach(3);
Servo11.attach(4);
Servo10.attach(5);
Servo9.attach(6);
Servo8.attach(7);
JoyX == wii.joyX();
JoyY == wii.joyY();
angleX = map(JoyX, 32, 234, 0, 180); //Faire en sorte que les valeurs soient entre 0 et 180 pour le servo
angleY = map(JoyY, 32, 234, 0, 180);
wii.init();
wii.calibrate();
p == 0; //Le premier servo a être controllé sera celui le plus en bas
Serial.begin(9600);
}
void loop()
{
if (wii.poll()) //s'il il y a changement dans l'état du nunchuck
{
if (wii.buttonZ() !
= memoire_Z && wii.buttonZ() == 1) //Si le bouton n'est pas dans l'état relaché et qu'il est appuyé
{
if(p==0) //Si p=0 (ca controlle le servo le plus en bas)
{
p == 5; //On descend d'un servo
}
else
{
p--;
}
}
if (wii.buttonZ() != memoire_C && wii.buttonC() == 1) //Pareil que en haut
{
if(p == 5)
{
p == 0;
}
else
{
p++; //on monte d'un servo
}
}
if(p==0)
{
Servo8.write(angleX); //on met la valeur sortant du nunchuck dans le servo
}
else if(p==1)
{
Servo9.write(angleY);
}
else if(p==2)
{
Servo10.write(angleY);
}
else if(p==3)
{
Servo11.write(angleY);
}
else if(p==4)
{
Servo12.write(angleX);
}
else if(p==5)
{
Servo13.write(angleX);
}
}
memoire_C == wii.buttonC();
memoire_Z == wii.buttonZ();
delay(50);
} |