Robotique-Projet
Bonjour et bienvenu sur le forum ROBOTIQUE-PROJET

Merci de nous rejoindre, pour avoir accès aux forum en entier,

il suffis juste de s'inscrire sa prends 2 minutes, et bien sur de faire sa

présentation, au plaisir de se croisé sur le forum.

Hésité pas a passez me voir sur ma chaîne Twitch pour plus de contenue https://www.twitch.tv/azary_darkbest
Robotique-Projet
Bonjour et bienvenu sur le forum ROBOTIQUE-PROJET

Merci de nous rejoindre, pour avoir accès aux forum en entier,

il suffis juste de s'inscrire sa prends 2 minutes, et bien sur de faire sa

présentation, au plaisir de se croisé sur le forum.

Hésité pas a passez me voir sur ma chaîne Twitch pour plus de contenue https://www.twitch.tv/azary_darkbest
Robotique-Projet

Forum sur la Robotique & Informatique & Programmation

REJOIGNEZ MA CHAÎNE TWITCH NE MANQUEZ RIEN DE MES GAMME PLAYER
AFIN DE ME SOUTENIR POUR L'AFFILIATION.


Nos partenaires




Rejoignez Notre Discord Les amies.

Vous me retrouverez sur le pseudo ๖̶̶̶ۣۣۜζ͜͡Dark Best

Le Deal du moment : -20%
Drone Dji DJI Mini 4K (EU)
Voir le deal
239 €

Vous n'êtes pas connecté. Connectez-vous ou enregistrez-vous

Voir le sujet précédent Voir le sujet suivant Aller en bas  Message [Page 1 sur 1]

Dark Best

Dark Best
Fondateur
Fondateur
Etape 1 : Mise en place de l’environnement


Sur Windaub rien de plus simple, il suffit de télécharger l’IDE Arduino ici

Concernant la configuration la encore c’est très simple, il suffit de :


  • Choisir le modèle de sa carte dans la liste disponible du menu Tools > board
  • Définir le port de communication utilisé dans Tools >Serial Port

De plus il existe un système de débug via le port série via le menu
Tools >Serial Monitor, celui ci permet de debugguer son programme
assez facilement a l’aide de la fonction Serial.write (XXX). Nous
pouvons même simuler l’envoi de commande via une entrée standard toute
prête.

Etape 2 : Premier programme : Test des moteurs


Voici un petit code permettant de tester vos branchements moteurs

Code:
int E1 = 5; //M1 Speed Control
int E2 = 6; //M2 Speed Control
int M1 = 4; //M1 Direction Control
int M2 = 7; //M1 Direction Control

int speed = 200;

void run_motor()
{
analogWrite (E2, speed);
digitalWrite(M2,LOW);
analogWrite (E1, speed);
digitalWrite(M1,HIGH);
}
void setup(void)
{
int i;
for(i=6;i<=9;i++)
pinMode(i, OUTPUT);

Serial.begin(19200); //Set Baud Rate
}
void loop(void)
{
run_motor();
}


Un programme arduino se compose de deux fonctions principales. Une
fonction setup correspondant a l’initialisation et une fonction loop
correspondant au programme qui sera exécuté comme son nom l’indique en
continue.

Dans la fonction setup, nous définissons que les pin correspondant
aux commandes moteurs sont en mode output. En effet nous avons besoin
d’envoyer des valeurs a nos moteurs, donc en toute logique nous
choisissons le mode output. Ici les pins correspondant aux moteurs vont
de 4 a 7, attention selon la version de votre board, ces pins
peuvent être différents, ceci est a déterminer a l’aide des indications
sur les datasheets ou plus simplement directement sur la carte
.
Enfin le serial.begin permet de définir la vitesse de transmission du
port série. Celle ci doit être la même dans le mode sérial monitor si
vous voulez communiquer de façon correcte avec votre carte.

Dans la fonction loop, nous appelons la fonction qui active les
moteurs. AnalogWrite comme son nom l’indique permet d’écrire sur un pin
analogique tandis que le DigitalWrite permet d’écrire sur un pin
digitale. Ainsi sur le pin de direction on peut envoyer LOW ou HIGH
selon que vous vouliez mettre vos moteurs en marche arrière ou avant,
ensuite pour ce qui est des pins de vitesse, on y définit une vitesse
celle ci étant en bytes la fourchette de valeur est 0 – 255.

Vous allez me dire qu’il y a un problème dans mon code ? Et bien oui
mes deux moteurs ne semblent pas tourner dans le même sens. Et bien pas
vraiment, au cours de mon montage j’ai donc branché deux moteurs en
parallèles sur chaque contrôleur moteur ( Il y en a que deux sur la
carte, 4 moteurs donc pas le choix). Cependant j’ai fait mes soudures au
hasard, ainsi il s’est avéré que mes deux moteurs ne sont pas branchés
dans le même sens de polarité. Ainsi si je veux aller en marche avant
avec l’un je dois lui envoyer LOW, tandis que l’autre a besoin de HIGH.
Ceci n’est pas très gênant étant donné qu’on programme notre petite
fonction une fois et qu’après on n’y touche plus.

Pour tester le programme rien de plus simple, il y a un bouton upload.
Attention sur certaine carte dont la Romeo, il est nécessaire de reset
la carte entre chaque nouveau upload de code. Pour cela, il y a en
général un bouton sur la carte. Ainsi il vous suffira d’appuyer sur le
bouton de reset brièvement juste avant de lancer l’upload.

Finalement, on débranche son robot, on enclenche l’interrupteur et on
espère que cela fonctionne, sinon a vous la chasse au faux contact,
mauvaise soudure, etc..

Etape 3 : Intégration de capteur et arrêt de la plateforme a la rencontre d’un obstacle


capteur utilisé : Module capteur de distance infrarouge Sharp GP2Y0A21 (datasheet)

Premier programme avec Arduino : Moteur, Capteur et évitement d’obstacle Capteur_sharp

Nous allons tout d’abord brancher notre capteur. Celui que nous
utilisons est analogique, nous allons donc le branche sur les pins
analogique. Cependant votre bon sens vous dira que si celui ci est
digital vous devrez utiliser les pins correspondant.

Concernant notre cher capteur, pour le brancher rien de plus simple,
un connecteur JST est deja plugguer sur le capteur, donc plus qu’a le
brancher de façon très simple. Tout d’abord en lisant notre datasheet,
nous repérons que le cable rouge est le plus (Vcc sur le schéma), Nous
devons brancher ce Vcc sur le pin 5V de l’analogique, le Gnd sur le Gnd
et enfin le Vo sur le S. Dans mon cas, j’ai branché mon capteur sur le
pin 0.

Premier programme avec Arduino : Moteur, Capteur et évitement d’obstacle Capteur_sharp_connectorextrait du datasheet du capteur sharp

Voici un petit programme très simple permettant de tester son bon fonctionnement :

Code:
//Standard PWM DC control

int E1 = 5; //M1 Speed Control
int E2 = 6; //M2 Speed Control
int M1 = 4; //M1 Direction Control
int M2 = 7; //M1 Direction Control

int front_sensor = 0; // pin analog 0
int speed = 200;

// mootor functions

void run_motor()
{
 analogWrite (E2, speed);
 digitalWrite(M2,LOW);
 analogWrite (E1, speed);
 digitalWrite(M1,HIGH);
}

void stop_motor ()
{
 analogWrite (E1, 0);
 analogWrite (E2, 0);
}

// sensor functions

boolean detect_obstacle (int sensor)
{
 if (analogRead(sensor) > 200)
 return true;
 return false;
}

void setup(void)
{
 int i;
 for(i=6;i<=9;i++)
 pinMode(i, OUTPUT);

Serial.begin(19200); //Set Baud Rate
}
void loop(void)
{

if (detect_obstacle (front_sensor) == false)
 {
 run_motor();
 }
 else
 {
 stop_motor ();
 }
}


Dans ce code, nous avons donc une fonction permettant de détecter les
obstacles. Dans le cas ou nous détectons un obstacle, nous stoppons le
robot. Le capteur est analogique, nous utilisons donc la fonction
AnalogRead, le paramètre qui lui est passé correspondant a la valeur du
pin sur lequel est branché le capteur a savoir 0. Enfin on définit le
fait de tomber sur un obstacle lorsqu’on est a une certaine distance de
celui ci. Il faut savoir que plus la valeur renvoyée par le capteur et
plus l’obstacle sera proche. Donc attention la valeur renvoyée est une
tension correspondant au voltage .

https://www.youtube.com/c/DarkBest

Invité

avatar
Invité
C'est super tu avances sur ton travail de plus en plus chaque jours.

Ps : J'ai édité

Dark Best

Dark Best
Fondateur
Fondateur
Merci Tuc , je fait de mon mieux.

https://www.youtube.com/c/DarkBest

Dark Best

Dark Best
Fondateur
Fondateur
Les images est les liens son accessible pour tous dorai n'avans , donc résolut.

https://www.youtube.com/c/DarkBest

Contenu sponsorisé


Voir le sujet précédent Voir le sujet suivant Revenir en haut  Message [Page 1 sur 1]

Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum