# Tournicayou

### *<span dir="auto"><span dir="auto"><span dir="auto"><span dir="auto"><span dir="auto"><span dir="auto"><span dir="auto"><span dir="auto"><span dir="auto"><span dir="auto"><span dir="auto"><span dir="auto">Construction d'un appareil photogrammétrique dans le cadre de l'UE Atelier Fablab LU3SV062</span></span></span></span></span></span></span></span></span></span></span></span>*

#### <span style="text-decoration: underline;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Informations</span></span></span></span></span></span></span></span></span></span></span>

- **<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Étudiants :</span></span></span></span></span></span></span></span></span></span></span></span>**
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Zoé Albenga</span></span></span></span></span></span></span></span></span></span></span></span>
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Lucas Gorini</span></span></span></span></span></span></span></span></span></span></span></span>
- **<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Encadrants : </span></span></span></span></span></span></span></span></span></span>**
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Responsables de l'UE : Fabrice Minoletti et Pierre Théry</span></span></span></span></span></span></span></span></span></span>
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Responsable du projet : Pierre Théry</span></span></span></span></span></span></span></span></span></span>
- **<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Parcours :</span></span></span></span></span></span></span></span></span></span>**<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"> SV/ST : UE\_FabLab : LU3ST062 </span></span></span></span></span></span></span></span></span></span>
- **<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Date</span></span></span></span></span></span></span></span></span></span>**<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"> : S6</span></span></span></span></span></span></span></span></span></span>

<div aria-label="Options de section de page" class="pointer-container" id="bkmrk-%C2%A0" refs="pointer@pointer" tabindex="-1"><div class="pointer flex-container-row items-center justify-space-between p-s anim "><div class="flex-container-row items-center gap-s" refs="pointer@mode-section"><button class="text-button icon px-xs" title="Mode Lien Permanent, Cliquer pour afficher la balise d'inclusion"><svg class="svg-icon" data-icon="link" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></button><div class="input-group"> <button class="button outline icon" title="Copier le lien" type="button"><svg class="svg-icon" data-icon="copy" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></button></div></div></div></div>
#### <span style="text-decoration: underline;"><span style="color: rgb(0, 0, 0); text-decoration: underline;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Objectifs</span></span></span></span></span></span></span></span></span></span></span></span>

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Notre objectif de réalisation pour cette UE est la d'un socle pour la photogrammétrie. Celui-ci aurait comme application dans un premier temps la réalisation "d'image en 3D" pour certaines pierres ponces, puis à usage plus large par la suite.</span></span></span></span></span></span></span></span></span></span>

#### <span style="text-decoration: underline;"><span style="color: rgb(0, 0, 0); text-decoration: underline;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Construction</span></span></span></span></span></span></span></span></span></span></span></span>

<p class="callout success"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">**<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Étape 1 : *S'approprier Arduino ainsi que le projet avec la modélisation de notre appareil à photogrammétrie.*</span></span></span></span></span></span></span></span></span></span>**</span></span></span></span></span></span></span></span></span></span></p>

<p class="callout success"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">**Étape 2 :** *Réflexion/Réalisation des premières* </span></span></span></span></span></span></span></span></span></span>*<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">pièces par </span></span></span></span></span></span></span></span></span></span><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">modélisation 3D ainsi qu'un travail de recherche sur le code du moteur pas à pas.</span></span></span></span></span></span></span></span></span></span>*</p>

<p class="callout success"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">**Étape 3 :** *Modification et ajustement des pièces du projet et réalisation du code pour la (les) caméra(s).*</span></span></span></span></span></span></span></span></span></span></p>

<p class="callout info"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">**Étape 4 :** *Assemblage de toutes les pièces modélisées ainsi que des deux codes, afin de réaliser les premiers tests.*</span></span></span></span></span></span></span></span></span></span></p>

<p class="callout warning"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">**Étape 5 :** *Réaliser les premiers tests avec un objet à prendre en photo avec un logiciel de photogrammétrie permettant la réalisation de l'objet en 3D.*</span></span></span></span></span></span></span></span></span></span></p>

<p class="callout warning"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">**Étape 6 :** *Paramétrer une application permettant la réalisation des photos.*</span></span></span></span></span></span></span></span></span></span></p>

##### <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">**Étape 7 :** *C'est déjà un beau projet*</span></span></span></span></span></span></span></span></span></span>

#### <span style="text-decoration: underline;"><span style="color: rgb(0, 0, 0); text-decoration: underline;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Matériel</span></span></span></span></span></span></span></span></span></span></span></span>

- <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Carte Arduino Uno</span></span></span></span></span></span></span></span>
- Module caméra ArduCam mini 5MP Plus OV5642
- Moteur NEMA
- Motor shield (--&gt; branchement pour le moteur et la caméra)
- Câblages
- Logiciel de modélisation 3D

#### <span style="text-decoration: underline;">Résultats </span>

Lors de ce dernier semestre de licence nous avons eu la chance travailler sur un projet sur la photogrammétrie, le but étant de réaliser le maximum d'étapes prédéfinies (pas obligatoirement la fin du projet).

#### <span style="text-decoration: underline;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Journal de bord</span></span></span></span></span></span></span></span></span></span></span>

<details id="bkmrk-journal-de-bord-30%2F0"><summary>30/01/26 \_ Premières manipulations</summary>

##### <span style="text-decoration: underline; background-color: rgb(194, 224, 244);">*<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">1ère Séance : Sujet Photogrammétrie (Schéma) + Découverte de ARDUINO</span></span></span></span></span></span>*</span>

- <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Premières réflexions réalisation sur la de ce support à photogrammétrie.</span></span></span></span></span></span></span></span></span></span></span></span>
- <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Réalisation de plusieurs dessins "idées" (voir photos).</span></span></span></span></span></span></span></span></span></span></span></span>
- <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Première manipulation avec le logiciel ARDUINO, premier codage. Bien difficile....</span></span></span></span></span></span></span></span>[![1er essai ARDUINO.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-02/scaled-1680-/1er-essai-arduino.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-02/1er-essai-arduino.png)</span></span></span></span>

<div aria-label="Options de section de page" class="pointer-container" id="bkmrk-%C2%A0-3" refs="pointer@pointer" tabindex="-1"><div class="pointer flex-container-row items-center justify-space-between p-s anim is-page-editable"><div class="flex-container-row items-center gap-s" refs="pointer@mode-section"><button class="text-button icon px-xs" title="Mode lien permanent, appuyez pour afficher la balise d'inclusion"><svg class="svg-icon" data-icon="link" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></button><div class="input-group"> <button class="button outline icon" title="Copier le lien" type="button"><svg class="svg-icon" data-icon="copy" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></button></div></div><svg class="svg-icon" data-icon="edit" role="presentation" viewbox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"></svg></div></div>***<sub><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Codage avec Arduino, led clignotant SOS en morse.</span></span></span></span></span></span></span></span></sub>***

[![20260130_153722.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-05/scaled-1680-/20260130-153722.jpg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-05/20260130-153722.jpg)

[![001.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-05/scaled-1680-/001.jpg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-05/001.jpg)

</details><details id="bkmrk-06%2F02%2F26-2%C3%A8me-s%C3%A9ance"><summary>06/02/26\_Mise en place du plan d'attaque pour le projet</summary>

##### <span style="text-decoration: underline; background-color: rgb(194, 224, 244);">*<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">2ème Séance : Retour sur le support (Schémas) + Mise en place des différentes étapes</span></span></span></span></span></span></span></span></span></span>*</span>

- <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Reprise de la structure du support de photogrammétrie --&gt; bras tournant autour du support !! et plus un plateau tournant =&gt; permet de faire la photogrammétrie sur des objets plus léger</span></span></span></span></span></span></span></span>
- <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Mise en place des différentes étapes :</span></span></span></span></span></span></span></span>
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Moteur + programmation</span></span></span></span></span></span></span></span>
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Moule à Tarte</span></span></span></span></span></span></span></span>
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Arduino + caméras + affichage ordi à voir ?</span></span></span></span></span></span></span></span>
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Bras : support caméra + LED</span></span></span></span></span></span></span></span>
        - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Bonus : écran + angles + focus caméras</span></span></span></span></span></span></span></span>

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">[![20260206_153746.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-05/scaled-1680-/20260206-153746.jpg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-05/20260206-153746.jpg)[![20260206_153733.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-05/scaled-1680-/20260206-153733.jpg)\*](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-05/20260206-153733.jpg)</span></span></span></span></span></span></span></span>

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">[![20260206_160857.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-05/scaled-1680-/20260206-160857.jpg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-05/20260206-160857.jpg)</span></span></span></span></span></span></span></span>

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">[![20260206_163746.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-05/scaled-1680-/20260206-163746.jpg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-05/20260206-163746.jpg)</span></span></span></span></span></span></span></span>

</details><details id="bkmrk-13%2F02%2F2026-apprentis"><summary>13/02/2026\_1ères modélisation 3D et manipulation Arduino pour le moteur</summary>

##### <span style="text-decoration: underline; background-color: rgb(194, 224, 244);">*<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">3ème Séance : Gratuit Gratuit Fre</span></span></span></span></span></span></span></span></span></span><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">ecad + </span></span></span></span></span></span></span></span></span></span><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Arduino</span></span></span></span></span></span></span></span></span></span>*</span>

**<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">FREECAD</span></span></span></span></span></span>**

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Apprentissage des fonctions de base du logiciel Freecad. Plusieurs essais infructueux de la conception de la pièce crantée permettant le support du moteur autour de l'objet à photographier.</span></span></span></span></span></span>

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Vidéos youtube visionnées pour le modèle Freecad : </span></span></span></span></span></span>

- [<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">https://www.youtube.com/watch?v=3wPDnRFfgEg</span></span></span></span></span></span>](https://www.youtube.com/watch?v=3wPDnRFfgEg)
- [<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">https://www.youtube.com/@cadgab/playlistshttps://www.youtube.com/@cadgab/playlists</span></span></span></span></span></span></span></span></span></span>](https://www.youtube.com/@cadgab/playlistshttps://www.youtube.com/@cadgab/playlists)

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">LE COULOMMIERS EST TERMINÉ (18/02) - Côte Mauvaise</span></span></span></span></span></span></span></span></span></span>

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Pour créer le coulommiers, qui fait office d'engrenage interne permettant le déplacement du bras, il faut créer deux corps différents sur FreeCad. Les corps sont créés sur le module </span></span></span></span></span></span>**<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Part design</span></span></span></span></span></span>**</span></span></span></span>

- <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Un cercle de 600 mm de diamètre et 200 mm de haut</span></span></span></span></span></span>
- <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Un engrenage à développer de Dp = 495 mm, M = 2,5 mm, z = 198 et 200 mm de haut</span></span></span></span></span></span>

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Une fois les deux corps formés, il faut utiliser une booléenne pour former le rouage final grâce au module </span></span></span></span></span></span>**<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Part</span></span></span></span></span></span>**

<p class="callout warning">**<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Attention : Les valeurs inscrites sont les valeurs erronées et le fichiers FCStd a été réduit en hauteur</span></span></span></span></span></span>**</p>

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span style="color: #000000;"><span style="caret-color: rgb(0, 0, 0);"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Fichiers STL et FCStd de la pièce décrite : </span></span></span></span></span></span></span></span></span></span></span></span></span></span>

[Coulommiers-Support.stl](https://wiki.fablab.sorbonne-universite.fr/BookStack/attachments/1842)

[Coulomier final.FCStd](https://wiki.fablab.sorbonne-universite.fr/BookStack/attachments/1841)

<span style="text-decoration: underline;">**<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">ARDUINO</span></span></span></span></span></span>**</span>

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Familiarisation réalisation avec le logiciel Arduino et d'un premier montage :</span></span></span></span></span></span>

- <span style="text-decoration: underline;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Matériels :</span></span></span></span></span></span></span>
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Arduino Uno + câble USB de liaison Arduino/Ordinateur</span></span></span></span></span></span>
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Câbles de connexion</span></span></span></span></span></span>
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Moteur pas à pas 28 BYJ-48</span></span></span></span></span></span>

- <span style="text-decoration: underline;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Schéma de connexion :</span></span></span></span></span></span></span>

[![Moteur pas à pas de montage 28BYJ-48.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-02/scaled-1680-/montage-step-motor-28byj-48.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-02/montage-step-motor-28byj-48.png)

- <span style="text-decoration: underline;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Code : </span></span></span></span></span></span></span>
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Ce code permet au moteur de réaliser une rotation dans le sens des aiguilles d'une montre, attendre 1 seconde(s), puis de faire une rotation dans le sens contraire des aiguilles d'une montre, puis de nouveau attendre 1 s.</span></span></span></span></span></span>

```
#include <Stepper.h> 

double stepsPerRevolution = 2048;

Stepper myStepper(stepsPerRevolution, 8, 10, 9, 11);  // Pin inversion to make the library work

void setup() { 
  myStepper.setSpeed(10);
  Serial.begin(9600); 
  } 

  void loop() {
    // 1 rotation counterclockwise:
    Serial.println("counterclockwise");
    myStepper.step(stepsPerRevolution);
    delay(1000); 

   // 1 rotation clockwise: 
   Serial.println("clockwise");
   myStepper.step(-stepsPerRevolution); 
   delay(1000); 
}
```

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"> Une librairie Stepper.h existe.</span></span></span></span></span></span>

- - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Succès de ce premier montage et code associé. Manipulation du code nous permettant d'obtenir une rotation dans le sens des aiguilles d'une montre avec arrêt de 1 s. (suppression de la première partie de la void loop) </span></span></span></span></span></span>
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Rapidement essayez de changer de vitesse = ÉCHEC --&gt; comprendre pourquoi à la prochaine séance.</span></span></span></span></span></span>

<p class="callout success"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">--&gt; Prochaine étape : Réaliser le montage avec ajout d'un potentiomètre permettant de contrôler la vitesse de rotation ainsi que le sens (--&gt; potentiomètre vers la droite= sens des aiguilles d'une montre ; potentiomètre à gauche = sens inverse )</span></span></span></span></span></span></p>

</details><details id="bkmrk-20%2F02%2F2026-%C2%A0"><summary>20/02/2026\_ Réalisation du Coulommiers et 1ères ébauches code moteur</summary>

##### <span style="text-decoration: underline; background-color: rgb(194, 224, 244);">*<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">4ème Séance : Gratuit </span></span></span></span></span></span></span></span></span></span><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">ecad + </span></span></span></span></span></span></span></span></span></span><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Arduino</span></span></span></span></span></span></span></span></span></span>*</span>

<span style="text-decoration: underline;">**<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Partie Freecad : </span></span></span></span></span></span>**</span>

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Modélisation du rouage pour le moteur pas à pas, et reprise de dimension du coulommiers. Pour calculer le nombre de dents de chaque rouage, externe (Moteur) comme interne (Coulommiers) nous avons suivi l'équation suivante :</span></span></span></span></span></span>

**<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Dp/M = z</span></span></span></span></span></span>**

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Dp =&gt; Le diamètre primitif ; M =&gt; Module du rouage ; z =&gt; Nombre de dents</span></span></span></span></span></span>

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Pour que deux engrenages puissent fonctionner ensemble </span></span></span></span></span></span>**<span style="text-decoration: underline;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">il faut respecter 3 conditions :</span></span></span></span></span></span></span>**

- <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Ils doivent avoir un module égal</span></span></span></span></span></span>
- <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Ils doivent avoir un angle de pression égal (par convention 20°)</span></span></span></span></span></span>
- <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Leur diamètre primitif doit être tangent</span></span></span></span></span></span>

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Pour le dernier point, la distance entre le centre des rouages </span></span></span></span></span></span>**<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">​​Dr = </span></span></span></span></span></span>** **<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">((z </span></span></span></span></span></span><sub><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">1</span></span></span></span></span></span></sub><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"> +z </span></span></span></span></span></span><sub><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">2</span></span></span></span></span></span></sub><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"> )\*M)/2</span></span></span></span></span></span>**

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Pour le coulommiers :</span></span></span></span></span></span>

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">La modélisation comporte deux corps.</span></span></span></span></span></span>

- <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Un cercle de 300 mm de diamètre et 100 mm de haut</span></span></span></span></span></span>
- <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Un engrenage à développé de Dp = 250 mm, M = 2,5 mm, z = 100 et 100 mm de haut</span></span></span></span></span></span>

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Pour former le rouage interne, il faut faire la différence des deux corps grâce à la booléenne dans le module </span></span></span></span></span></span>**<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Part</span></span></span></span></span></span>**<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"> . (cf </span></span></span></span></span></span>[<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">https://www.youtube.com/watch?v=3wPDnRFfgEg)</span></span></span></span></span></span>](https://www.youtube.com/watch?v=3wPDnRFfgEg))

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Pour le rouage externe ce dernier doit être fixé sur la "tige" du moteur faisant 19 mm de long. Il faut creuser un cylindre de 5mm de diamètre au centre du rouage avec une corde de 3mm afin de respecter l'aspect de la tige.</span></span></span></span></span></span>

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">La modélisation comporte deux corps.</span></span></span></span></span></span>

- <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Un cylindre de 5mm de diamètre coupé d'une corde de 3mm et faisant 19mm de haut</span></span></span></span></span></span>
- <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Un engrenage externe de Dp = 45 mm, M = 2,5 mm, z = 18 et 19 mm de haut</span></span></span></span></span></span>

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Impression 3D des pièces pour essais ultérieurs.</span></span></span></span></span></span>

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span style="color: #000000;"><span style="caret-color: rgb(0, 0, 0);"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Fichiers STL et FCStd de la pièce décrite : </span></span></span></span></span></span></span></span></span></span></span></span></span></span>

<span style="text-decoration: underline;">**<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">ARDUINO</span></span></span></span></span></span>**</span>

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Retour sur le montage réalisation et la du circuit de la semaine dernière = ÉCHEC. Nous n'avons pas trouvé la raison pour laquelle la réussite de la semaine passée n'était plus réalisable. (Changement de moteur, vérification et retour sur les explications du code, changement de code, vérification du fonctionnement de la carte Arduino uno...)</span></span></span></span></span></span>

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Réalisation d'un autre montage avec le moteur Servo :</span></span></span></span></span></span>

- <span style="text-decoration: underline;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Matériels :</span></span></span></span></span></span></span>
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Arduino Uno + câble USB de liaison Arduino/Ordinateur</span></span></span></span></span></span>
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Câbles de connexion</span></span></span></span></span></span>
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Microservo à moteur pas à pas SG90</span></span></span></span></span></span>

- <span style="text-decoration: underline;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Schéma de connexion :</span></span></span></span></span></span></span>

[![montage-servo.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-02/scaled-1680-/montage-servo.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-02/montage-servo.png)

- <span style="text-decoration: underline;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Code : </span></span></span></span></span></span></span>
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Ce code permet au moteur de réaliser une rotation dans le sens des aiguilles d'une montre, attendre 1 seconde(s), puis de faire une rotation dans le sens contraire des aiguilles d'une montre, puis de nouveau attendre 1 s.</span></span></span></span></span></span>

<p class="callout info"><span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ligatures: none; mso-fareast-language: FR;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Après plusieurs échecs, et des changements de codes, succès de la manipulation. Notre moteur se déplace de l'angle 0 à l'angle 90, puis à celui 180 avant de revenir à 0 et de recommencer sa boucle. Après chaque déplacement celui-ci fait une pause de 1 s. Notre moteur avance degré par degré.</span></span></span></p>

<p class="callout success"><span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ligatures: none; mso-fareast-language: FR;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">--&gt; Prochaine étape : </span></span></span><span style="mso-fareast-font-family: 'Times New Roman'; mso-bidi-font-family: 'Times New Roman'; mso-font-kerning: 0pt; mso-ligatures: none; mso-fareast-language: FR;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Modification de notre code pour réaliser un mouvement de 20° en 20° avec 1 s de délai entre chaque déplacement.</span></span></span></p>

</details><details id="bkmrk-27%2F02%2F2026-objectif-"><summary>27/02/2026\_Support moteur et 1er test moteur NEMA (pas à pas)</summary>

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span style="background-color: rgb(191, 237, 210);">**Objectif**</span> de la séance : </span></span></span></span></span></span>**<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Finaliser le code arduino pour le moteur, tester les pièces 3D, conception du bras</span></span></span></span></span></span>**

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Nous avons commencé la réalisation des plans quant à la partie qui tourne autour du coulommiers. Trois soirées :</span></span></span></span></span></span>

- <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Le support même du moteur, permettant sa fixation par vis.</span></span></span></span></span></span>
- <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">La partie centrale, dotée d'une roue permettant au socle tournant d'avancer sur les coulommiers.</span></span></span></span></span></span>
- <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Le support bras, avec des fentes permettant l'insertion du bras photo et des emplacement pour piles et carte arduino.</span></span></span></span></span></span>

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">L'idée est de créer deux pièces s'assemblant comme un puzzle. La première composée du socle moteur et de la partie centrale. L'autre du socle bras.</span></span></span></span></span></span>[![Plan Fablab socle BM 3.jpeg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-03/scaled-1680-/fablab-plan-socle-bm-3.jpeg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-03/fablab-plan-socle-bm-3.jpeg)[![Plan Fablab socle BM 2.jpeg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-03/scaled-1680-/fablab-plan-socle-bm-2.jpeg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-03/fablab-plan-socle-bm-2.jpeg)[![Plan Fablab socle BM 1.jpeg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-03/scaled-1680-/fablab-plan-socle-bm-1.jpeg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-03/fablab-plan-socle-bm-1.jpeg)

<span style="text-decoration: underline;">**<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">ARDUINO</span></span></span></span></span></span>**</span>

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Une partie des </span></span></span></span><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">coulommiers dentés et le rouage du moteur sont désormais imprimés ! Aujourd'hui sur un pu tester le gros moteur de 12 V, qui sera notre moteur final, avec donc le rouage modélisé par Lucas. </span></span></span></span></span></span></span></span>

<p class="callout danger"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">J'ai cramé la batterie brique de 12 V... Surement un problème dans mon montage.</span></span></span></span></span></span></span></span></p>

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Réalisation d'un autre montage avec le moteur NEMA 17, moteur pas à pas de 12 V :</span></span></span></span></span></span>

- <span style="text-decoration: underline;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Matériels :</span></span></span></span></span></span></span>
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Arduino Uno + câble USB de liaison Arduino/Ordinateur</span></span></span></span></span></span>
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Câbles de connexion</span></span></span></span></span></span>
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Moteur Shield</span></span></span></span></span></span>
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Moteur NEMA 17 pas à pas</span></span></span></span>

- <span style="text-decoration: underline;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Schéma de connexion :</span></span></span></span></span></span></span>

[![Capture d'écran 2026-03-20 102959.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-03/scaled-1680-/bn5capture-decran-2026-03-20-102959.jpg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-03/bn5capture-decran-2026-03-20-102959.jpg)

- <span style="text-decoration: underline;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Code : </span></span></span></span></span></span></span>
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Ce code permet au moteur de réaliser une rotation dans le sens des aiguilles d'une montre, attendre 1 seconde(s), puis de faire une rotation dans le sens contraire des aiguilles d'une montre, puis de nouveau attendre 1 s.</span></span></span></span></span></span>

```
#include <AFMotor_R4.h>

const int stepsPerRevolution = 200;   // nombre de pas du moteur

AF_Stepper motor(stepsPerRevolution, 2);

void setup() {
  Serial.begin(9600);
  motor.setSpeed(10);  // vitesse en RPM
}

void loop() {

  // Calcul du nombre de pas pour 20°
  int stepsFor20Degrees = stepsPerRevolution / 18;

  // Rotation sens horaire (aiguilles d'une montre)
  motor.step(stepsFor20Degrees, FORWARD, SINGLE);

  delay(1000);  // arrêt de 1 seconde

}
```

- - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Ce code fonctionne plutôt très bien, il réalise donc une rotation dans le sens des aiguilles d'une montre ; fait 20° puis fait une pause pour la photo.</span></span></span></span>

```
#include <AFMotor_R4.h>

const int stepsPerRevolution = 200;   // nombre de pas du moteur

AF_Stepper motor(stepsPerRevolution, 2);

void setup() {
  Serial.begin(9600);
  motor.setSpeed(10);  // vitesse en RPM
}

void loop() {

int stepsFor20Degrees = stepsPerRevolution / 18; // 20° ≈ 11 pas

  // Un tour complet = 360° = 18 segments de 20°
  for(int i = 0; i < 18; i++) {
    motor.step(stepsFor20Degrees, FORWARD, SINGLE);  // avance 20°
    delay(2000);  // pause de 2 secondes
  }

  // Pause longue à la fin du tour
  delay(10000);  // pause de 10 secondes
}
```

<p class="callout info"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Ce 2ème code est très probablement mieux mais manque de fluidité de mouvement : il ne réalise pas forcément tout le temps 20° degré mais parfois moins et de manière saccadé. Il réalise donc 11 pas pour faire les 20° demandées ; pause de 2 secondes ; puis reprends pour faire un tour complet de 20 par 20 ; pause de 10 s.</span></span></span></span></p>

<p class="callout info"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Ce code rend le moteur extrêmement bruyant en plus du mouvement saccadé.</span></span></span></span></p>

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">[![20260227_155241.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-05/scaled-1680-/20260227-155241.jpg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-05/20260227-155241.jpg)[![20260227_134741.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-05/scaled-1680-/20260227-134741.jpg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-05/20260227-134741.jpg)</span></span></span></span>

</details><details id="bkmrk-06%2F03%2F2026-conceptio"><summary>06/03/2026\_Conception du socle moteur</summary>

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">**<span dir="auto">Partie conception 3D : <span style="color: rgb(224, 62, 45);">Le socle moteur</span></span>**</span></span></span></span></span></span>

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Conception du socle moteur sur Freecad. Les mesures sont encore à vérifier. Le socle est composé d'un assemblage Freecad de deux pièces. La première correspond au support même du moteur, et dispose de 4 trous de fixation permettant par vis et un cinquième plus grand permettant au bras du moteur de passer. (Le moteur est fixé par la surface où se situe le bras). L'autre pièce est un rectangle permettant l'insertion d'une roue à billes, servant au roulement du support moteur sur les coulommiers. Cette pièce possède un trou permettant le passage d'une tige maintenant la roue en place. La conception de cette tige en 3D est réalisée, mais reste à voir pour sa conception (Impression 3D, métal, autre <span style="color: rgb(224, 62, 45);">?)(Au final Pierre a arrangé une vis pour la faire maintenir la roue).</span> Le rectangle possède un creux en forme de puzzle servant à l'insertion du socle du bras, devant encore être modélisé. </span></span></span></span></span></span>

<span style="color: #000000;"><span style="caret-color: rgb(0, 0, 0);"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Fichiers STL et FCStd de la pièce décrite : </span></span></span></span></span></span></span></span>

<span style="color: #000000;"><span style="caret-color: rgb(0, 0, 0);"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">[Assemblage socle moteur + Tige-Assembly.stl](https://wiki.fablab.sorbonne-universite.fr/BookStack/attachments/1844)</span></span></span></span></span></span></span></span>

<span style="color: #000000;"><span style="caret-color: rgb(0, 0, 0);"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">[Assemblage socle moteur + Tige.FCStd](https://wiki.fablab.sorbonne-universite.fr/BookStack/attachments/1843)</span></span></span></span></span></span></span></span>

</details><details id="bkmrk-13%2F03%2F2026-j%27ai-lim%C3%A9"><summary>13/03/2026\_Modélisation de pièce soutien bras, fluidification du code moteur et recherches caméras</summary>

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Lucas : J'ai limé pendant deux heures le bloc, puis début de la conception des plan pour la pièce arrière.</span></span></span></span></span></span>

**<span dir="auto">Partie conception 3D : <span style="color: rgb(224, 62, 45);">Création de la pièce arrière  
  
</span></span>**<span dir="auto" style="color: rgb(0, 0, 0);">La pièce arrière a pour but de maintenir la machine autour du coulommiers et de servir de contre-poids au moteur. Celle-ci est composée de deux parties principales, formant une pièce unique : </span>

1. <span dir="auto" style="color: rgb(0, 0, 0);">La partie la plus importante est le gros boîtier principal. Celui-ci fait <span style="background-color: rgb(241, 196, 15);">...</span> de large,<span style="background-color: rgb(241, 196, 15);"> ... </span>de haut et<span style="background-color: rgb(241, 196, 15);"> ...</span> de long. À l'intérieur une grande cavité est laissée pour permettre de tenir les différents composants électriques. L'avant de la pièce possède la pièce de puzzle complémentaire au support moteur, le rond de à un diamètre de 15,5mm. À partir du haut, au bout de<span style="background-color: rgb(241, 196, 15);"> ...</span>mm, la face avant recule de 4mm pour que permettre à un roulement à billes de rouler sur le bord du coulommiers. Sur la partie basse, deux roues sont placés sur un arc de cercle fictif de 735mm de diamètre. Cet arc a le même foyer que le coulommiers, les roues ainsi inclinées d'un angle de 6,60° à partir de l'axe central de la pièce </span><span dir="auto" style="color: rgb(0, 0, 0);">servent à la pièce à tourner plus facilement. </span>
2. <span dir="auto" style="color: rgb(0, 0, 0);">La deuxième partie est sur la partie haute de la pièce. Il s'agit d'un socle ayant à l'avant de trous de 8,25mm de rayon permettant l'encoche du bras photographique.</span>

<span dir="auto" style="color: rgb(0, 0, 0);"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Fichier STL et FCStd de la pièce décrite : </span></span></span></span></span></span></span>

<span dir="auto" style="color: rgb(0, 0, 0);"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">[Pièce arrière.stl](https://wiki.fablab.sorbonne-universite.fr/BookStack/attachments/1840)</span></span></span></span></span></span></span>

<span dir="auto" style="color: rgb(0, 0, 0);"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">[Pièce arrière.FCStd](https://wiki.fablab.sorbonne-universite.fr/BookStack/attachments/1839)</span></span></span></span></span></span></span>

<span style="text-decoration: underline;">**<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">ARDUINO</span></span></span></span></span></span>**</span>

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Aujourd'hui j'ai revu le code pour notre moteur afin que celui-ci réalise 20° sur les coulommiers et non par rapport à l'axe du moteur.</span></span></span></span></span></span>

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Réalisation d'un autre montage avec le moteur NEMA 17, moteur pas à pas de 12 V :</span></span></span></span></span></span>

- <span style="text-decoration: underline;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Matériels :</span></span></span></span></span></span></span>
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Arduino Uno + câble USB de liaison Arduino/Ordinateur</span></span></span></span></span></span>
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Câbles de connexion</span></span></span></span></span></span>
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Moteur Shield</span></span></span></span></span></span>
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Moteur NEMA 17 pas à pas</span></span></span></span>

- <span style="text-decoration: underline;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Schéma de connexion :</span></span></span></span></span></span></span>

[![Capture d'écran 2026-03-20 102959.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-03/scaled-1680-/bn5capture-decran-2026-03-20-102959.jpg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-03/bn5capture-decran-2026-03-20-102959.jpg)

- <span style="text-decoration: underline;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Code : </span></span></span></span></span></span></span>
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Petite partie calcule pour réaliser le code et essayer de trouver une façon pour que le moteur soit un mouvement plus fluide et plus saccadé et bruyant.</span></span></span></span></span></span>

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">coulommiers = 100 bosses ; rouage = 18 bosses ; moteur pas à pas = 200 pas / tour</span></span></span></span></span></span>

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">100/18=5.55 tours </span></span>*<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">--&gt; le bébé rouage effectuera donc 5.5 tour pour réaliser un tour complet du tour interne du coulommiers.</span></span>*</span></span></span></span>

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">200 x 5.55 = 1 111 pas </span></span>*<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">--&gt; le moteur lui devra donc réaliser 1111 pas pour faire 360° donc un tour complet du coulommiers.</span></span>*</span></span></span></span>

<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">1111 x 20/360 = 61.7 pas </span></span>*<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">--&gt; le moteur devra réalisé environ 62 pas pour réaliser 20° sur le coulommiers. </span></span>*</span></span></span></span>

<p class="callout warning"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">*<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">62 pas x 18 positions = 1 116 pas # 1 111 pas ! =&gt; possibilité d'alternance entre 62 et 61 pas pour obtenir pile 360° </span></span></span></span></span></span>*</span></span></span></span></p>

- - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Pour éviter que le moteur soit saccadé on peut voir pour augmenter la vitesse de déplacement/ ou la diminuer.</span></span></span></span></span></span>

```
#include <AFMotor_R4.h>

const int stepsPerRevolution = 200;   // pas moteur
const int stepsFor20Degrees = 62;     // calcul avec engrenage

AF_Stepper motor(stepsPerRevolution, 2);

void setup() {
  Serial.begin(9600);
  motor.setSpeed(10);  // vitesse RPM
}

void loop() {

  // 360° / 20° = 18 positions
  for(int i = 0; i < 18; i++) {

    motor.step(stepsFor20Degrees, FORWARD, SINGLE);

    Serial.print("Position : ");
    Serial.println(i + 1);

    delay(2000);   // pause entre chaque mouvement
  }

  Serial.println("Tour complet terminé");

  delay(10000);
}
```

- - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">1er code testé : FONCTIONNEL !</span></span>
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Testez un autre code avec une alternance de 61 et 62 pas pour avoir pile 360° et voir si celui ci est plus fluide ou non.</span></span>

```
#include <AFMotor_R4.h>

const int stepsPerRevolution = 200;

AF_Stepper motor(stepsPerRevolution, 2);

int positionIndex = 0;

// Séquence corrigée pour obtenir exactement 360°
int stepSequence[18] = {
  62,62,62,62,62,62,
  62,62,62,
  61,
  62,62,62,62,62,
  62,62,
  61
};

void setup() {

  Serial.begin(9600);

  motor.setSpeed(10);

  Serial.println("Systeme de rotation initialise");

}

void loop() {

  int steps = stepSequence[positionIndex];

  motor.step(steps, FORWARD, INTERLEAVE);

  Serial.print("Position : ");
  Serial.println(positionIndex + 1);

  positionIndex++;

  delay(2000);   // pause de 2 s entre chaque mouvement

  if(positionIndex >= 18)
  {
    positionIndex = 0;

    Serial.println("Tour complet termine");

    delay(10000);   // pause de 10 s après le tour complet
  }
}
```

<p class="callout info"><span dir="auto" style="vertical-align: inherit; color: rgb(35, 111, 161);"><span dir="auto" style="vertical-align: inherit;">Toujours un problème de fluidité, voir pour améliorer le 1er code ou le 2ème. </span></span></p>

<p class="callout info"><span dir="auto" style="vertical-align: inherit; color: rgb(35, 111, 161);"><span dir="auto" style="vertical-align: inherit;">Test de différentes vitesses : 5 et 30 plus ou moins OK, toujours saccadé et bruyant --&gt; voir microstep ?</span></span></p>

*<span style="text-decoration: underline;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Recherche pour les caméras : </span></span><span dir="auto">**<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Arducam Shield Mini 5MP Plus</span></span>**<span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"> :</span></span></span></span>*

- <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Montage possible :</span></span>

<span style="text-decoration: underline;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">[![ArduinoConnection--300x300  Cablage caméra.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-03/scaled-1680-/arduinoconnection-300x300-cablage-camera.jpg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-03/arduinoconnection-300x300-cablage-camera.jpg)</span></span></span></span></span></span></span>

- - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Carte SD nécessaire ? </span></span>
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Dans ce montage, le module caméra 5MP serait utilisé avec une carte Arduino UNO pour capturer des images à intervalles réguliers. Sans carte microSD, les photos ne peuvent pas être stockées directement sur le système embarqué.</span></span>
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">À la place, les données de l'image au format JPEG seront envoyées via la liaison série (USB) vers un ordinateur. L'Arduino déclenche une prise de vue, transmet les données binaires correspondantes, puis attend 30 secondes avant de recommencer (pour notre projet).</span></span>
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Comme l'Arduino Uno possède une mémoire limitée, il est nécessaire de réduire la résolution des images afin d'assurer un fonctionnement stable. --&gt; utilisation d'une autre carte ?</span></span>
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Les images reçues sur l'ordinateur peuvent ensuite être reconstruites et visualisées à l'aide d'un programme externe, par exemple en Python.</span></span>

<p class="callout success"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span style="color: rgb(22, 145, 121);">**Prochaine séance --&gt;**</span> Test de 25 - 5° pour améliorer la fluidité + CAMÉRAS ! redemander les bibliothèques.</span></span></p>

</details><details id="bkmrk-20%2F03%2F2026-on-gal%C3%A8re"><summary>20/03/2026\_Retour des recherches sur les caméras et conception du bras</summary>

**<span style="background-color: rgb(248, 202, 198);">On galère avec les caméras....</span>**

**<span dir="auto">Partie conception 3D : <span style="color: rgb(224, 62, 45);">Création du bras photographique</span></span>**

Ce bras s'encoche dans la partie haute de la pièce arrière. Il est conçu en une pièce unique (<span style="color: rgb(224, 62, 45);">dû à la limitation de taille d'impression de l'imprimante 3D, la pièce a été scindé en deux pour les tests<span style="color: rgb(0, 0, 0);">) en trois parties. </span></span>

1. <span style="color: rgb(224, 62, 45);"><span style="color: rgb(0, 0, 0);">La partie basale est composée de deux tubes permettant l'insertion à la pièce arrière. Les encoches étant de 8,25mm de rayon, le tubes ont un rayon de 7,25mm.</span></span>
2. <span style="color: rgb(224, 62, 45);"><span style="color: rgb(0, 0, 0);">Le bras incurvé, arc de cercle de 692 mm de diamètre. Il forme un angle de <span style="color: rgb(241, 196, 15);">72,70°</span>. Afin d'alléger la structure, mais aussi de limiter l'utilisation de plastique, des triangles équilatéraux d'une arête de 34,1738mm sont disposés de façon alterne. Cinq triangles avec la pointe distal au support central, quatre avec une pointe qui lui</span></span><span style="color: rgb(224, 62, 45);"><span style="color: rgb(0, 0, 0);"> est proximal.</span></span>
3. <span style="color: #000000;">Deux nouvelles encoches à 19,96° et 59,39° de 7mm de diamètre permettront l'insertion des <span style="caret-color: rgb(0, 0, 0);">caméras.</span></span>

<p class="callout warning">**<span style="color: rgb(230, 126, 35);"><span style="caret-color: rgb(0, 0, 0);">Le bras a due être sectionné pour l'impression !</span></span>**</p>

<span style="color: #000000;"><span style="caret-color: rgb(0, 0, 0);"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Fichiers STL et FCStd de la pièce décrite : </span></span></span></span></span></span></span></span>

<span style="color: #000000;"><span style="caret-color: rgb(0, 0, 0);"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">[Bras.stl](https://wiki.fablab.sorbonne-universite.fr/BookStack/attachments/1838)</span></span></span></span></span></span></span></span>

<span style="color: #000000;"><span style="caret-color: rgb(0, 0, 0);"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">[Bras.FCStd](https://wiki.fablab.sorbonne-universite.fr/BookStack/attachments/1837)</span></span></span></span></span></span></span></span>

</details><details id="bkmrk-le-bras-du-tournicay"><summary>27/03/2026\_Comprendre la caméra...</summary>

Le bras du Tournicayou est imprimé !

<p class="callout warning align-center">**!!!! Comprendre les caméras !!!!**</p>

- <span style="text-decoration: underline;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Matériels :</span></span></span></span></span></span></span>
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Arduino Uno + câble USB de liaison Arduino/Ordinateur</span></span></span></span></span></span>
    - <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Câbles de connexion</span></span></span></span></span></span>
    - Module caméra Mini 5MP Plus OV5642

- <span style="text-decoration: underline;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Schéma de connexion :</span></span></span></span></span></span></span>

<span style="text-decoration: underline;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">[![ArduinoConnection--300x300  Cablage caméra.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-03/scaled-1680-/arduinoconnection-300x300-cablage-camera.jpg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-03/arduinoconnection-300x300-cablage-camera.jpg)</span></span></span></span></span></span></span>

- <span dir="auto"><span style="text-decoration: underline;">Code </span>: </span>
    - <span dir="auto">Essais avec énormément de codes différents, beaucoup de difficultés pour ce qui est de comprendre l'utilisation des différentes fonctions lié à la caméra.</span>

<details><summary>Super code pour notre caméra de l'enfer</summary>

```
#include <Wire.h>
#include <SPI.h>
#include <ArduCAM.h>
#include "memorysaver.h"

#if !(defined OV5642_MINI_5MP_PLUS)
  #error Please select the hardware platform and camera module in memorysaver.h
#endif

#define BMPIMAGEOFFSET 66

const int CS = 7;
bool is_header = false;
int mode = 0;
uint8_t start_capture = 0;

ArduCAM myCAM(OV5642, CS);

uint8_t read_fifo_burst(ArduCAM myCAM);

void setup() {
  uint8_t vid, pid;
  uint8_t temp;

  Wire.begin();
  Serial.begin(921600);

  Serial.println(F("ACK CMD ArduCAM Start! END"));

  pinMode(CS, OUTPUT);
  digitalWrite(CS, HIGH);

  SPI.begin();

  // Reset caméra
  myCAM.write_reg(0x07, 0x80);
  delay(100);
  myCAM.write_reg(0x07, 0x00);
  delay(100);

  // Test SPI
  while (1) {
    myCAM.write_reg(ARDUCHIP_TEST1, 0x55);
    temp = myCAM.read_reg(ARDUCHIP_TEST1);
    if (temp != 0x55) {
      Serial.println(F("ACK CMD SPI interface Error! END"));
      delay(1000);
    } else {
      Serial.println(F("ACK CMD SPI interface OK. END"));
      break;
    }
  }

  // Vérif caméra
  while (1) {
    myCAM.wrSensorReg16_8(0xff, 0x01);
    myCAM.rdSensorReg16_8(OV5642_CHIPID_HIGH, &vid);
    myCAM.rdSensorReg16_8(OV5642_CHIPID_LOW, &pid);

    if ((vid != 0x56) || (pid != 0x42)) {
      Serial.println(F("ACK CMD Can't find OV5642 module! END"));
      delay(1000);
    } else {
      Serial.println(F("ACK CMD OV5642 detected. END"));
      break;
    }
  }

  myCAM.set_format(JPEG);
  myCAM.InitCAM();
  myCAM.OV5642_set_JPEG_size(OV5642_320x240);

  delay(1000);

  myCAM.clear_fifo_flag();
}

void loop() {
  uint8_t temp;

  if (Serial.available()) {
    temp = Serial.read();

    switch (temp) {

      case 0x10:
        mode = 1;
        start_capture = 1;
        Serial.println(F("ACK CMD CAM start single shoot. END"));
        break;

      case 0x11:
        myCAM.set_format(JPEG);
        myCAM.InitCAM();
        break;

      default:
        break;
    }
  }

  if (mode == 1) {
    if (start_capture == 1) {
      myCAM.flush_fifo();
      myCAM.clear_fifo_flag();
      myCAM.start_capture();
      start_capture = 0;
    }

    if (myCAM.get_bit(ARDUCHIP_TRIG, CAP_DONE_MASK)) {
      Serial.println(F("ACK CMD CAM Capture Done. END"));
      read_fifo_burst(myCAM);
      myCAM.clear_fifo_flag();
    }
  }
}

// --- Version corrigée pour Host App ---
uint8_t read_fifo_burst(ArduCAM myCAM) {
  uint8_t temp = 0, temp_last = 0;
  uint32_t length = myCAM.read_fifo_length();

  if (length == 0 || length >= MAX_FIFO_SIZE) {
    Serial.println(F("ACK CMD Size error. END"));
    return 0;
  }

  myCAM.CS_LOW();
  myCAM.set_fifo_burst();

  temp = SPI.transfer(0x00);
  length--;

  while (length--) {
    temp_last = temp;
    temp = SPI.transfer(0x00);

    if (is_header) {
      Serial.write(temp);   // flux JPEG pur
    } else if ((temp == 0xD8) && (temp_last == 0xFF)) {
      is_header = true;
      Serial.write(temp_last);
      Serial.write(temp);  // début JPEG
    }

    if ((temp == 0xD9) && (temp_last == 0xFF)) break;  // fin JPEG
  }

  myCAM.CS_HIGH();
  is_header = false;

  return 1;
}
```

</details>- - <span dir="auto">Voici ci-dessus le dernier code utilisé pour obtenir des photos et qui est lié avec l'ArduCam Host App.</span>
    - <span dir="auto">Dernier test plutôt positifs avec l'ArduCam Host App mais toujours pas un succès...</span>

<p class="callout info">**<span dir="auto" style="color: rgb(35, 111, 161);">D'après le logiciel on arrive à prendre des photos (ArduCam Host App --&gt; photo ci-dessous)</span>**</p>

<p class="callout warning"><span dir="auto"><span style="color: rgb(230, 126, 35);">**Où sont les photos !?**</span> C'est le plus gros des problèmes, réussir à retrouver les photos et savoir si celle-ci se sont réellement enregistrées ou non, ou si plus généralement on arrive vraiment à prendre des photos.</span></p>

<p class="callout success"><span dir="auto">**<span style="color: rgb(22, 145, 121);">Pour la prochaine séance --&gt;</span>** résoudre le problème : où sont les photos ?!?</span></p>

<span dir="auto">[![Capture d'écran 2026-03-27 163719.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-05/scaled-1680-/capture-decran-2026-03-27-163719.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-05/capture-decran-2026-03-27-163719.png)</span>

</details><details id="bkmrk-03%2F04%2F2026-objectif-"><summary>03/04/2026\_Où sont les photos et révision du Coulommiers</summary>

<p class="callout success"><span style="color: rgb(22, 145, 121);">**<span style="text-decoration: underline;">Objectif </span>: se débarrasser du problème CAMÉRA ! Où sont les photos sur l'ordinateur ? Les photos sont-elles prises ?**</span></p>

[https://www.arducam.com/camera-modules/5mp-ov5642/](https://www.arducam.com/camera-modules/5mp-ov5642/)

Fab a du fil à retordre

Le code photo fonctionne, il est possible de prendre des photos !!!!!! On sait où elles sont !

<p class="callout danger"><span style="text-decoration: underline;"><span style="color: rgb(224, 62, 45); text-decoration: underline;">**Nos différents problèmes avec les photos maintenant qu'on sait où elles sont :**</span></span></p>

- Au bout d'un certain nombre de photos, il n'est plus possible d'en prendre (D'après Claude c'est un problème de FIFO où Host App/Arduino essaye de lire la photo avant qu'elle ne soit prise).
- Il faut trouver un moyen d'automatiser les photos pour un tour complet de coulommiers.
- Reste à savoir si fonctionne avec deux caméras.

**<span dir="auto">Partie conception 3D : <span style="color: rgb(224, 62, 45);">Révision du coulommiers</span></span>**

<span dir="auto" style="color: rgb(0, 0, 0);">La première version du coulommiers avait un léger problème de dimension. Notamment avec ses 20 centimètres de haut. En réalité, le coulommiers ne nécessite que 4 centimètres de haut. Autre problème auquel faire face... 60 centimètre de diamètre sort du plateau d'impression de l'imprimante 3D. </span>

<span dir="auto" style="color: rgb(0, 0, 0);">Ainsi le nouveau coulommiers ne fait "que" 4 centimètre de haut, est monté sur un un plateau support de 5 millimètres de diamètre permettant le roulement de la pièce arrière. La structure montante du coulommiers est creuse, permettant d'user de moins de plastique. Le coulommiers a été modélisé en quart, avec des pièces mâles femelle basales permettant un montage en puzzle. Ces structures sont ainsi disposées pour limiter un maximum au support moteur de rouler sur des failles. Cependant la partie mâle dépasse toujours du support d'impression. </span>

<span dir="auto" style="color: rgb(0, 0, 0);">La pièce est encore à revoir. Durant cette révision, le plateau support sera retravaillé afin de limiter au mieux l'usage de plastique.</span>

<span dir="auto" style="color: rgb(0, 0, 0);"><span style="color: #000000;"><span style="caret-color: rgb(0, 0, 0);"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Fichiers STL et FCStd de la pièce décrite : </span></span></span></span></span></span></span></span></span>

<span dir="auto" style="color: rgb(0, 0, 0);">[Coulommiers rerererererererevisité-Cut.stl](https://wiki.fablab.sorbonne-universite.fr/BookStack/attachments/1836)</span>

<span dir="auto" style="color: rgb(0, 0, 0);">[Coulommiers rerererererererevisité.FCStd](https://wiki.fablab.sorbonne-universite.fr/BookStack/attachments/1835)</span>

<span dir="auto" style="color: rgb(0, 0, 0);">[![04 blabla.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-05/scaled-1680-/04-blabla.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-05/04-blabla.png)</span>

</details><details id="bkmrk-10%2F04%2F2026-photos-mu"><summary>10/04/2026\_ Caméra OK = Réflexion sur la suite</summary>

<p class="callout success align-center"><span style="color: rgb(22, 145, 121);">**<span style="text-decoration: underline;">*!!!! Rappel important !!!!* </span>: Nous avons désormais des photos et on sait où on peut les retrouver !**</span></p>

<p class="callout info">**<span style="color: rgb(35, 111, 161);">Les différents problèmes de la dernière fois qu'on a réussi à régler :</span>**</p>

- En reprenant le code de la dernière fois pour faire les photos, ce n'était pas possible de faire des photos multiples. On a donc chercher un autre code, que l'on a par la suite légèrement modifier afin de prendre plusieurs photos a la suite. Grâce à ce code on a donc pu prendre plusieurs photos d'affiler sans problème de FIFO mais également d'un sens à automatiser pour réaliser un tour complet du Coulommiers. On peut régler le nombre de photos que l'on veut réaliser et le temps d'attente donc entre chacun d'entre elles.

<details><summary>Code super méga ultra trop long pour caméra</summary>

```
// ArduCAM Mini demo (C)2017 Lee
// Web: http://www.ArduCAM.com
// This program is a demo of how to use most of the functions
// of the library with ArduCAM Mini camera, and can run on any Arduino platform.
// This demo was made for ArduCAM_Mini_5MP_Plus.
// It needs to be used in combination with PC software.
// It can test OV5642 functions.
//

// This program requires the ArduCAM V4.0.0 (or later) library and ArduCAM_Mini_5MP_Plus
// and use Arduino IDE 1.6.8 compiler or above
#include <Wire.h>
#include <ArduCAM.h>
#include <SPI.h>
#include "memorysaver.h"
//This demo can only work on OV5642_MINI_5MP_Plus  platform.
//#if !(defined OV5642_MINI_5MP_PLUS)
//  #error Please select the hardware platform and camera module in the ../libraries/ArduCAM/memorysaver.h file
//#endif
#define BMPIMAGEOFFSET 66
const char bmp_header[BMPIMAGEOFFSET] PROGMEM =
{
  0x42, 0x4D, 0x36, 0x58, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x28, 0x00,
  0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0xF0, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x00, 0x03, 0x00,
  0x00, 0x00, 0x00, 0x58, 0x02, 0x00, 0xC4, 0x0E, 0x00, 0x00, 0xC4, 0x0E, 0x00, 0x00, 0x00, 0x00,
  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x00, 0x00, 0xE0, 0x07, 0x00, 0x00, 0x1F, 0x00,
  0x00, 0x00
};
// set pin 7 as the slave select for the digital pot:
const int CS = 7;
bool is_header = false;
int mode = 0;
uint8_t start_capture = 0;
 ArduCAM myCAM( OV5642, CS );  
 // === MULTI PHOTO ===
unsigned long lastCapture = 0;
const int interval = 3000; // délai entre photos (ms)
const int nbPhotos = 20;    // nombre de photos
int compteur = 0;
bool multiShot = false;
uint8_t read_fifo_burst(ArduCAM myCAM);
void setup() {
// put your setup code here, to run once:
uint8_t vid, pid;
uint8_t temp;
#if defined(__SAM3X8E__)
  Wire1.begin();
  Serial.begin(115200);
#else
  Wire.begin();
  Serial.begin(921600);
#endif
Serial.println(F("ACK CMD ArduCAM Start! END"));
// set the CS as an output:
pinMode(CS, OUTPUT);
digitalWrite(CS, HIGH);
// initialize SPI:
SPI.begin();
 //Reset the CPLD
myCAM.write_reg(0x07, 0x80);
delay(100);
myCAM.write_reg(0x07, 0x00);
delay(100); 
while(1){
  //Check if the ArduCAM SPI bus is OK
  myCAM.write_reg(ARDUCHIP_TEST1, 0x55);
  temp = myCAM.read_reg(ARDUCHIP_TEST1);
  if (temp != 0x55){
    Serial.println(F("ACK CMD SPI interface Error! END"));
    delay(1000);continue;
  }else{
    Serial.println(F("ACK CMD SPI interface OK. END"));break;
  }
}
  while(1){
    //Check if the camera module type is OV5642
    myCAM.wrSensorReg16_8(0xff, 0x01);
    myCAM.rdSensorReg16_8(OV5642_CHIPID_HIGH, &vid);
    myCAM.rdSensorReg16_8(OV5642_CHIPID_LOW, &pid);
    if((vid != 0x56) || (pid != 0x42)){
      Serial.println(F("ACK CMD Can't find OV5642 module! END"));
      delay(1000);continue;
    }
    else{
      Serial.println(F("ACK CMD OV5642 detected. END"));break;
    } 
  }
//Change to JPEG capture mode and initialize the OV5642 module
myCAM.set_format(JPEG);
myCAM.InitCAM();

  myCAM.write_reg(ARDUCHIP_TIM, VSYNC_LEVEL_MASK);   //VSYNC is active HIGH
  myCAM.OV5642_set_JPEG_size(OV5642_320x240);
delay(1000);
myCAM.clear_fifo_flag();
myCAM.write_reg(ARDUCHIP_FRAMES,0x00);
}
void loop() {
// put your main code here, to run repeatedly:

uint8_t temp = 0xff, temp_last = 0;
bool is_header = false;
if (Serial.available())
{
  temp = Serial.read();
  switch (temp)
  {
    case 0:
      myCAM.OV5642_set_JPEG_size(OV5642_320x240);delay(1000);
      Serial.println(F("ACK CMD switch to OV5642_320x240 END"));
    temp = 0xff;
    break;
    case 1:
      myCAM.OV5642_set_JPEG_size(OV5642_640x480);delay(1000);
      Serial.println(F("ACK CMD switch to OV5642_640x480 END"));
    temp = 0xff;
    break;
    case 2: 
      myCAM.OV5642_set_JPEG_size(OV5642_1024x768);delay(1000);
      Serial.println(F("ACK CMD switch to OV5642_1024x768 END"));
    temp = 0xff;
    break;
    case 3:
    temp = 0xff;
      myCAM.OV5642_set_JPEG_size(OV5642_1280x960);delay(1000);
      Serial.println(F("ACK CMD switch to OV5642_1280x960 END"));
    break;
    case 4:
    temp = 0xff;
      myCAM.OV5642_set_JPEG_size(OV5642_1600x1200);delay(1000);
      Serial.println(F("ACK CMD switch to OV5642_1600x1200 END"));
    break;
    case 5:
    temp = 0xff;
      myCAM.OV5642_set_JPEG_size(OV5642_2048x1536);delay(1000);
      Serial.println(F("ACK CMD switch to OV5642_2048x1536 END"));
    break;
    case 6:
    temp = 0xff;
      myCAM.OV5642_set_JPEG_size(OV5642_2592x1944);delay(1000);
      Serial.println(F("ACK CMD switch to OV5642_2592x1944 END"));
    break;
    case 0x10:
    mode = 1;
    temp = 0xff;
    start_capture = 1;
    Serial.println(F("ACK CMD CAM start single shoot. END"));
    break;
    case 0x11: 
    temp = 0xff;
    myCAM.set_format(JPEG);
    myCAM.InitCAM();
    #if !(defined (OV2640_MINI_2MP))
    myCAM.set_bit(ARDUCHIP_TIM, VSYNC_LEVEL_MASK);
    #endif
    break;
    case 0x20:
    mode = 2;
    temp = 0xff;
    start_capture = 2;
    Serial.println(F("ACK CMD CAM start video streaming. END"));
    break;
    case 0x30:
    mode = 3;
    temp = 0xff;
    start_capture = 3;
    Serial.println(F("ACK CMD CAM start single shoot. END"));
    break;
    case 0x31:
    temp = 0xff;
    myCAM.set_format(BMP);
    myCAM.InitCAM();     
    myCAM.clear_bit(ARDUCHIP_TIM, VSYNC_LEVEL_MASK);
    myCAM.wrSensorReg16_8(0x3818, 0x81);
    myCAM.wrSensorReg16_8(0x3621, 0xA7);
    break;
    case 0x40:
    myCAM.OV5642_set_Light_Mode(Advanced_AWB);temp = 0xff;
     Serial.println(F("ACK CMD Set to Advanced_AWB END"));break;
    case 0x41:
    myCAM.OV5642_set_Light_Mode(Simple_AWB);temp = 0xff;
     Serial.println(F("ACK CMD Set to Simple_AWB END"));break;
     case 0x42:
    myCAM.OV5642_set_Light_Mode(Manual_day);temp = 0xff;
     Serial.println(F("ACK CMD Set to Manual_day END"));break;
     case 0x43:
    myCAM.OV5642_set_Light_Mode(Manual_A);temp = 0xff;
     Serial.println(F("ACK CMD Set to Manual_A END"));break;
     case 0x44:
    myCAM.OV5642_set_Light_Mode(Manual_cwf);temp = 0xff;
     Serial.println(F("ACK CMD Set to Manual_cwf END"));break;
     case 0x45:
    myCAM.OV5642_set_Light_Mode(Manual_cloudy);temp = 0xff;
     Serial.println(F("ACK CMD Set to Manual_cloudy END"));break;
      case 0x50:
    myCAM.OV5642_set_Color_Saturation(Saturation4);temp = 0xff;
     Serial.println(F("ACK CMD Set to Saturation+4 END"));break;
   case 0x51:
      myCAM.OV5642_set_Color_Saturation(Saturation3);temp = 0xff;
     Serial.println(F("ACK CMD Set to Saturation+3 END"));break;
   case 0x52:
    myCAM.OV5642_set_Color_Saturation(Saturation2);temp = 0xff;
   Serial.println(F("ACK CMD Set to Saturation+2 END"));break;
  case 0x53:
    myCAM.OV5642_set_Color_Saturation(Saturation1);temp = 0xff;
   Serial.println(F("ACK CMD Set to Saturation+1 END"));break;
   case 0x54:
    myCAM.OV5642_set_Color_Saturation(Saturation0);temp = 0xff;
   Serial.println(F("ACK CMD Set to Saturation+0 END"));break;
   case 0x55:
    myCAM.OV5642_set_Color_Saturation(Saturation_1);temp = 0xff;
   Serial.println(F("ACK CMD Set to Saturation-1 END"));break;
   case 0x56:
    myCAM.OV5642_set_Color_Saturation(Saturation_2);temp = 0xff;
   Serial.println(F("ACK CMD Set to Saturation-2"));break;
    case 0x57:
    myCAM.OV5642_set_Color_Saturation(Saturation_3);temp = 0xff;
   Serial.println(F("ACK CMD Set to Saturation-3 END"));break;
   case 0x58:
  myCAM.OV5642_set_Light_Mode(Saturation_4);temp = 0xff;
   Serial.println(F("ACK CMD Set to Saturation-4 END"));break; 
   case 0x60:
  myCAM.OV5642_set_Brightness(Brightness4);temp = 0xff;
   Serial.println(F("ACK CMD Set to Brightness+4 END"));break;
  case 0x61:
  myCAM.OV5642_set_Brightness(Brightness3);temp = 0xff;
   Serial.println(F("ACK CMD Set to Brightness+3 END"));break; 
  case 0x62:
  myCAM.OV5642_set_Brightness(Brightness2);temp = 0xff;
   Serial.println(F("ACK CMD Set to Brightness+2 END"));break; 
   case 0x63:
  myCAM.OV5642_set_Brightness(Brightness1);temp = 0xff;
   Serial.println(F("ACK CMD Set to Brightness+1 END"));break; 
   case 0x64:
  myCAM.OV5642_set_Brightness(Brightness0);temp = 0xff;
   Serial.println(F("ACK CMD Set to Brightness+0 END"));break; 
    case 0x65:
  myCAM.OV5642_set_Brightness(Brightness_1);temp = 0xff;
   Serial.println(F("ACK CMD Set to Brightness-1 END"));break; 
     case 0x66:
  myCAM.OV5642_set_Brightness(Brightness_2);temp = 0xff;
   Serial.println(F("ACK CMD Set to Brightness-2 END"));break; 
    case 0x67:
  myCAM.OV5642_set_Brightness(Brightness_3);temp = 0xff;
   Serial.println(F("ACK CMD Set to Brightness-3 END"));break; 
    case 0x68:
  myCAM.OV5642_set_Brightness(Brightness_4);temp = 0xff;
   Serial.println(F("ACK CMD Set to Brightness-4 END"));break;
case 0x70:
  myCAM.OV5642_set_Contrast(Contrast4);temp = 0xff;
   Serial.println(F("ACK CMD Set to Contrast+4 END"));break;
  case 0x71:
  myCAM.OV5642_set_Contrast(Contrast3);temp = 0xff;
   Serial.println(F("ACK CMD Set to Contrast+3 END"));break; 
  case 0x72:
  myCAM.OV5642_set_Contrast(Contrast2);temp = 0xff;
   Serial.println(F("ACK CMD Set to Contrast+2 END"));break; 
   case 0x73:
  myCAM.OV5642_set_Contrast(Contrast1);temp = 0xff;
   Serial.println(F("ACK CMD Set to Contrast+1 END"));break; 
   case 0x74:
  myCAM.OV5642_set_Contrast(Contrast0);temp = 0xff;
   Serial.println(F("ACK CMD Set to Contrast+0 END"));break; 
    case 0x75:
  myCAM.OV5642_set_Contrast(Contrast_1);temp = 0xff;
   Serial.println(F("ACK CMD Set to Contrast-1 END"));break; 
     case 0x76:
  myCAM.OV5642_set_Contrast(Contrast_2);temp = 0xff;
   Serial.println(F("ACK CMD Set to Contrast-2 END"));break; 
    case 0x77:
  myCAM.OV5642_set_Contrast(Contrast_3);temp = 0xff;
   Serial.println(F("ACK CMD Set to Contrast-3 END"));break; 
    case 0x78:
  myCAM.OV5642_set_Contrast(Contrast_4);temp = 0xff;
   Serial.println(F("ACK CMD Set to Contrast-4 END"));break;
   case 0x80: 
    myCAM.OV5642_set_hue(degree_180);temp = 0xff;
     Serial.println(F("ACK CMD Set to -180 degree END"));break;   
   case 0x81: 
   myCAM.OV5642_set_hue(degree_150);temp = 0xff;
     Serial.println(F("ACK CMD Set to -150 degree END"));break;  
   case 0x82: 
   myCAM.OV5642_set_hue(degree_120);temp = 0xff;
     Serial.println(F("ACK CMD Set to -120 degree END"));break;  
   case 0x83: 
   myCAM.OV5642_set_hue(degree_90);temp = 0xff;
     Serial.println(F("ACK CMD Set to -90 degree END"));break;   
    case 0x84: 
   myCAM.OV5642_set_hue(degree_60);temp = 0xff;
     Serial.println(F("ACK CMD Set to -60 degree END"));break;   
    case 0x85: 
   myCAM.OV5642_set_hue(degree_30);temp = 0xff;
     Serial.println(F("ACK CMD Set to -30 degree END"));break;  
     case 0x86: 
   myCAM.OV5642_set_hue(degree_0);temp = 0xff;
     Serial.println(F("ACK CMD Set to 0 degree END"));break; 
   case 0x87: 
   myCAM.OV5642_set_hue(degree30);temp = 0xff;
     Serial.println(F("ACK CMD Set to 30 degree END"));break;
   case 0x88: 
   myCAM.OV5642_set_hue(degree60);temp = 0xff;
     Serial.println(F("ACK CMD Set to 60 degree END"));break;
    case 0x89: 
   myCAM.OV5642_set_hue(degree90);temp = 0xff;
     Serial.println(F("ACK CMD Set to 90 degree END"));break;
     case 0x8a: 
   myCAM.OV5642_set_hue(degree120);temp = 0xff;
     Serial.println(F("ACK CMD Set to 120 degree END"));break ; 
   case 0x8b: 
   myCAM.OV5642_set_hue(degree150);temp = 0xff;
     Serial.println(F("ACK CMD Set to 150 degree END"));break ;
   case 0x90: 
   myCAM.OV5642_set_Special_effects(Normal);temp = 0xff;
     Serial.println(F("ACK CMD Set to Normal END"));break ;
      case 0x91: 
   myCAM.OV5642_set_Special_effects(BW);temp = 0xff;
     Serial.println(F("ACK CMD Set to BW END"));break ;
    case 0x92: 
   myCAM.OV5642_set_Special_effects(Bluish);temp = 0xff;
     Serial.println(F("ACK CMD Set to Bluish END"));break ;
      case 0x93: 
   myCAM.OV5642_set_Special_effects(Sepia);temp = 0xff;
     Serial.println(F("ACK CMD Set to Sepia END"));break ;
    case 0x94: 
   myCAM.OV5642_set_Special_effects(Reddish);temp = 0xff;
     Serial.println(F("ACK CMD Set to Reddish END"));break ;
   case 0x95: 
   myCAM.OV5642_set_Special_effects(Greenish);temp = 0xff;
     Serial.println(F("ACK CMD Set to Greenish END"));break ;
   case 0x96: 
   myCAM.OV5642_set_Special_effects(Negative);temp = 0xff;
     Serial.println(F("ACK CMD Set to Negative END"));break ;
   case 0xA0: 
   myCAM.OV5642_set_Exposure_level(Exposure_17_EV);temp = 0xff;
     Serial.println(F("ACK CMD Set to -1.7EV"));break ;  
     case 0xA1: 
   myCAM.OV5642_set_Exposure_level(Exposure_13_EV);temp = 0xff;
     Serial.println(F("ACK CMD Set to -1.3EV END"));break ;
      case 0xA2: 
   myCAM.OV5642_set_Exposure_level(Exposure_10_EV);temp = 0xff;
     Serial.println(F("ACK CMD Set to -1.0EV END"));break ; 
    case 0xA3: 
   myCAM.OV5642_set_Exposure_level(Exposure_07_EV);temp = 0xff;
     Serial.println(F("ACK CMD Set to -0.7EV END"));break ;
     case 0xA4: 
   myCAM.OV5642_set_Exposure_level(Exposure_03_EV);temp = 0xff;
     Serial.println(F("ACK CMD Set to -0.3EV END"));break ;
   case 0xA5: 
   myCAM.OV5642_set_Exposure_level(Exposure_default);temp = 0xff;
     Serial.println(F("ACK CMD Set to -Exposure_default END"));break ;
    case 0xA6: 
   myCAM.OV5642_set_Exposure_level(Exposure07_EV);temp = 0xff;
     Serial.println(F("ACK CMD Set to 0.7EV END"));break ;  
   case 0xA7: 
   myCAM.OV5642_set_Exposure_level(Exposure10_EV);temp = 0xff;
     Serial.println(F("ACK CMD Set to 1.0EV END"));break ;
    case 0xA8: 
   myCAM.OV5642_set_Exposure_level(Exposure13_EV);temp = 0xff;
     Serial.println(F("ACK CMD Set to 1.3EV END"));break ; 
    case 0xA9: 
   myCAM.OV5642_set_Exposure_level(Exposure17_EV);temp = 0xff;
     Serial.println(F("ACK CMD Set to 1.7EV END"));break ; 
   case 0xB0: 
   myCAM.OV5642_set_Sharpness(Auto_Sharpness_default);temp = 0xff;
     Serial.println(F("ACK CMD Set to Auto Sharpness default END"));break ; 
    case 0xB1: 
   myCAM.OV5642_set_Sharpness(Auto_Sharpness1);temp = 0xff;
     Serial.println(F("ACK CMD Set to Auto Sharpness +1 END"));break ; 
    case 0xB2: 
   myCAM.OV5642_set_Sharpness(Auto_Sharpness2);temp = 0xff;
     Serial.println(F("ACK CMD Set to Auto Sharpness +2 END"));break ; 
      case 0xB3: 
   myCAM.OV5642_set_Sharpness(Manual_Sharpnessoff);temp = 0xff;
     Serial.println(F("ACK CMD Set to Auto Manual Sharpness off END"));break ; 
     case 0xB4: 
     myCAM.OV5642_set_Sharpness(Manual_Sharpness1);temp = 0xff;
     Serial.println(F("ACK CMD Set to Auto Manual Sharpness +1 END"));break ;
     case 0xB5: 
     myCAM.OV5642_set_Sharpness(Manual_Sharpness2);temp = 0xff;
     Serial.println(F("ACK CMD Set to Auto Manual Sharpness +2 END"));break ; 
     case 0xB6: 
     myCAM.OV5642_set_Sharpness(Manual_Sharpness3);temp = 0xff;
     Serial.println(F("ACK CMD Set to Auto Manual Sharpness +3 END"));break ;
     case 0xB7: 
     myCAM.OV5642_set_Sharpness(Manual_Sharpness4);temp = 0xff;
     Serial.println(F("ACK CMD Set to Auto Manual Sharpness +4 END"));break ;
    case 0xB8: 
     myCAM.OV5642_set_Sharpness(Manual_Sharpness5);temp = 0xff;
     Serial.println(F("ACK CMD Set to Auto Manual Sharpness +5 END"));break ;  
    case 0xC0: 
     myCAM.OV5642_set_Mirror_Flip(MIRROR);temp = 0xff;
     Serial.println(F("ACK CMD Set to MIRROR END"));break ;  
    case 0xC1: 
     myCAM.OV5642_set_Mirror_Flip(FLIP);temp = 0xff;
     Serial.println(F("ACK CMD Set to FLIP END"));break ; 
    case 0xC2: 
     myCAM.OV5642_set_Mirror_Flip(MIRROR_FLIP);temp = 0xff;
     Serial.println(F("ACK CMD Set to MIRROR&FLIP END"));break ;
    case 0xC3: 
     myCAM.OV5642_set_Mirror_Flip(Normal);temp = 0xff;
     Serial.println(F("ACK CMD Set to Normal END"));break ;
     case 0xD0: 
     myCAM.OV5642_set_Compress_quality(high_quality);temp = 0xff;
     Serial.println(F("ACK CMD Set to high quality END"));break ;
      case 0xD1: 
     myCAM.OV5642_set_Compress_quality(default_quality);temp = 0xff;
     Serial.println(F("ACK CMD Set to default quality END"));break ;
      case 0xD2: 
     myCAM.OV5642_set_Compress_quality(low_quality);temp = 0xff;
     Serial.println(F("ACK CMD Set to low quality END"));break ;

      case 0xE0: 
     myCAM.OV5642_Test_Pattern(Color_bar);temp = 0xff;
     Serial.println(F("ACK CMD Set to Color bar END"));break ;
      case 0xE1: 
     myCAM.OV5642_Test_Pattern(Color_square);temp = 0xff;
     Serial.println(F("ACK CMD Set to Color square END"));break ;
      case 0xE2: 
     myCAM.OV5642_Test_Pattern(BW_square);temp = 0xff;
     Serial.println(F("ACK CMD Set to BW square END"));break ;
     case 0xE3: 
     myCAM.OV5642_Test_Pattern(DLI);temp = 0xff;
     Serial.println(F("ACK CMD Set to DLI END"));break ;
      default:
      break;
  }
}
if (mode == 1)
{
  // Lancement du mode multi-photo
  if (start_capture == 1)
  {
    compteur = 0;
    multiShot = true;
    lastCapture = millis();
    start_capture = 0;
  }

  // Boucle de capture avec délai
  if (multiShot)
  {
    if (millis() - lastCapture >= interval)
    {
      lastCapture = millis();

      // Capture
      myCAM.flush_fifo();
      myCAM.clear_fifo_flag();
      myCAM.start_capture();

      // Attendre fin capture
      while (!myCAM.get_bit(ARDUCHIP_TRIG, CAP_DONE_MASK));

      Serial.println(F("ACK CMD CAM Capture Done. END"));

      // Envoi vers Host App
      read_fifo_burst(myCAM);

      myCAM.clear_fifo_flag();

      compteur++;

      if (compteur >= nbPhotos)
      {
        multiShot = false;
        Serial.println(F("ACK CMD Multi capture finished. END"));
      }
    }
  }
}
else if (mode == 2)
{
  while (1)
  {
    temp = Serial.read();
    if (temp == 0x21)
    {
      start_capture = 0;
      mode = 0;
      Serial.println(F("ACK CMD CAM stop video streaming. END"));
      break;
    }
    switch(temp){
       case 0x40:
    myCAM.OV5642_set_Light_Mode(Advanced_AWB);temp = 0xff;
     Serial.println(F("ACK CMD Set to Advanced_AWB END"));break;
    case 0x41:
    myCAM.OV5642_set_Light_Mode(Simple_AWB);temp = 0xff;
     Serial.println(F("ACK CMD Set to Simple_AWB END"));break;
     case 0x42:
    myCAM.OV5642_set_Light_Mode(Manual_day);temp = 0xff;
     Serial.println(F("ACK CMD Set to Manual_day END"));break;
     case 0x43:
    myCAM.OV5642_set_Light_Mode(Manual_A);temp = 0xff;
     Serial.println(F("ACK CMD Set to Manual_A END"));break;
     case 0x44:
    myCAM.OV5642_set_Light_Mode(Manual_cwf);temp = 0xff;
     Serial.println(F("ACK CMD Set to Manual_cwf END"));break;
     case 0x45:
    myCAM.OV5642_set_Light_Mode(Manual_cloudy);temp = 0xff;
     Serial.println(F("ACK CMD Set to Manual_cloudy END"));break;
      case 0x50:
    myCAM.OV5642_set_Color_Saturation(Saturation4);temp = 0xff;
     Serial.println(F("ACK CMD Set to Saturation+4 END"));break;
   case 0x51:
      myCAM.OV5642_set_Color_Saturation(Saturation3);temp = 0xff;
     Serial.println(F("ACK CMD Set to Saturation+3 END"));break;
   case 0x52:
    myCAM.OV5642_set_Color_Saturation(Saturation2);temp = 0xff;
   Serial.println(F("ACK CMD Set to Saturation+2 END"));break;
  case 0x53:
    myCAM.OV5642_set_Color_Saturation(Saturation1);temp = 0xff;
   Serial.println(F("ACK CMD Set to Saturation+1 END"));break;
   case 0x54:
    myCAM.OV5642_set_Color_Saturation(Saturation0);temp = 0xff;
   Serial.println(F("ACK CMD Set to Saturation+0 END"));break;
   case 0x55:
    myCAM.OV5642_set_Color_Saturation(Saturation_1);temp = 0xff;
   Serial.println(F("ACK CMD Set to Saturation-1 END"));break;
   case 0x56:
    myCAM.OV5642_set_Color_Saturation(Saturation_2);temp = 0xff;
   Serial.println(F("ACK CMD Set to Saturation-2 END"));break;
    case 0x57:
    myCAM.OV5642_set_Color_Saturation(Saturation_3);temp = 0xff;
   Serial.println(F("ACK CMD Set to Saturation-3 END"));break;
   case 0x58:
  myCAM.OV5642_set_Light_Mode(Saturation_4);temp = 0xff;
   Serial.println(F("ACK CMD Set to Saturation-4 END"));break; 
   case 0x60:
  myCAM.OV5642_set_Brightness(Brightness4);temp = 0xff;
   Serial.println(F("ACK CMD Set to Brightness+4 END"));break;
  case 0x61:
  myCAM.OV5642_set_Brightness(Brightness3);temp = 0xff;
   Serial.println(F("ACK CMD Set to Brightness+3 END"));break; 
  case 0x62:
  myCAM.OV5642_set_Brightness(Brightness2);temp = 0xff;
   Serial.println(F("ACK CMD Set to Brightness+2 END"));break; 
   case 0x63:
  myCAM.OV5642_set_Brightness(Brightness1);temp = 0xff;
   Serial.println(F("ACK CMD Set to Brightness+1 END"));break; 
   case 0x64:
  myCAM.OV5642_set_Brightness(Brightness0);temp = 0xff;
   Serial.println(F("ACK CMD Set to Brightness+0 END"));break; 
    case 0x65:
  myCAM.OV5642_set_Brightness(Brightness_1);temp = 0xff;
   Serial.println(F("ACK CMD Set to Brightness-1 END"));break; 
     case 0x66:
  myCAM.OV5642_set_Brightness(Brightness_2);temp = 0xff;
   Serial.println(F("ACK CMD Set to Brightness-2 END"));break; 
    case 0x67:
  myCAM.OV5642_set_Brightness(Brightness_3);temp = 0xff;
   Serial.println(F("ACK CMD Set to Brightness-3 END"));break; 
    case 0x68:
  myCAM.OV5642_set_Brightness(Brightness_4);temp = 0xff;
   Serial.println(F("ACK CMD Set to Brightness-4 END"));break;
case 0x70:
  myCAM.OV5642_set_Contrast(Contrast4);temp = 0xff;
   Serial.println(F("ACK CMD Set to Contrast+4 END"));break;
  case 0x71:
  myCAM.OV5642_set_Contrast(Contrast3);temp = 0xff;
   Serial.println(F("ACK CMD Set to Contrast+3 END"));break; 
  case 0x72:
  myCAM.OV5642_set_Contrast(Contrast2);temp = 0xff;
   Serial.println(F("ACK CMD Set to Contrast+2 END"));break; 
   case 0x73:
  myCAM.OV5642_set_Contrast(Contrast1);temp = 0xff;
   Serial.println(F("ACK CMD Set to Contrast+1 END"));break; 
   case 0x74:
  myCAM.OV5642_set_Contrast(Contrast0);temp = 0xff;
   Serial.println(F("ACK CMD Set to Contrast+0 END"));break; 
    case 0x75:
  myCAM.OV5642_set_Contrast(Contrast_1);temp = 0xff;
   Serial.println(F("ACK CMD Set to Contrast-1 END"));break; 
     case 0x76:
  myCAM.OV5642_set_Contrast(Contrast_2);temp = 0xff;
   Serial.println(F("ACK CMD Set to Contrast-2 END"));break; 
    case 0x77:
  myCAM.OV5642_set_Contrast(Contrast_3);temp = 0xff;
   Serial.println(F("ACK CMD Set to Contrast-3 END"));break; 
    case 0x78:
  myCAM.OV5642_set_Contrast(Contrast_4);temp = 0xff;
   Serial.println(F("ACK CMD Set to Contrast-4 END"));break;
   case 0x80: 
    myCAM.OV5642_set_hue(degree_180);temp = 0xff;
     Serial.println(F("ACK CMD Set to -180 degree END"));break;   
   case 0x81: 
   myCAM.OV5642_set_hue(degree_150);temp = 0xff;
     Serial.println(F("ACK CMD Set to -150 degree END"));break;  
   case 0x82: 
   myCAM.OV5642_set_hue(degree_120);temp = 0xff;
     Serial.println(F("ACK CMD Set to -120 degree END"));break;  
   case 0x83: 
   myCAM.OV5642_set_hue(degree_90);temp = 0xff;
     Serial.println(F("ACK CMD Set to -90 degree END"));break;   
    case 0x84: 
   myCAM.OV5642_set_hue(degree_60);temp = 0xff;
     Serial.println(F("ACK CMD Set to -60 degree END"));break;   
    case 0x85: 
   myCAM.OV5642_set_hue(degree_30);temp = 0xff;
     Serial.println(F("ACK CMD Set to -30 degree END"));break;  
     case 0x86: 
   myCAM.OV5642_set_hue(degree_0);temp = 0xff;
     Serial.println(F("ACK CMD Set to 0 degree END"));break; 
   case 0x87: 
   myCAM.OV5642_set_hue(degree30);temp = 0xff;
     Serial.println(F("ACK CMD Set to 30 degree END"));break;
   case 0x88: 
   myCAM.OV5642_set_hue(degree60);temp = 0xff;
     Serial.println(F("ACK CMD Set to 60 degree END"));break;
    case 0x89: 
   myCAM.OV5642_set_hue(degree90);temp = 0xff;
     Serial.println(F("ACK CMD Set to 90 degree END"));break;
     case 0x8a: 
   myCAM.OV5642_set_hue(degree120);temp = 0xff;
     Serial.println(F("ACK CMD Set to 120 degree END"));break ; 
   case 0x8b: 
   myCAM.OV5642_set_hue(degree150);temp = 0xff;
     Serial.println(F("ACK CMD Set to 150 degree END"));break ;
  case 0x90: 
   myCAM.OV5642_set_Special_effects(Normal);temp = 0xff;
     Serial.println(F("ACK CMD Set to Normal END"));break ;
      case 0x91: 
   myCAM.OV5642_set_Special_effects(BW);temp = 0xff;
     Serial.println(F("ACK CMD Set to BW END"));break ;
    case 0x92: 
   myCAM.OV5642_set_Special_effects(Bluish);temp = 0xff;
     Serial.println(F("ACK CMD Set to Bluish END"));break ;
      case 0x93: 
   myCAM.OV5642_set_Special_effects(Sepia);temp = 0xff;
     Serial.println(F("ACK CMD Set to Sepia END"));break ;
    case 0x94: 
   myCAM.OV5642_set_Special_effects(Reddish);temp = 0xff;
     Serial.println(F("ACK CMD Set to Reddish END"));break ;
   case 0x95: 
   myCAM.OV5642_set_Special_effects(Greenish);temp = 0xff;
     Serial.println(F("ACK CMD Set to Greenish END"));break ;
   case 0x96: 
   myCAM.OV5642_set_Special_effects(Negative);temp = 0xff;
     Serial.println(F("ACK CMD Set to Negative END"));break ;
   case 0xA0: 
   myCAM.OV5642_set_Exposure_level(Exposure_17_EV);temp = 0xff;
     Serial.println(F("ACK CMD Set to -1.7EV END"));break ;  
     case 0xA1: 
   myCAM.OV5642_set_Exposure_level(Exposure_13_EV);temp = 0xff;
     Serial.println(F("ACK CMD Set to -1.3EV END"));break ;
      case 0xA2: 
   myCAM.OV5642_set_Exposure_level(Exposure_10_EV);temp = 0xff;
     Serial.println(F("ACK CMD Set to -1.0EV END"));break ; 
    case 0xA3: 
   myCAM.OV5642_set_Exposure_level(Exposure_07_EV);temp = 0xff;
     Serial.println(F("ACK CMD Set to -0.7EV END"));break ;
     case 0xA4: 
   myCAM.OV5642_set_Exposure_level(Exposure_03_EV);temp = 0xff;
     Serial.println(F("ACK CMD Set to -0.3EV END"));break ;
   case 0xA5: 
   myCAM.OV5642_set_Exposure_level(Exposure_default);temp = 0xff;
     Serial.println(F("ACK CMD Set to -Exposure_default END"));break ;
    case 0xA6: 
   myCAM.OV5642_set_Exposure_level(Exposure07_EV);temp = 0xff;
     Serial.println(F("ACK CMD Set to 0.7EV END"));break ;  
   case 0xA7: 
   myCAM.OV5642_set_Exposure_level(Exposure10_EV);temp = 0xff;
     Serial.println(F("ACK CMD Set to 1.0EV END"));break ;
    case 0xA8: 
   myCAM.OV5642_set_Exposure_level(Exposure13_EV);temp = 0xff;
     Serial.println(F("ACK CMD Set to 1.3EV END"));break ; 
    case 0xA9: 
   myCAM.OV5642_set_Exposure_level(Exposure17_EV);temp = 0xff;
     Serial.println(F("ACK CMD Set to 1.7EV END"));break ; 
   case 0xB0: 
   myCAM.OV5642_set_Sharpness(Auto_Sharpness_default);temp = 0xff;
     Serial.println(F("ACK CMD Set to Auto Sharpness default END"));break ; 
    case 0xB1: 
   myCAM.OV5642_set_Sharpness(Auto_Sharpness1);temp = 0xff;
     Serial.println(F("ACK CMD Set to Auto Sharpness +1 END"));break ; 
    case 0xB2: 
   myCAM.OV5642_set_Sharpness(Auto_Sharpness2);temp = 0xff;
     Serial.println(F("ACK CMD Set to Auto Sharpness +2 END"));break ; 
      case 0xB3: 
   myCAM.OV5642_set_Sharpness(Manual_Sharpnessoff);temp = 0xff;
     Serial.println(F("ACK CMD Set to Auto Manual Sharpness off END"));break ; 
     case 0xB4: 
     myCAM.OV5642_set_Sharpness(Manual_Sharpness1);temp = 0xff;
     Serial.println(F("ACK CMD Set to Auto Manual Sharpness +1 END"));break ;
     case 0xB5: 
     myCAM.OV5642_set_Sharpness(Manual_Sharpness2);temp = 0xff;
     Serial.println(F("ACK CMD Set to Auto Manual Sharpness +2 END"));break ; 
     case 0xB6: 
     myCAM.OV5642_set_Sharpness(Manual_Sharpness3);temp = 0xff;
     Serial.println(F("ACK CMD Set to Auto Manual Sharpness +3 END"));break ;
     case 0xB7: 
     myCAM.OV5642_set_Sharpness(Manual_Sharpness4);temp = 0xff;
     Serial.println(F("ACK CMD Set to Auto Manual Sharpness +4 END"));break ;
    case 0xB8: 
     myCAM.OV5642_set_Sharpness(Manual_Sharpness5);temp = 0xff;
     Serial.println(F("ACK CMD Set to Auto Manual Sharpness +5 END"));break ;  
    case 0xC0: 
     myCAM.OV5642_set_Mirror_Flip(MIRROR);temp = 0xff;
     Serial.println(F("ACK CMD Set to MIRROR END"));break ;  
    case 0xC1: 
     myCAM.OV5642_set_Mirror_Flip(FLIP);temp = 0xff;
     Serial.println(F("ACK CMD Set to FLIP END"));break ; 
    case 0xC2: 
     myCAM.OV5642_set_Mirror_Flip(MIRROR_FLIP);temp = 0xff;
     Serial.println(F("ACK CMD Set to MIRROR&FLIP END"));break ;
    case 0xC3: 
     myCAM.OV5642_set_Mirror_Flip(Normal);temp = 0xff;
     Serial.println(F("ACK CMD Set to Normal END"));break ;
     case 0xD0: 
     myCAM.OV5642_set_Compress_quality(high_quality);temp = 0xff;
     Serial.println(F("ACK CMD Set to high quality END"));break ;
      case 0xD1: 
     myCAM.OV5642_set_Compress_quality(default_quality);temp = 0xff;
     Serial.println(F("ACK CMD Set to default quality END"));break ;
      case 0xD2: 
     myCAM.OV5642_set_Compress_quality(low_quality);temp = 0xff;
     Serial.println(F("ACK CMD Set to low quality END"));break ;

      case 0xE0: 
     myCAM.OV5642_Test_Pattern(Color_bar);temp = 0xff;
     Serial.println(F("ACK CMD Set to Color bar END"));break ;
      case 0xE1: 
     myCAM.OV5642_Test_Pattern(Color_square);temp = 0xff;
     Serial.println(F("ACK CMD Set to Color square END"));break ;
      case 0xE2: 
     myCAM.OV5642_Test_Pattern(BW_square);temp = 0xff;
     Serial.println(F("ACK CMD Set to BW square END"));break ;
     case 0xE3: 
     myCAM.OV5642_Test_Pattern(DLI);temp = 0xff;
     Serial.println(F("ACK CMD Set to DLI END"));break ;
      
      }
    if (start_capture == 2)
    {
      myCAM.flush_fifo();
      myCAM.clear_fifo_flag();
      //Start capture
      myCAM.start_capture();
      start_capture = 0;
    }
    if (myCAM.get_bit(ARDUCHIP_TRIG, CAP_DONE_MASK))
    {
      uint32_t length = 0;
      length = myCAM.read_fifo_length();
      if ((length >= MAX_FIFO_SIZE) | (length == 0))
      {
        myCAM.clear_fifo_flag();
        start_capture = 2;
        continue;
      }
      myCAM.CS_LOW();
      myCAM.set_fifo_burst();//Set fifo burst mode
      temp =  SPI.transfer(0x00);
      length --;
      while ( length-- )
      {
        temp_last = temp;
        temp =  SPI.transfer(0x00);
        if (is_header == true)
        {
          Serial.write(temp);
        }
        else if ((temp == 0xD8) & (temp_last == 0xFF))
        {
          is_header = true;
          Serial.println(F("ACK IMG END"));
          Serial.write(temp_last);
          Serial.write(temp);
        }
        if ( (temp == 0xD9) && (temp_last == 0xFF) ) //If find the end ,break while,
        break;
        delayMicroseconds(4);
      }
      myCAM.CS_HIGH();
      myCAM.clear_fifo_flag();
      start_capture = 2;
      is_header = false;
    }
  }
}
else if (mode == 3)
{
  if (start_capture == 3)
  {
    //Flush the FIFO
    myCAM.flush_fifo();
    myCAM.clear_fifo_flag();
    //Start capture
    myCAM.start_capture();
    start_capture = 0;
  }
  if (myCAM.get_bit(ARDUCHIP_TRIG, CAP_DONE_MASK))
  {
    Serial.println(F("ACK CMD CAM Capture Done. END"));delay(50);
    uint8_t temp, temp_last;
    uint32_t length = 0;
    length = myCAM.read_fifo_length();
    if (length >= MAX_FIFO_SIZE ) 
    {
      Serial.println(F("ACK CMD Over size. END"));
      myCAM.clear_fifo_flag();
      return;
    }
    if (length == 0 ) //0 kb
    {
      Serial.println(F("ACK CMD Size is 0. END"));
      myCAM.clear_fifo_flag();
      return;
    }
    myCAM.CS_LOW();
    myCAM.set_fifo_burst();//Set fifo burst mode
    
    Serial.write(0xFF);
    Serial.write(0xAA);
    for (temp = 0; temp < BMPIMAGEOFFSET; temp++)
    {
      Serial.write(pgm_read_byte(&bmp_header[temp]));
    }
    //SPI.transfer(0x00);
    char VH, VL;
    int i = 0, j = 0;
    for (i = 0; i < 240; i++)
    {
      for (j = 0; j < 320; j++)
      {
        VH = SPI.transfer(0x00);;
        VL = SPI.transfer(0x00);;
        Serial.write(VL);
        delayMicroseconds(12);
        Serial.write(VH);
        delayMicroseconds(12);
      }
    }
    Serial.write(0xBB);
    Serial.write(0xCC);
    myCAM.CS_HIGH();
    //Clear the capture done flag
    myCAM.clear_fifo_flag();
  }
}
}
uint8_t read_fifo_burst(ArduCAM myCAM)
{
  uint8_t temp = 0, temp_last = 0;
  uint32_t length = 0;
  length = myCAM.read_fifo_length();
  Serial.println(length, DEC);
  if (length >= MAX_FIFO_SIZE) //512 kb
  {
    Serial.println(F("ACK CMD Over size. END"));
    return 0;
  }
  if (length == 0 ) //0 kb
  {
    Serial.println(F("ACK CMD Size is 0. END"));
    return 0;
  }
  myCAM.CS_LOW();
  myCAM.set_fifo_burst();//Set fifo burst mode
  temp =  SPI.transfer(0x00);
  length --;
  while ( length-- )
  {
    temp_last = temp;
    temp =  SPI.transfer(0x00);
    if (is_header == true)
    {
      Serial.write(temp);
    }
    else if ((temp == 0xD8) & (temp_last == 0xFF))
    {
      is_header = true;
      Serial.println(F("ACK IMG END"));
      Serial.write(temp_last);
      Serial.write(temp);
    }
    if ( (temp == 0xD9) && (temp_last == 0xFF) ) //If find the end ,break while,
    break;
    delayMicroseconds(15);
  }
  myCAM.CS_HIGH();
  is_header = false;
  return 1;

}

```

</details><p class="callout warning"><span style="color: rgb(0, 0, 0);"><span style="text-decoration: underline;">**LES SOUCIS :**</span> </span></p>

- <span style="color: rgb(0, 0, 0);">On ne sait pas si c'est toujours possible d'avoir <span style="text-decoration: underline;">deux caméras </span>pour le bras. </span>
- <span style="color: rgb(0, 0, 0);">Il va falloir combiner le <span style="text-decoration: underline;">code du moteur avec le code de la caméra</span> en réfléchissant au problème suivant : une ou deux Arduino ? Comment faire avec le Shield motor ? Est ce que la caméra acceptera l'alimentation en 12 V nécessaire pour le moteur ? (Parce que pas de possibilité de changer de Shield motor --&gt; seul compatible avec le 12 V pour le moteur NEMA) Arduino maitre/esclave ? </span>
- <span style="color: rgb(0, 0, 0);">Il faut revoir le mouvement du moteur sur le Coulommiers terminé pour être sur de ses différents déplacement et degré de rotation : seulement une partie pour le moment. </span>
- <span style="color: rgb(0, 0, 0);">Faire premier test de montage des différentes pièces de notre Tournicayou</span>

<p class="callout success"><span style="color: rgb(0, 0, 0);"><span style="color: rgb(22, 145, 121);">**Pour la prochaine séance --&gt;** </span>Test d'ajouts de pin sur le Shield moteur pour brancher donc le motor NEMA et la caméra dessus avec les pin analytiques + Imprimer un Coulommiers entier pour pouvoir réaliser les tests moteurs sur tout le tour du Coulommiers et par la suite combiner code moteur et code caméra !</span></p>

</details><details id="bkmrk-17%2F04%2F2026-on-re-tes"><summary>17/04/2026\_Premier montage pour test moteur</summary>

<p class="callout info"><span style="color: rgb(35, 111, 161);">**Notre joli coulommiers est arrivé, il est tout beau et tout coloré !** (Photo ci-joint)</span></p>

<p class="callout warning"><span style="color: rgb(230, 126, 35);">**Nos pitits problèmes de la séance : 1er vrai test montage de notre <span style="text-decoration: underline;">"Tounicayou"</span>**</span></p>

<span style="text-decoration: underline;">**Nécessité de re modélisation de certaines pièces**</span>

Aujourd'hui nous avons essayé de monter les différentes pièces toutes ensembles. Plusieurs problèmes se sont alors présentés à nous:

- Les puzzles (Coulommiers) ont des marges d'erreurs sur estimées. Il faudrait à l'avenir les repenser afin de faciliter le montage. Toutes les complémentarités sont à revoir, nonobstant, celle entre le socle moteur et la pièce arrière est primordiale.
- La pièce arrière avait été pensée pour avoir une roue permettant de faire encoche avec le coulommiers, permettant alors de maintenir le tout sans branlements. Il faudrait donc, soit retirer la buté, soit redesigner la pièce dans son ensemble.
- Le support moteur est à retravailler. Imaginé au départ comme nécessitant une pièce complémentaire pour être stable, il devra dorénavant obtenir une stabilité autonome. L'idée sera d'ajouter des butes sur le bord distal au foyer du coulommiers. Plusieurs modèle de butes seront testés.
- Le coulommiers en lui même ne sera pas modifié, mais des explications supplémentaires quant à sa conception peuvent être ajoutées. Le principe du coulommiers est de permettre une rotation d'un bras photographique autour du support -substituant la rotation du support lui même-. Les dents sont sur la surface interne du coulommiers **Pourquoi ? --&gt;** Pour permettre un ancrage par le rouage et une autre encoche à la surface opposée. L'idée de rouage sur sur le coté haut du coulommiers a été proposée. Elle ne nous semble que peu adéquate au projet. En effet, elle poserait plus de problèmes, nécessitant deux encoche, et un rouage circulaire à la Citroën. IMPOSSIBLE.

[![20260417_133720.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-05/scaled-1680-/20260417-133720.jpg) *Le coulommiers tout coloré et Lucas* ](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-05/20260417-133720.jpg)*[![20260417_153747(0).jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-05/scaled-1680-/20260417-1537470.jpg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-05/20260417-1537470.jpg)*

[![20260417_154904.jpg](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-05/scaled-1680-/20260417-154904.jpg)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-05/20260417-154904.jpg)

</details><details id="bkmrk-02%2F05%2F2026-pour-le-m"><summary>02/05/2026\_Modification de la pièce moteur</summary>

Pour le moteur baroque, 3 idées sont pour l'instant modélisées. Un plaque (à poncer), deux encoches, un méga anneau. En plus de cela, le support a également été repensé avec l'ajout d'une encoche permettant l'insertion du bras photo sur celui-ci. Cette structure n'est là que pour l'idée d'améliorer le projet dans le futur, pour l'instant le bras si insérant n'a pas été conçu.

A noter donc, cette encoche fait :

- 20 mm de large
- 29 mm de long
- 10 mm de haut
- L'encoche fait 25 mm de long
- L'encoche fait 8 mm de diamètre, son foyer est centré par rapport aux côtés droit et gauche. Cependant le foyer ce trouve à 3.25 mm du haut. L'encoche est circulaire, du fait que ce soit plus simple à designer

[Barroque motor.FCStd](https://wiki.fablab.sorbonne-universite.fr/BookStack/attachments/1834) - Plaque

[Barroque motor.stl](https://wiki.fablab.sorbonne-universite.fr/BookStack/attachments/1845) - Plaque

[Barroque motor - 2 coins.FCStd](https://wiki.fablab.sorbonne-universite.fr/BookStack/attachments/1846)

[Barroque motor - 2 coins.stl](https://wiki.fablab.sorbonne-universite.fr/BookStack/attachments/1847)

[Barroque motor - anneau.FCStd](https://wiki.fablab.sorbonne-universite.fr/BookStack/attachments/1848)

[Barroque motor - anneau.stl](https://wiki.fablab.sorbonne-universite.fr/BookStack/attachments/1849)

</details><details id="bkmrk-22%2F05%2F2026-objectif-"><summary>22/05/2026</summary>

Objectif sur le montage du **Tournicayou** pour les tests moteur

Modification de la pièce support moteur pendant environ 3h, amélioration du wiki en parallèle. Dernière heure modification de la pièce support du bras pour faire nos tests, si on y arrive.

<span style="text-decoration: underline;">Réalisation du montage final pour la partie programmation !</span>

[![bn5capture-decran-2026-03-20-102959.png](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-05/scaled-1680-/bn5capture-decran-2026-03-20-102959.png)](https://wiki.fablab.sorbonne-universite.fr/BookStack/uploads/images/gallery/2026-05/bn5capture-decran-2026-03-20-102959.png)

</details>##### <span style="text-decoration: underline;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">Les liens utiles :</span></span></span></span></span></span></span></span></span></span></span>

- <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">[https://github.com/ArduCAM/Arducam\_mini](https://github.com/ArduCAM/Arducam_mini)</span></span></span></span></span></span></span></span></span></span>
- <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">[https://github.com/ArduCAM/Arduino ](https://github.com/ArduCAM/Arduino)</span></span></span></span></span></span></span></span></span></span>
- <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;">[https://www.youtube.com/watch?v=FlfrkJ08pnQ](https://www.youtube.com/watch?v=FlfrkJ08pnQ)</span></span></span></span></span></span></span></span></span></span>
- <span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"><span dir="auto" style="vertical-align: inherit;"> [https://github.com/ArduCAM/Arduino/issues/528](https://github.com/ArduCAM/Arduino/issues/528)</span></span></span></span></span></span></span></span></span></span>