Différences entre les versions de « Moustaches »

De VoWiki
Aller à la navigation Aller à la recherche
 
(140 versions intermédiaires par 2 utilisateurs non affichées)
Ligne 1 : Ligne 1 :
[[Image:IMG_4198.JPG]][[Image:IMG_4193.JPG]]<center>Moustaches</center>
{{Projet}}
 
[http://www.vorobotics.com/wiki/index.php?title=Utilisateur:Gillou_Lec Page d'accueil Gilles]
 
<center>'''<big><big>Robot détecteur d'obstacles</big></big>'''</center>
 
[[Fichier:4198.JPG|400px|border]][[Fichier:IMG_4193.JPG|400px|border]][[Fichier:Rm image.png|360px|border]]
 
[[Category: Robots]]
[[Category:Programmation]]
[[Category:Electronique]]


<center>Robot détecteur d'obstacles</center>




[[Image:|thumb|<center></center>]]


= VoLAB =
= VoLAB =
[[Fichier:Volab.JPG]]
= Assocation VoRoBoTics =
= Assocation VoRoBoTics =
Date : 23/01/2016
Date : 23/01/2016
Ligne 24 : Ligne 34 :


Dans ce document sont abordés :
Dans ce document sont abordés :
Le robot moustache est totalement conçu sous FreeCad en téléchargement à cette adresse [https://bitbucket.org/robot-moustache/robot_moustache_freecad/src/master/ bitbucket].
Vidéo présentant le robot moustache sous FreeCad à cette adresse [https://youtu.be/Id2Cec6sMFo?si=kDb7UAVnv9NKVqR_ https://youtu.be/Id2Cec6sMFo?si=kDb7UAVnv9NKVqR_].


Les cartes Arduino Mega 2560 et adafruit motor shield
Les cartes Arduino Mega 2560 et adafruit motor shield
Ligne 33 : Ligne 47 :
La programmation à  l'aide d'ArduBlock, plugin (module d'extension) du logiciel Arduino de&nbsp;:
La programmation à  l'aide d'ArduBlock, plugin (module d'extension) du logiciel Arduino de&nbsp;:


La commande «&nbsp;Tant que ...» (while)
La commande «&nbsp;Tant que ...» (while)


La boucle «Si» (if)
La boucle «Si» (if)


Sous programme
Sous programme


= Matériel =
= Matériel =
Ligne 46 : Ligne 59 :
[http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.MaterielMega2560 La carte Arduino Mega 2560] est une carte à  microcontrôleur basée sur un ATmega2560 ([http://www.atmel.com/Images/doc2549.pdf fiche technique]).
[http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.MaterielMega2560 La carte Arduino Mega 2560] est une carte à  microcontrôleur basée sur un ATmega2560 ([http://www.atmel.com/Images/doc2549.pdf fiche technique]).


[[Image:]][https://learn.adafruit.com/downloads/pdf/adafruit-motor-shield.pdf La carte afruit motor shield] est une carte d'extension de commande de moteurs
[[Image:ArduinoMega2560Front240.jpg|thumb|center]]
 
[https://learn.adafruit.com/downloads/pdf/adafruit-motor-shield.pdf La carte afruit motor shield] est une carte d'extension de commande de moteurs
 
[[Fichier:L293Dmotorshield.jpg|vignette|center]]
 
Carte ci-dessus remplacée par la carte [https://www.adafruit.com/product/1438 Adafruit Motor/Stepper/Servo Shield for Arduino v2 Kit - v2.3]


[[Image:]]
[[Fichier:Adafruit motor shield v2.PNG|vignette|center]]


== Logiciel ==
== Logiciel ==
Le logiciel Arduino installé (voir : http://www.arduino.cc/)
Le logiciel Arduino augmenté installé (voir : [http://duinoedu.com/telechargement.html DuinoEdu])


[http://www.semageek.com/arduino-presentation-et-traduction-en-francais-de-ardublock/ Ardublock] est un plugin qui s'ajoute à  l'ide d'arduino. (Programmation graphique), à placer dans C:\Users\nom_du_compte\Documents\Arduino\Tools\ArduBlockTool\Tool
[http://www.semageek.com/arduino-presentation-et-traduction-en-francais-de-ardublock/ Ardublock] est un plugin qui s'ajoute à  l'ide d'arduino. (Programmation graphique), à placer dans C:\Users\nom_du_compte\Documents\Arduino\Tools\ArduBlockTool\Tool
Ligne 57 : Ligne 76 :
La librairie [https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino/install-software adafruit motor shield] (même si elle apparait dans Ardublock), à  placer dans C:\Users\nom_du_compte\Documents\Arduino\libraries
La librairie [https://learn.adafruit.com/adafruit-motor-shield-v2-for-arduino/install-software adafruit motor shield] (même si elle apparait dans Ardublock), à  placer dans C:\Users\nom_du_compte\Documents\Arduino\libraries


== Information (Attention au câblage présenté plus tard) ==
== Information (Attention au câblage présenté plus tard) ==
Microrupteur (fin de course) normalement ouvert
Microrupteur (fin de course) normalement ouvert


== Actionneurs ==
== Actionneurs ==
Deux moteurs D21mm - Arbre 2mm de 1,5 à 4,5V&nbsp;: Caractéristiques sous 3 V :&nbsp;- 10 500 tr/mn à vide, 250 mA, Couple : 11 g.cm  
Deux moteurs D21mm - Arbre 2mm de 1,5V à  4,5V: Caractéristiques sous 3 V : - 10500 tr/mn à  vide, 250 mA, Couple : 11 g.cm
 
 
= Préparation =
== Câblage des microrupteurs ==
Une résistance de rappel («pull-up» ou «pull-down») permet de fixer une entrée numérique à un état HIGH (haut ou 1) ou LOW (bas ou 0).


Attention car j'ai câblé les capteurs "pull-up". Faites bien attention et choisissez plutôt le câblage en "pull-up" afin d'être en sécurité si un court circuit vous arrive (la résistance se trouve toujours entre le VCC et le GND) et de ne pas griller l'alimentation.
= Préparation =
== Câblage des microrupteurs ==
Une résistance de rappel («pull-up» ou «pull-down») permet de fixer une entrée numérique à  un état HIGH (haut ou 1) ou LOW (bas ou 0).


[[Image:pullups.png]]Avec la résistance de rappel "pull-down", l'entrée numérique est à l'état LOW lorsque le micro-rupteur ou le bouton poussoir sont ouverts (relâchés).
Attention car j'ai câblé les capteurs "pull-up". Faites bien attention et choisissez plutôt le câblage en "pull-up" afin d'être en sécurité si un court circuit vous arrive (la résistance se trouve toujours entre le VCC et le GND) et de ne pas griller l'alimentation.


Avec la résistance de rappel "pull-up", l'entrée numérique est à l'état HIGH lorsque le micro-rupteur ou le bouton poussoir sont ouverts (relâchés).
[[Image:pullups.png]]Avec la résistance de rappel "pull-down", l'entrée numérique est à  l'état LOW lorsque le micro-rupteur ou le bouton poussoir sont ouverts (relâchés).


Cette information est importante car votre programme ne fonctionnera pas si vous mélangez les câblages comme j'ai pu le faire et perdre un temps important pour trouver l'erreur.
Avec la résistance de rappel "pull-up", l'entrée numérique est à  l'état HIGH lorsque le micro-rupteur ou le bouton poussoir sont ouverts (relâchés).


Cette information est importante car votre programme ne fonctionnera pas si vous mélangez les câblages comme j'ai pu le faire et perdre un temps important pour trouver l'erreur.


== Montage de la carte Arduino Mega 2560 et la carte d'extension adafruit motor shield  ==
== Montage de la carte Arduino Mega 2560 et la carte d'extension adafruit motor shield  ==
[[Image:megaloupe5reperage.jpg]]J'utilise une batterie Litium 7,4V afin d'alimenter l'Arduino et les deux moteurs par l'alimentation extérieur en par un convertisseur de tension 5V.
[[Image:megaloupe5reperage.jpg|border|center|500px]]
 
J'utilise une batterie Litium 7,4V afin d'alimenter l'Arduino et les deux moteurs par l'alimentation extérieur en par un convertisseur de tension 5V.
[[Image:Ubec.jpeg|border|center|150px]]


== Repérage des branchements ==
== Repérage des branchements ==
1) Capteurs
1) Capteurs


AVG&nbsp;: Avant Gauche&nbsp;: pin 25
AVG : Avant Gauche : pin 25


AVD&nbsp;: Avant Droit&nbsp;: pin 24
AVD : Avant Droit : pin 24


ARG&nbsp;: Arrière Gauche&nbsp;: pin 23
ARG : Arrière Gauche : pin 23


ARD&nbsp;: Arrière Droit&nbsp;: pin 22
ARD: Arriére Droit : pin 22


2) Moteurs
2) Moteurs


Moteur droit&nbsp;: M2
Moteur droit : M2


Moteur gauche&nbsp;: M1
Moteur gauche : M1


3) Protection de la carte
3) Protection de la carte


Pont de diode afin d'éviter les retours de courant sur la carte lors de l'arrêt brutal des moteurs ou de l’inversion de rotation.
Pont de diode afin d'éviter les retours de courant sur la carte lors de l'arrêt brutal des moteurs ou de l'inversion de rotation.


Schéma structurel&nbsp;:
'''Schéma structurel :'''
[[Image:schemastruc.PNG|border|center|500px]]


[[Image:schemastruc.PNG]]Carte&nbsp;:


'''Carte :'''


[[Image:IMG_4240.JPG]][[Image:IMG_4237.JPG]]= Programmation =
== La manipulation des ports à l'aide des registres de port ==
La carte Arduino Mega est basée sur un microcontrôleur AVR Atmel.


Pour contrôler l'état des capteurs, j'utilise les registres de port qui permet de ne pas utiliser les fonctions «&nbsp;digitalRead&nbsp;» et «&nbsp;digitalWrite&nbsp;» pour chaque capteur.
[[Fichier:IMG_4240.JPG|400px|border]][[Fichier:IMG_4237.JPG|400px|border]]


Les registres de port permettent une manipulation de bas-niveau (çàd au niveau du matériel lui-même) et plus rapide des broches d'entrée/sortie du microcontrôleur de la carte Arduino Atmega2560&nbsp;:
'''Plan de câblage :'''
[[Image:robot_cablage_gilles.PNG|border|center|500px]]


Le registre (un octet) DDR détermine le sens d'utilisation des broches numériques en tant qu'ENTREE ou SORTIE.
= Programmation =


le registre PORT contrôle le niveau HAUT ou BAS des broches numériques en SORTIE (et l'activation du PULLUP pour les broches en ENTREE).
== La manipulation des ports à  l'aide des registres de port ==
La carte Arduino Mega est basée sur un microcontrôleur AVR Atmel.  


Pour contrôler l'état des capteurs, j'utilise les registres de port qui permet de ne pas utiliser les fonctions «digitalRead» et «digitalWrite» pour chaque capteur.


le registre PIN reflète l'état des broches configurée en ENTREE.
Les registres de port permettent une manipulation de bas-niveau (çàd au niveau du matériel lui-même) et plus rapide des broches d'entrée/sortie du microcontrôleur de la carte Arduino Atmega2560 :


Le registre (un octet) DDR détermine le sens d'utilisation des broches numériques en tant qu'ENTREE ou SORTIE.
le registre PORT contrôle le niveau HAUT ou BAS des broches numériques en SORTIE (et l'activation du PULLUP pour les broches en ENTREE).
le registre PIN reflète l'état des broches configurées en ENTREE.
[[Fichier:Registrepin.jpeg|400px|border]]


== Correspondance du registre et des actions attendues ==
== Correspondance du registre et des actions attendues ==
Ce tableau permet de programmer le robot. Les actions attendues peuvent bien sur être modifiées.
Ce tableau permet de programmer le robot. Les actions attendues peuvent bien sur être modifiées.
 
[[Fichier:Correspondance reg.jpeg|850px|border|center|]]
 


'''Capteurs :'''


Capteur&nbsp;:  
AVG : Avant Gauche


AVG&nbsp;: Avant GaucheAVD&nbsp;: Avant Droit
AVD : Avant Droit


ARG&nbsp;: Arrière GaucheARD&nbsp;: Arrière Droit
ARG : Arrière Gauche


ARD : Arrière Droit


Moteur droit&nbsp;: M2
'''Actionneurs :'''


Moteur gauche&nbsp;: M1
Moteur droit : M2


Moteur gauche : M1


== Programme ArduBlock ==
== Programme ArduBlock ==
Chargement du fichier créé avec Ardublock
Chargement du fichier créé avec Ardublock


1) Ouvrir le logiciel Arduino
1) Ouvrir le logiciel Arduino
Ligne 147 : Ligne 178 :
2) Dans le menu outil, lancer le plugin Ardublock.
2) Dans le menu outil, lancer le plugin Ardublock.


3) Ouvrir le fichier «&nbsp;[./programmation%20robot.abp programmation robot]&nbsp;»
3) Ouvrir le fichier [http://www.vorobotics.com/uploads/GL/programmation%20robot.abp code source] clic droit "Enregistrer la cible du lien sous ..."




Ligne 154 : Ligne 185 :
1) Initialisation (setup)
1) Initialisation (setup)


Contacts pull-up&nbsp;: capteur relâché, entrée en valeur 1.
Contacts pull-up : capteur relâché, entrée en valeur 1.
 
DDRA : Fixe pins 1 en sortie, 0 en entrée (11110000)
 
Pin 22, 23, 24, 25 fixées en entrée.
 
Pin 26, 27, 28, 29 fixées en sortie (forcées pour éviter les perturbations)


DDRA&nbsp;: Fixe pins 1 en sortie, 0 en entrée (11110000)
[[Image:Init.jpeg]]


Pin 22, 23, 24, 25 fixées en entrée.


[[Image:init.PNG]]Pin 26, 27, 28, 29 fixées en sortie (forcées pour éviter les perturbations)




2) Contrôle de l'état des capteurs
2) Contrôle de l'état des capteurs
 
La variable «capteur» prend la valeur décimale de l'état des contacts au moment «t».
 
[[Image:Lecture_capteur.jpeg]]
 
3) Déroulement du programme
 
Suivant la valeur «capteur», les actions diffèrent suivant le tableau «Correspondance du registre et des actions attendues»
 
 
[[Image:Reroule prog.jpeg]]
 
4) Le programme (boucle)
 
Le déplacement du robot est décrit en sous programmes.
 
[[Image:Sousavancer.jpeg]]
== Programme Arduino ==
 
<div style="margin-left:0cm;margin-right:0cm;">Le programme fonctionnant sous Ardublock, j'ai décidé de me lancer dans la programmation sous Arduino (en lignes de commande). Merci pour l'aide importante de Joël, membre et président du fablab!!</div>
 
 
=== Programme robot moustache.V2 ===
 
<div style="margin-left:0cm;margin-right:0cm;">Je vous propose une première version tirée directement de la programmation Arduiblock.</div>
 
<div style="margin-left:0cm;margin-right:0cm;">Ouvrir le fichier [http://www.vorobotics.com/uploads/GL/robotmous/robot_V2.zip code source] clic droit "Enregistrer la cible du lien sous ..." </div>
 
=== Programme robot moustache.V3 ===
 
<div style="margin-left:0cm;margin-right:0cm;">Ouvrir le fichier [http://www.vorobotics.com/uploads/GL/robotmous/robot_V3.zip code source] clic droit "Enregistrer la cible du lien sous ..." </div>
La compilation séparée : Plusieurs onglets sont ouverts dans Arduino
 
<div style="margin-left:0cm;margin-right:0cm;">Organisation du fichier: séparer son code en différents fichiers afin d'avoir des entitées logiques séparées les unes des autres.</div>
[[Fichier:Gilles robotmous comp sepa.png|600px|border|center|]]
 
 
<div style="margin-left:0cm;margin-right:0cm;">'''programmation_robot_V3 :''' programme principal</div>
[[Fichier:Gilles programme robot V3.png|600px|border|center|]]
 
<div style="margin-left:0cm;margin-right:0cm;">'''fonctions.cpp :''' (pour C plus plus ou C++) regroupe le code à proprement parler, le codage de vos fonctions. C’est ici que vous écrivez le contenu de vos fonctions, ce qui est censé se passer à l’intérieur de ces dernières.</div>
[[Fichier:Gilles fonction cpp.png|600px|border|center|]]
 
<div style="margin-left:0cm;margin-right:0cm;">'''fonctions.h :''' regroupe les prototypes des fonctions ainsi que les définitions de structures ou de classes. </div>
[[Fichier:Gilles fonction h.png|600px|border|center|]]
 
= Licence =
Ce document est mise à  disposition selon les termes de la&nbsp;[http://creativecommons.org/licenses/by/4.0/ Licence Creative Commons Attribution 4.0 International].
 
[[Image:]]Parternité 'by' :''L'oeuvre peut être librement utilisée, à  la condition de l'attribuer à  l'auteur en citant son nom.''
 
 
Note aux auteurs de documents du VoLAB, Vous avez la possibilité de changer de licence. Mais ce serait bien de rester libre et ouvert. Encore une fois ceci est une recommandation et non une obligation.
 
= Bibliographie =
= Webographie =
[http://fr.wikipedia.org/wiki/Licence_Creative_Commons http://fr.wikipedia.org/wiki/Licence_Creative_Commons]
 
[https://lecorsiergilles.blogspot.com/2024/03/robot-moustache.html https://lecorsiergilles.blogspot.com/2024/03/robot-moustache.html]
 
[https://youtu.be/Id2Cec6sMFo?si=kDb7UAVnv9NKVqR_ https://youtu.be/Id2Cec6sMFo?si=kDb7UAVnv9NKVqR_]
 
[https://bitbucket.org/robot-moustache/robot_moustache_freecad/src/master/bitbucket https://bitbucket.org/robot-moustache/robot_moustache_freecad/src/master/bitbucket]
 
[http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.PortManipulation http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.PortManipulation]
 
[http://damien-monni.fr/blog/article/arduino-et-les-bases-de-la-programmation-atmel-avr http://damien-monni.fr/blog/article/arduino-et-les-bases-de-la-programmation-atmel-avr]
 
[http://www.worldofgz.com/electronique/les-registres-de-port-arduino/ http://www.worldofgz.com/electronique/les-registres-de-port-arduino/]
 
[http://www.atmel.com/images/atmel-2549-8-bit-avr-microcontroller-atmega640-1280-1281-2560-2561_datasheet.pdf http://www.atmel.com/images/atmel-2549-8-bit-avr-microcontroller-atmega640-1280-1281-2560-2561_datasheet.pdf]
 
[http://www.atmel.com/images/atmel-2549-8-bit-avr-microcontroller-atmega640-1280-1281-2560-2561_datasheet.pdf http://www.atmel.com/images/atmel-2549-8-bit-avr-microcontroller-atmega640-1280-1281-2560-2561_datasheet.pdf]
 
[http://www.atmel.com/images/atmel-2549-8-bit-avr-microcontroller-atmega640-1280-1281-2560-2561_datasheet.pdf http://www.atmel.com/images/atmel-2549-8-bit-avr-microcontroller-atmega640-1280-1281-2560-2561_datasheet.pdf]
 
= Rédaction en langue française =
Partant du constat de terrain qu'une énorme masse d'information concernant les sujets qui nous intéressent comme entre autres l'impression 3D n'étaient disponibles que dans la langue de Shakespeare et que de nombreuses personnes dans notre entourage ne maîtrisaient pas la dite langue et soucieux de diffuser encore plus l'information, nous avons pris le parti, au VoLAB, de rédiger nos documents de préférence en langue française.
 
= VoLAB =
Un mot sur le VoLAB. VoLAB est un fablab implanté à  environ 30km au nord-ouest de Paris dans la commune de Vauréal dans l'agglomération de Cergy Pontoise. Il est animé par l'association VoRoBoTics.


La variable «&nbsp;capteur&nbsp;» prend la valeur décimale de l'état des contacts au moment «&nbsp;t&nbsp;».
Site internet [http://www.vorobotics.com/ www.vorobotics.com]

Version actuelle datée du 17 mai 2024 à 13:25

AccueilNos Projets

Page d'accueil Gilles

Robot détecteur d'obstacles

4198.JPGIMG 4193.JPGRm image.png



VoLAB

Volab.JPG

Assocation VoRoBoTics

Date : 23/01/2016

Auteur : Lecorsier

Relecteur :

Thème : Domotique

Projet : Robot détecteur d'obstacles, programmation Arduino et ArduBlock

Problématique

J'ai repris le RobotPilot développé et vendu par A4, concepteur et fabricant de matériel pédagogique.

Je décris mon expérience sur ce robot avec la technologie PICAXE sur le blog La Technologie au Collège dans le message Automatismes et robotique.

Dans ce document sont abordés :

Le robot moustache est totalement conçu sous FreeCad en téléchargement à cette adresse bitbucket.

Vidéo présentant le robot moustache sous FreeCad à cette adresse https://youtu.be/Id2Cec6sMFo?si=kDb7UAVnv9NKVqR_.

Les cartes Arduino Mega 2560 et adafruit motor shield

Les branchements des capteurs et actionneurs

Les moteurs CC et les branchements

La programmation à  l'aide d'ArduBlock, plugin (module d'extension) du logiciel Arduino de :

La commande « Tant que ...» (while)

La boucle «Si» (if)

Sous programme

Matériel

La maquette proposée n'est qu'un support et le travail peut très bien être transféré sur un autre projet.

Cartes

La carte Arduino Mega 2560 est une carte à  microcontrôleur basée sur un ATmega2560 (fiche technique).

ArduinoMega2560Front240.jpg

La carte afruit motor shield est une carte d'extension de commande de moteurs

L293Dmotorshield.jpg

Carte ci-dessus remplacée par la carte Adafruit Motor/Stepper/Servo Shield for Arduino v2 Kit - v2.3

Adafruit motor shield v2.PNG

Logiciel

Le logiciel Arduino augmenté installé (voir : DuinoEdu)

Ardublock est un plugin qui s'ajoute à  l'ide d'arduino. (Programmation graphique), à placer dans C:\Users\nom_du_compte\Documents\Arduino\Tools\ArduBlockTool\Tool

La librairie adafruit motor shield (même si elle apparait dans Ardublock), à  placer dans C:\Users\nom_du_compte\Documents\Arduino\libraries

Information (Attention au câblage présenté plus tard)

Microrupteur (fin de course) normalement ouvert

Actionneurs

Deux moteurs D21mm - Arbre 2mm de 1,5V à  4,5V: Caractéristiques sous 3 V : - 10500 tr/mn à  vide, 250 mA, Couple : 11 g.cm

Préparation

Câblage des microrupteurs

Une résistance de rappel («pull-up» ou «pull-down») permet de fixer une entrée numérique à  un état HIGH (haut ou 1) ou LOW (bas ou 0).

Attention car j'ai câblé les capteurs "pull-up". Faites bien attention et choisissez plutôt le câblage en "pull-up" afin d'être en sécurité si un court circuit vous arrive (la résistance se trouve toujours entre le VCC et le GND) et de ne pas griller l'alimentation.

Pullups.pngAvec la résistance de rappel "pull-down", l'entrée numérique est à  l'état LOW lorsque le micro-rupteur ou le bouton poussoir sont ouverts (relâchés).

Avec la résistance de rappel "pull-up", l'entrée numérique est à  l'état HIGH lorsque le micro-rupteur ou le bouton poussoir sont ouverts (relâchés).

Cette information est importante car votre programme ne fonctionnera pas si vous mélangez les câblages comme j'ai pu le faire et perdre un temps important pour trouver l'erreur.

Montage de la carte Arduino Mega 2560 et la carte d'extension adafruit motor shield

Megaloupe5reperage.jpg

J'utilise une batterie Litium 7,4V afin d'alimenter l'Arduino et les deux moteurs par l'alimentation extérieur en par un convertisseur de tension 5V.

Ubec.jpeg

Repérage des branchements

1) Capteurs

AVG : Avant Gauche : pin 25

AVD : Avant Droit : pin 24

ARG : Arrière Gauche : pin 23

ARD: Arriére Droit : pin 22

2) Moteurs

Moteur droit : M2

Moteur gauche : M1

3) Protection de la carte

Pont de diode afin d'éviter les retours de courant sur la carte lors de l'arrêt brutal des moteurs ou de l'inversion de rotation.

Schéma structurel :

Schemastruc.PNG


Carte :


IMG 4240.JPGIMG 4237.JPG

Plan de câblage :

Robot cablage gilles.PNG

Programmation

La manipulation des ports à  l'aide des registres de port

La carte Arduino Mega est basée sur un microcontrôleur AVR Atmel.

Pour contrôler l'état des capteurs, j'utilise les registres de port qui permet de ne pas utiliser les fonctions «digitalRead» et «digitalWrite» pour chaque capteur.

Les registres de port permettent une manipulation de bas-niveau (çàd au niveau du matériel lui-même) et plus rapide des broches d'entrée/sortie du microcontrôleur de la carte Arduino Atmega2560 :

Le registre (un octet) DDR détermine le sens d'utilisation des broches numériques en tant qu'ENTREE ou SORTIE.

le registre PORT contrôle le niveau HAUT ou BAS des broches numériques en SORTIE (et l'activation du PULLUP pour les broches en ENTREE).


le registre PIN reflète l'état des broches configurées en ENTREE. Registrepin.jpeg

Correspondance du registre et des actions attendues

Ce tableau permet de programmer le robot. Les actions attendues peuvent bien sur être modifiées.

Correspondance reg.jpeg


Capteurs :

AVG : Avant Gauche

AVD : Avant Droit

ARG : Arrière Gauche

ARD : Arrière Droit

Actionneurs :

Moteur droit : M2

Moteur gauche : M1

Programme ArduBlock

Chargement du fichier créé avec Ardublock

1) Ouvrir le logiciel Arduino

2) Dans le menu outil, lancer le plugin Ardublock.

3) Ouvrir le fichier code source clic droit "Enregistrer la cible du lien sous ..."


Description du programme

1) Initialisation (setup)

Contacts pull-up : capteur relâché, entrée en valeur 1.

DDRA : Fixe pins 1 en sortie, 0 en entrée (11110000)

Pin 22, 23, 24, 25 fixées en entrée.

Pin 26, 27, 28, 29 fixées en sortie (forcées pour éviter les perturbations)

Init.jpeg



2) Contrôle de l'état des capteurs

La variable «capteur» prend la valeur décimale de l'état des contacts au moment «t».

Lecture capteur.jpeg

3) Déroulement du programme

Suivant la valeur «capteur», les actions diffèrent suivant le tableau «Correspondance du registre et des actions attendues»


Reroule prog.jpeg

4) Le programme (boucle)

Le déplacement du robot est décrit en sous programmes.

Sousavancer.jpeg

Programme Arduino

Le programme fonctionnant sous Ardublock, j'ai décidé de me lancer dans la programmation sous Arduino (en lignes de commande). Merci pour l'aide importante de Joël, membre et président du fablab!!


Programme robot moustache.V2

Je vous propose une première version tirée directement de la programmation Arduiblock.
Ouvrir le fichier code source clic droit "Enregistrer la cible du lien sous ..."

Programme robot moustache.V3

Ouvrir le fichier code source clic droit "Enregistrer la cible du lien sous ..."

La compilation séparée : Plusieurs onglets sont ouverts dans Arduino

Organisation du fichier: séparer son code en différents fichiers afin d'avoir des entitées logiques séparées les unes des autres.
Gilles robotmous comp sepa.png


programmation_robot_V3 : programme principal
Gilles programme robot V3.png
fonctions.cpp : (pour C plus plus ou C++) regroupe le code à proprement parler, le codage de vos fonctions. C’est ici que vous écrivez le contenu de vos fonctions, ce qui est censé se passer à l’intérieur de ces dernières.
Gilles fonction cpp.png
fonctions.h : regroupe les prototypes des fonctions ainsi que les définitions de structures ou de classes.
Gilles fonction h.png

Licence

Ce document est mise à  disposition selon les termes de la Licence Creative Commons Attribution 4.0 International.

[[Image:]]Parternité 'by' :L'oeuvre peut être librement utilisée, à  la condition de l'attribuer à  l'auteur en citant son nom.


Note aux auteurs de documents du VoLAB, Vous avez la possibilité de changer de licence. Mais ce serait bien de rester libre et ouvert. Encore une fois ceci est une recommandation et non une obligation.

Bibliographie

Webographie

http://fr.wikipedia.org/wiki/Licence_Creative_Commons

https://lecorsiergilles.blogspot.com/2024/03/robot-moustache.html

https://youtu.be/Id2Cec6sMFo?si=kDb7UAVnv9NKVqR_

https://bitbucket.org/robot-moustache/robot_moustache_freecad/src/master/bitbucket

http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.PortManipulation

http://damien-monni.fr/blog/article/arduino-et-les-bases-de-la-programmation-atmel-avr

http://www.worldofgz.com/electronique/les-registres-de-port-arduino/

http://www.atmel.com/images/atmel-2549-8-bit-avr-microcontroller-atmega640-1280-1281-2560-2561_datasheet.pdf

http://www.atmel.com/images/atmel-2549-8-bit-avr-microcontroller-atmega640-1280-1281-2560-2561_datasheet.pdf

http://www.atmel.com/images/atmel-2549-8-bit-avr-microcontroller-atmega640-1280-1281-2560-2561_datasheet.pdf

Rédaction en langue française

Partant du constat de terrain qu'une énorme masse d'information concernant les sujets qui nous intéressent comme entre autres l'impression 3D n'étaient disponibles que dans la langue de Shakespeare et que de nombreuses personnes dans notre entourage ne maîtrisaient pas la dite langue et soucieux de diffuser encore plus l'information, nous avons pris le parti, au VoLAB, de rédiger nos documents de préférence en langue française.

VoLAB

Un mot sur le VoLAB. VoLAB est un fablab implanté à  environ 30km au nord-ouest de Paris dans la commune de Vauréal dans l'agglomération de Cergy Pontoise. Il est animé par l'association VoRoBoTics.

Site internet www.vorobotics.com