Bonjour, mon projet consiste a faire un robot tondeuse avec arduino (sans lame) juste pour faire une simulation. il fonctionne avec un capteur de magnétisme et des aimants pour limiter le terrain. Je suis très mauvais en programmation et j'ai quelques problèmes , (voir code) deja les 2 moteurs devraient fonctionner sans interruption or le moteur droit s'arrete et redemarre sans arrêt meme sans la detection d'aimants. Le code est surement mal optimisé.
int moteurR = 3;
int moteurL = 5;
int valeur1=160;
int valeur0=0;
int heState = 0;
long randNumber;
int hePin = 4;
void setup() {
pinMode(moteurR, OUTPUT);
pinMode(moteurL, OUTPUT);
pinMode(hePin, INPUT);
}
void loop() {
heState = digitalRead(hePin);
if (heState == LOW){ // si le capteur detecte un aimant
analogWrite(moteurR, valeur0); // arreter le moteur droit
randNumber = random(1000, 2000); // attendre entre 1 et 2 secondes
delay(randNumber);
}
else{
analogWrite(moteurL, valeur1);
analogWrite(moteurR, valeur1);
}
}
Bonjour, mon projet consiste a faire un robot tondeuse avec arduino (sans lame)
Je suis très mauvais en programmation et j'ai quelques problèmes
Je traduis en ne pensant pas me tromper : J'ai à faire un projet scolaire (1ere ou terminale) et je ne le l'annonce pas comme un projet scolaire.
Tu te doutera que le ressenti est désagréable, c'est peut être une négligence mais ce peut être aussi une tentative de triche à l'examen.
Tout n'est pas perdu mais dorénavant il faut jouer cartes sur table.
Dans le message épinglé "Règles du forum francophone" il y a un passage sur les projets scolaires je te conseille de le lire en urgence et le message en entier.
Ceci n'est pas un projet scolaire mais je me suis inscrit a des cours d'arduino et j'ai récupéré un capteur a effet hall donc je fais des experiences mais rien de scolaire
Les connexions sont bonnes car quand j'essaie d'enlever la partie randNumber et delay tout se passe bien le moteur s'arrete seulement quand il detecte un aimant mais dès lors que je rajoute un delai tout va mal , le moteur se met a s'arreter et a redemarrer sans arret sans detection de l'aimant.
Cordialement.
Antoine_b89:
Ceci n'est pas un projet scolaire mais je me suis inscrit a des cours d'arduino et j'ai récupéré un capteur a effet hall donc je fais des experiences mais rien de scolaire
Alors désolé, mais les projets scolaires commencent très tôt cette année.
L'année prochaine je passe en terminal avec option ISN donc je dois apprendre la programmation mais ceci n'est pas un projet scolaire mais un entrainement.
Très bonne initiative.
Pas de confusion il n'y a pas de langage arduino, ce n'est que du C/C++.
Ce qui existe ce sont des fonctions (ou des classes) pour servir d'interface entre le microcontroleur et le matériel.
L'IDE n'est qu'une sur-couche à un ensemble de programmes (l'éditeur, le compilateur, le chargeur de programme dans le micro, etc). Elle gère tout pour toi et tu n'as à t'occuper que d'écrire le code.
Au départ un tuto de C/C++ pour débutant est fortement utile pour connaître les bases.
Le tuto d'Eskimon est très fortement recommandé tant pour ses explications logicielles que matérielles, openclassroom est aussi un site très utile.
Bon courage.
(notez que la doc qui date de 2005 (13 ans) dit:" These parts are no longer in production The device should not be purchased for new design applications. Samples are no longer available"...)
Alors voila j'essaie d'avancer mais j'ai un problème, avec cet extrait de code les moteurs roulent et quand il detectent un aimant s'arrete puis redemarre après mais maintenant je voudrais qu'il y est juste le moteurR qui s'arrete pendant une durée de 1 a 2 secondes puis redemarre mais je ne sais pas a quel endroit mettre le delai.
Code:
if (heState == LOW) { // si le capteur detecte un aimant
analogWrite(moteurR, valeur0);
analogWrite(moteurL, valeur0);
Commencez par voir si votre détecteur fonctionne. enlevez les moteurs et tout le reste, conservez juste le capteur (il faut sans doute une résistance) et écrivez un bout de code qui teste la présence d'un aimant. Tant que ça ne marche pas, pas la peine d'aller plus loin
Antoine_b89:
Le capteur marche c'est sur regarder mon dernier message que vous avez peut-etre pas vu
le mieux ce serait de ne pas mettre de delay() mais en première approche
if (heState == LOW) { // si le capteur detecte un aimant
analogWrite(moteurR, valeur0);
analogWrite(moteurL, valeur1);
delay(2000); // on bloque le moteur droit 2 secondes pour tourner puis on redémarre
analogWrite(moteurR, valeur1);
} else {
analogWrite(moteurR, valeur1);
analogWrite(moteurL, valeur1);
}
C'est très bizarre quand j'utilise ce code ci les 2 moteurs tournent
if (heState == LOW) { // si le capteur detecte un aimant
analogWrite(moteurR, valeur0);
analogWrite(moteurL, valeur0);
} else {
analogWrite(moteurR, valeur1);
analogWrite(moteurL, valeur1);
}
}
mais avec ce code dès le demarrage seulement le moteur gauche marche...
if (heState == LOW) { // si le capteur detecte un aimant
analogWrite(moteurR, valeur0);
analogWrite(moteurL, valeur1);
delay(2000); // on bloque le moteur droit 2 secondes pour tourner puis on redémarre
analogWrite(moteurR, valeur1);
} else {
analogWrite(moteurR, valeur1);
analogWrite(moteurL, valeur1);
}
Les moteurs sont juste alimentés avec les pin 3 et 5 et le heState ne peut pas toujours etre en low car avec le premier code ci-dessus le code fonctionne normalement