2 Capteurs Sharp sur Servo-moteur

Bonjour,
Dans le cadre d'un projet scolaire, moi et mes collègues, on a pour but de creer un mini robot sumo.
La tache que j'ai reçue est de de programmer la carte Arduino Uno Rev 3 afin que mes 2 capteurs Sharp GP2Y0A21 soient fixés sur un Servo-moteur et que celui-ci pivote jusqu'a la detection d'un robot adversaire et puis qu'il s'arrete. Et quand le robot adverse est detecté, ma carte est censée calculer la distance et la position du servo-moteur.
Etant novice sur Arduino et sans avoir reçu de cours expliquant le fonctionnement d'Arduino, j'ai pu par mes moyens apprendre a utiliser arduino et j'ai fait un programme mais il ne marche pas.
Pouvez vous m'aider SVP et m'expliquer ou j'ai fait des erreurs et comment jpourrai y remedier :slight_smile:
Merci d'avance

Voici mon programme :

#include <Servo.h>

Servo myservo; // create servo object to control a servo
// a maximum of eight servo objects can be created

int pos = 0; // variable to store the servo position
int ledPin = 13; // select the pin for the LED

const int maxDist = 75;
const int sensor1Pin = A0;
const int sensor2Pin = A1;

int sensorValue = 0; // variable to store the value coming from the sensor

int sensor1Val = 0;
int sensor2Val = 0;
int servoPos = 0;
int servoRotateL = 0;

void setup()
{
// declare the ledPin as an OUTPUT:
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
myservo.attach(10); // attaches the servo on pin 10 to the servo object
}

void loop()
{
checkRotating();
sensor1Routine();
checkRotating();
sensor2Routine();
}

void checkRotating()
{
if (servoPos >= 180)
servoRotateL = 0;
else
servoRotateL = 1;
}

void sensor1Routine()
{
sensor1Val = analogRead(sensor1Pin);
int dist = getDistance(sensor1Val);
if (dist <= maxDist)
{
if (servoRotateL == 1)
servoPos++;
else
servoPos--;
myservo.write(servoPos);
}
}

void sensor2Routine()
{
sensor2Val = analogRead(sensor2Pin);
int dist = getDistance(sensor2Val);
if (dist <= maxDist)
{
if (servoRotateL == 1)
servoPos++;
else
servoPos--;
myservo.write(servoPos);
}
}

int getDistance(int Val)
{
return (int) (28943.f * pow((float)Val, -1.314));
}

Salut, premier point, les balises code STP (le # au dessus dans les icônes), c'est plus lisible, deuxième points, je pense que le soucis c'est que tu appel tes fonctions (checkRotating(); sensor1Routine(); checkRotating(); sensor2Routine():wink: avant même qu'elle ai été déclaré, donc il faut que tu remonte la déclarations de tes fonctions juste avant ton setup, sinon dit nous ce qui ne marche pas ou si la compile ne passe pas, quel sont les erreurs de compilation.

Skizo.

le compilateur devrait pouvoir se débrouiller quand même avec une déclaration de fonction placée en fin de code.

Le code compile sans problème.
Ce qui serait bien c'est que l'intéressé nous explique ce qui ne marche pas. Parce de notre coté, comme on a pas son matériel on ne risque pas de pouvoir tester l'ensemble.

En faite lorsque je compile, il n'y a rien qui se passe. Il n'y a aucune erreur "logicielle" et en ce qui concerne le materiel :
Le servo-moteur vibre mais ne tourne pas et le capteur, je sais pas si il capte ou pas vu que le servo-moteur ne tourne pas.

Comment est alimenté le servomoteur ?

Le servo-moteur est connecté sur la carte Arduino qui est reliée par USB

Les servo peuvent tirer pas mal de courant il serait judicieux de les alimenter séparément.
Ensuite, en plaçant quelques Serial.print dans le programme tu pourrais peut être comprendre si tes capteurs fonctionnent ou pas.
As-tu seulement vérifié avant de tout monter que les capteurs retourne une distance correcte?

oui j'ai tester mes capteurs séparément avec un serial.print et mon servo-moteur aussi
Merci de vos réponses :slight_smile: je vais essayer de voir si sa viens pas de l'alimentation ou de la déclaration des fonctions avant le setup je vous tiendrais au courant :slight_smile: