Go Down

Topic: Programmation robot Arduino (Read 2020 times) previous topic - next topic

Eracett

Bonjour , pour un projet je voudrai faire avancer et reculer un robot via un joystick et un shield moteur :
Arduino.
Voici mon matériel :

-Carte arduino UNO : http://www.gotronic.fr/art-carte-arduino-uno-12420.htm
-Shield joystick : http://www.gotronic.fr/art-shield-joystick-dfr0008-19254.htm
-Shield moteur : http://www.conrad.fr/ce/fr/product/678482/Motor-Power-Shield-pour-Arduino-kit-mont-Velleman-VMA03?ref=searchDetail
-Moteur CC :http://fr.rs-online.com/web/p/motoreducteurs-v-cc/2483867/

Je cherche vraiment le code à implanter parce que je suis un peu perdu .
Merci d'avance.

solfra

Projet Bac ?
cherche d'abord a faire fonctionner les moteurs séparément, puis le joystick, puis le tout ensemble.
Regarde http://eskimon.fr/ebook-tutoriel-arduino.
Propose nous un code et nous t'aiderons.

A toi de jouer !

Eracett

C'est exact j'ai pour le moment réussis à faitre pivoter un servomoteur de droite à gauche avec ce joystick (en m'aidant d'internet ) mais là pour le moment CC je bloque complètement et j'arrive à rien :/
J'aimerai peut être un coup  de pouce du genre un algorithme , ou meme du code si vous avez la connaissance pour faire  en m'expliquant parce que là je stagne et il me reste pas beaucoup de temps donc si vous pouviez m'aider je vous en serai éternellement reconnaissant . Je ferai en sorte de vous fournir les informations dont vous avez besoin. Enfin bref j'espère que vous accepterez de m'aider :/

Merci de votre compréhension .

infobarquee

bonjour,
as tu au moins regardé le pdf sur le site conrad?
et aussi cherché un peu Velleman VMA03 sur le net?
10s et plusieurs codes exemples.
il te reste juste a définir les directions et vitesses via le joystick.
AUCUNE AIDE PAR MP

hameau

#4
Mar 23, 2016, 11:25 pm Last Edit: Mar 23, 2016, 11:42 pm by hameau
Salut,

Il faut faire une relation entre la valeur lue sur un axe du joystick valeur variant de 0 à 1023 et une commande PWM d'un moteur CC via un module shield ou carte pont en H.

Attention aussi au problème d'utilisation de même ports entre les deux shield, car sur un carte uno le shield joystick utilise quasiment tous les ports numériques, donc gros risque de conflit avec shield moteur, regarde affectation des ports shield joystick et shield moteur et voir si il n'y a pas des ports identiques qui sont utilisés.


Exemple de programme :

Code: [Select]

// déclaration LCD et Joystick//
#include <LCD5110_Graph.h>

LCD5110 myGLCD(9,10,11,12,13);

extern uint8_t SmallFont[];

#define PIN_ANALOG_X 0

#define PIN_ANALOG_Y 1

int axe_X;
int axe_Y;

// Déclaration des variables pont en H L298N//

int ENA = 45; //Branché sur Arduino pin 45(output pwm)
int IN1 = 47; //Sur Arduino pin 2
int IN2 = 49; //Sur Arduino pin 3

void setup()
{
  myGLCD.InitLCD();
  myGLCD.setFont(SmallFont);
  
  pinMode(ENA, OUTPUT);
  
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  
  digitalWrite(ENA, LOW);
  
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  
  Serial.begin(9600);  
}

void loop()
{
    axe_X=(analogRead(PIN_ANALOG_X)-506);
    axe_Y=(analogRead(PIN_ANALOG_Y)-515);
    myGLCD.print("Joystick", 10, 0);
    myGLCD.print("Axe X:", 2, 10);
    myGLCD.printNumI(axe_X,40,10,4);
    myGLCD.print("Axe Y:", 2, 20);
    myGLCD.printNumI(axe_Y,40,20,4);
    if (axe_X < -10)
    {
    int pwm=map(axe_X,0,-506,150,255);
    avant(pwm);
    Serial.println(axe_X);
    }
    else if (axe_X >10)
    {
     int pwm=map(axe_X,0,517,150,255);
     arriere(pwm);
     Serial.println(axe_X);
    }
    else
    {
    arret();
    }
        
    myGLCD.update();
    delay(10);
  
}

// Définition des procédures gestion rotation du moteur A//

void avant (int PWM)
{
  digitalWrite(IN1, HIGH);
  digitalWrite(IN2, LOW);
  analogWrite(ENA, PWM);
}
void arret()
{
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, LOW);
}
void arriere(int PWM)
{
  digitalWrite(IN1, LOW);
  digitalWrite(IN2, HIGH);
  analogWrite(ENA, PWM);
}


Eracett

Bonjour tout d'abord excusez moi pour cette absence et donc aucune réponse de ma part . Je suis rentré chez moi et j'ai tout mon matériel avec moi afin de faire les test et votre programme hameau à l'air très complet seul problème je ne sais pas à quoi correspond les ENA IN1 IN2 sur mon modèle de moteur shield il me semble que c'est avec les cavalier à placer sur les pins mais je ne sais pas sur lequel le placer , si vous avez la réponse je vous en serai très reconnaissant de me la faire partager .

Merci d'avance

yogui71

Bonjour,

dans ton premier post tu parles simplement de moteur CC et dans un autre, tu parles d'un servo moteur.

Tu peux dire qui fait quoi dans ton projet ?

Eracett

Mon moteur CC fait avancer et reculer le robot et le servomoteur oriente les roues à droites et à gauche

-Standby

#8
Apr 23, 2016, 09:58 pm Last Edit: Apr 23, 2016, 09:58 pm by -Standby
C'est sur que quand on se lance sans les bases tout deviens très compliqué.

Quote
je ne sais pas à quoi correspond les ENA IN1 IN2 sur mon modèle de moteur shield il me semble que c'est avec les cavalier à placer sur les pins mais je ne sais pas sur lequel le placer , si vous avez la réponse je vous en serai très reconnaissant de me la faire partager.
Cela confirme bien ce que je viens de dire plus haut.

IN2 IN1 sont des entrées logique de ton pont en H, en respectant une table logique il est possible de choisir le sens de rotation du moteur.

ENA est aussi une entrée logique, elle a pour but d'activer le pont en H, un niveau bas le désactive, un niveau haut l'active. En réalité ENA sert a contrôler la vitesse de rotation du moteur.
The Mind is like a parachute it works best when opened.

Eracett

Du coup avec le programme que m'as fournit "hameau" je place les cavaliers ou ? sur quels pins ? avec ce moteur shield : http://www.conrad.fr/ce/fr/product/678482/Motor-Power-Shield-pour-Arduino-kit-mont-Velleman-VMA03?ref=searchDetail .

Go Up