Aller au contenu


Photo
- - - - -

Projet de fin d'année Très important

Programmation 4wd sensor

  • Veuillez vous connecter pour répondre
74 réponses à ce sujet

#1 Juventin19

Juventin19

    Nouveau membre

  • Membres
  • 38 messages

Posté 08 mars 2019 - 06:20

Bonjour à tous, 

J'espère que vous allez bien. Je tiens a vous prévenir que je suis un débutants

Je suis en Terminale et j'ai projet important faire. Mon projet consiste a programmé 4 moteurs à courant continu, capteur ultrasons et d'humidité et  qui permettras de rouler sur le sable afin de récolté des petits déchets(mégots,etc,..). Le capteurs ultrason permettras que le robots ne se cogne pas contre les mûres (fait demi tour)  et le capteur d'humidité afin qu'il ne tombe pas dans l'eau (fait demi tour quand t il détecteras le sol mouillé).

Les composants utilisés sont:

-une carte Arduino Simulino UNO

- une carte adafruit motor shield v2.3 

- une carte base shield v2.1 pour les capteurs

-les moteurs DC 

-une batterie 12V 

-un capteur grove ultrasonic Ranger V1.0

-un capteur d'humidité grove Moisure sensor 

(voir photos ci-dessus)

 

Mon problème c'est la liaison entre les capteurs et les moteurs je n'arrive pas a les liées 

j'ai fait début de code , mais sa ne marche point car j'utilise un base shield et je ne comprend pas  le fonctionnement , je vous met ci-dessous les code.

Voici le code moteur et capteur ultrason:

 #include <Wire.h>

#include <Adafruit_MotorShield.h> 
#include "utility/Adafruit_MS_PWMServoDriver.h"
Adafruit_MotorShield AFMS = Adafruit_MotorShield(); 
Adafruit_DCMotor *myMotor = AFMS.getMotor(1);
Adafruit_DCMotor *myMotor2 = AFMS.getMotor(2);
 
#include "Ultrasonic.h"
 
Ultrasonic ultrasonic(7);
void setup() {
  AFMS.begin();  
Serial.begin(9600);
  myMotor->setSpeed(100);
  myMotor2->setSpeed(100);
 
}
 
void loop() {
 
long distance;
 
 
    distance = ultrasonic.MeasureInCentimeters();
    Serial.println(" cm");
    delay(250);
    
  if(distance < 25){ 
  myMotor->run(FORWARD);
  myMotor2->run(BACKWARD);
}
  else{
    delay(40);
    myMotor->run(FORWARD);
    myMotor2->run(FORWARD);
  }
}
--------------------------------------------------------------------------------------------------------------------
et voici celle du capteur d'humidité
#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_MS_PWMServoDriver.h"
Adafruit_MotorShield AFMS = Adafruit_MotorShield(); 
Adafruit_DCMotor *myMotor = AFMS.getMotor(1);
Adafruit_DCMotor *myMotor2 = AFMS.getMotor(2);
int capPin = A0;   
int valh = 0;  
 
void setup() {
  pinMode (capPin,INPUT);
  Serial.begin(9600);
  AFMS.begin();
  myMotor->setSpeed(100);
  myMotor2->setSpeed(100);  
}
 
void loop() {
  
  valh = analogRead(capPin);            
  Serial.print("Valeur mesure par le capteur d'humidite = " ); 
  Serial.println(valh);
  delay(1000);                                         
  
  if(valh < 25){ 
  myMotor->run(FORWARD);
  myMotor2->run(BACKWARD);
}
  else{
    delay(40);
    myMotor->run(FORWARD);
    myMotor2->run(FORWARD);
  
}
}
 
------------------------------------------------------------------------------------
ça Serait très cool que vous m'aidiez car c'est un projet avec  un gros coefficient en jeu pour le bac (STI2D)
Merci d'avance et vous souhaite une agréable journée
 
Photos des composant:
  
 

Fichier(s) joint(s)



#2 Juventin19

Juventin19

    Nouveau membre

  • Membres
  • 38 messages

Posté 08 mars 2019 - 06:21

il y a 4 moteurs 



#3 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 7 905 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 08 mars 2019 - 09:45

Le base shield te permet de " facilement " connecter les entrées sorties de ton arduino sur les capteurs. 


Les entrée sorties de ta arduino sont indiquées sur les connecteurs blanc du shield. 

Pour utiliser ton capteur ultrason avec ce code : 

 #include <Wire.h>

#include <Adafruit_MotorShield.h> 
#include "utility/Adafruit_MS_PWMServoDriver.h"
Adafruit_MotorShield AFMS = Adafruit_MotorShield(); 
Adafruit_DCMotor *myMotor = AFMS.getMotor(1);
Adafruit_DCMotor *myMotor2 = AFMS.getMotor(2);

#include "Ultrasonic.h"

Ultrasonic ultrasonic(7);
void setup() {
  AFMS.begin();  
Serial.begin(9600);
  myMotor->setSpeed(100);
  myMotor2->setSpeed(100);

}

void loop() {

long distance;


    distance = ultrasonic.MeasureInCentimeters();
    Serial.println(" cm");
    delay(250);
    
  if(distance < 25){ 
  myMotor->run(FORWARD);
  myMotor2->run(BACKWARD);
}
  else{
    delay(40);
    myMotor->run(FORWARD);
    myMotor2->run(FORWARD);
  }
}

 

 
il faut le brancher sur le connecteur blanc indiqué " 7 " . 
 
Est ce que tu arrives à lire les valeurs donnée par le capteur et à les afficher sur le moniteur série ? 

Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !

 

Les réalisations de Mike118  

 

 

 


#4 Juventin19

Juventin19

    Nouveau membre

  • Membres
  • 38 messages

Posté 09 mars 2019 - 10:41

Voila ceux que sa me montre:

"Arduino : 1.8.8 (Windows 10), Carte : "Arduino/Genuino Uno"
 
Le croquis utilise 4878 octets (15%) de l'espace de stockage de programmes. Le maximum est de 32256 octets.
Les variables globales utilisent 470 octets (22%) de mémoire dynamique, ce qui laisse 1578 octets pour les variables locales. Le maximum est de 2048 octets.
Erreur d'ouverture du port série « COM3 ». (Port busy)
Erreur d'ouverture du port série « COM3 ». (Port busy)
Erreur d'ouverture du port série « COM3 ». (Port busy)"


#5 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 7 905 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 09 mars 2019 - 11:01

Donc tu n'arrives pas à programmer la carte arduino... 

Tu as des trucs de branché sur la carte ?  Genre sur sur la prise uart? Tu es sûr que ta carte arduino est bien sur le port com 3 ? 

 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !

 

Les réalisations de Mike118  

 

 

 


#6 pmdd

pmdd

    Membre passionné

  • Membres
  • PipPipPip
  • 393 messages
  • Gender:Male

Posté 10 mars 2019 - 04:18

Des mûres au bord de la mer...ça serait étonnant... :yahoo:

Je plaisante, ton projet est très intéressant, tu trouveras ici les bonnes personnes pour t'aider et moi je vais apprendre en même temps que toi.


Découpeur de gâteau, ouvreur de yaourt, allumeur de bougies, la collection complète de pmdd !


#7 Juventin19

Juventin19

    Nouveau membre

  • Membres
  • 38 messages

Posté 10 mars 2019 - 09:03

Oui la carte est bien com 3 mais je vais retravaillé mardi quand je serais en projet

#8 Juventin19

Juventin19

    Nouveau membre

  • Membres
  • 38 messages

Posté 12 mars 2019 - 09:48

 

Le base shield te permet de " facilement " connecter les entrées sorties de ton arduino sur les capteurs. 


Les entrée sorties de ta arduino sont indiquées sur les connecteurs blanc du shield. 

Pour utiliser ton capteur ultrason avec ce code : 

 #include <Wire.h>

#include <Adafruit_MotorShield.h> 
#include "utility/Adafruit_MS_PWMServoDriver.h"
Adafruit_MotorShield AFMS = Adafruit_MotorShield(); 
Adafruit_DCMotor *myMotor = AFMS.getMotor(1);
Adafruit_DCMotor *myMotor2 = AFMS.getMotor(2);

#include "Ultrasonic.h"

Ultrasonic ultrasonic(7);
void setup() {
  AFMS.begin();  
Serial.begin(9600);
  myMotor->setSpeed(100);
  myMotor2->setSpeed(100);

}

void loop() {

long distance;


    distance = ultrasonic.MeasureInCentimeters();
    Serial.println(" cm");
    delay(250);
    
  if(distance < 25){ 
  myMotor->run(FORWARD);
  myMotor2->run(BACKWARD);
}
  else{
    delay(40);
    myMotor->run(FORWARD);
    myMotor2->run(FORWARD);
  }
}

 

 
il faut le brancher sur le connecteur blanc indiqué " 7 " . 
 
Est ce que tu arrives à lire les valeurs donnée par le capteur et à les afficher sur le moniteur série ? 

 

j'ai réussi a afficher les valeurs. 

j'ai du mettre un "Serial.print(distance);" avant "Serial.print(cm)" mais les valeurs s'affichent

Mais je n'arrive toujours pas a faire marcher le moteur en fonction du moteur



#9 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 7 905 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 12 mars 2019 - 11:52

j'ai réussi a afficher les valeurs. 

j'ai du mettre un "Serial.print(distance);" avant "Serial.print(cm)" mais les valeurs s'affichent

Mais je n'arrive toujours pas a faire marcher le moteur en fonction du moteur

 

ok donc maintenant on sait que :

Tu es capable de progrmmer ta carte 

Tu as un programme qui marche 

Tu sais l'afficher des données avec serial print: 

Tu sais faire fonctionner ton capteur ultrasons. 


Est ce que tu as déjà fais tourner tes moteurs dans un code séparé ? 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !

 

Les réalisations de Mike118  

 

 

 


#10 Juventin19

Juventin19

    Nouveau membre

  • Membres
  • 38 messages

Posté 12 mars 2019 - 01:19

 

ok donc maintenant on sait que :

Tu es capable de progrmmer ta carte 

Tu as un programme qui marche 

Tu sais l'afficher des données avec serial print: 

Tu sais faire fonctionner ton capteur ultrasons. 


Est ce que tu as déjà fais tourner tes moteurs dans un code séparé ? 

Oui j'ai réussi a faire tourner moteurs dans un code séparé voici:

 

#include <Wire.h>
#include <Adafruit_MotorShield.h>
#include "utility/Adafruit_MS_PWMServoDriver.h"
 
Adafruit_MotorShield AFMS = Adafruit_MotorShield(); 
 
Adafruit_DCMotor *Motor1 = AFMS.getMotor(1);
Adafruit_DCMotor *Motor2 = AFMS.getMotor(2);
Adafruit_DCMotor *Motor3 = AFMS.getMotor(3);
Adafruit_DCMotor *Motor4 = AFMS.getMotor(4);
 
void setup() {
 AFMS.begin();
 
}
void loop(){
  //run motors forward
  Motor1->setSpeed(150);
  Motor1->run(FORWARD);
  Motor2->setSpeed(150);
  Motor2->run(FORWARD);
  Motor3->setSpeed(150);
  Motor3->run(FORWARD);
  Motor4->setSpeed(150);
  Motor4->run(FORWARD);
 
 
  Motor1->run(RELEASE);
  Motor2->run(RELEASE);
  Motor3->run(RELEASE);
  Motor4->run(RELEASE);
 
 
}


#11 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 7 905 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 12 mars 2019 - 02:38



#include <Wire.h>
#include <Adafruit_MotorShield.h> 
#include "utility/Adafruit_MS_PWMServoDriver.h"
#include "Ultrasonic.h"

Ultrasonic ultrasonic(7);
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
Adafruit_DCMotor *Motor1 = AFMS.getMotor(1);
Adafruit_DCMotor *Motor2 = AFMS.getMotor(2);
Adafruit_DCMotor *Motor3 = AFMS.getMotor(3);
Adafruit_DCMotor *Motor4 = AFMS.getMotor(4);

 
void setup() {
 Serial.begin(9600);
 AFMS.begin(); 
}

void loop(){

  long distance;
  distance = ultrasonic.MeasureInCentimeters();
  Serial.print(distance);
  Serial.println(" cm");
   
  if(distance > 25 ) {
  //run motors forward
  Motor1->setSpeed(150);
  Motor1->run(FORWARD);
  Motor2->setSpeed(150);
  Motor2->run(FORWARD);
  Motor3->setSpeed(150);
  Motor3->run(FORWARD);
  Motor4->setSpeed(150);
  Motor4->run(FORWARD);
 } else {
 //run motors backward
  Motor1->setSpeed(150);
  Motor1->run(BACKWARD);
  Motor2->setSpeed(150);
  Motor2->run(BACKWARD);
  Motor3->setSpeed(150);
  Motor3->run(BACKWARD);
  Motor4->setSpeed(150);
  Motor4->run(BACKWARD);
 }
 
}

Si tu essayes le code suivant ça te donne quoi ? 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !

 

Les réalisations de Mike118  

 

 

 


#12 Juventin19

Juventin19

    Nouveau membre

  • Membres
  • 38 messages

Posté 13 mars 2019 - 01:38

Alors jai testé le code ton code. La bonne nouvelle cest le capteur ultrason agit sur les moteurs. Le problème cest que les moteurs tournent bien quand le capteur ultrason est au dessus de 25 cm mais arrivé en dessous les moteurs commence à sarrête et reprendre en une 1/2 seconde

#13 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 7 905 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 13 mars 2019 - 02:15

Peux tu ajouter un petit texte dans le if et un petit texte dans le else avec serial.println

genre " avance "  et " recule" et afficher ce qu'il se passe dans le moniteur série ? 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !

 

Les réalisations de Mike118  

 

 

 


#14 Juventin19

Juventin19

    Nouveau membre

  • Membres
  • 38 messages

Posté 13 mars 2019 - 03:06

Comment ? Après le «  Motor4->run(FORWARD); » je met un Serial println (avance) et après le Motor4->run(BACKWARD); je met un serial println(recule) ?

#15 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 7 905 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 13 mars 2019 - 06:23

oui par exemple =) mais avec des ' " " '  =>  "avance" / "recule"


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !

 

Les réalisations de Mike118  

 

 

 


#16 Juventin19

Juventin19

    Nouveau membre

  • Membres
  • 38 messages

Posté 27 mars 2019 - 04:51

j'ai un problème avec ma carte adafruit, elle ne marche plus......

Pourtant j'ai mis les 4 moteurs dans les bons port mais sa ne marche pas rien ne tourne 

Je sais pas quoi faire



#17 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 7 905 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 27 mars 2019 - 06:06

est ce que ce n'est pas un problème de carte arduino ? 

 

Est ce que tu as la carte arduino qui répond et qui affiche du texte sur le moniteur série ? 

Est ce que tu as bien l'alimentation des moteurs qui est branchée ? 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !

 

Les réalisations de Mike118  

 

 

 


#18 Juventin19

Juventin19

    Nouveau membre

  • Membres
  • 38 messages

Posté 30 mars 2019 - 08:39

J'ai essayé avec plusieurs carte arduino, mais ne rien marche il y a juste la carte  shield est super chaud.

 

Elle répond bien sur le moniteur, du moins le PC détecte la carte 

 

Et l'alimentation des moteurs est bien branchée, la led du shield est bien allumé



#19 Forthman

Forthman

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 919 messages
  • Gender:Not Telling
  • Location:Montauban (82)

Posté 30 mars 2019 - 09:33

super chaud ça fait quoi en °C ?

 

vous avez vérifié que votre carte moteur support l'intensité de votre moteur ?



#20 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 7 905 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 30 mars 2019 - 03:36

Carte shield super chaud = pas bon signe ... 

En avez vous une de rab ? 
 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !

 

Les réalisations de Mike118  

 

 

 






0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users