<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>http://wiki.lesfabriquesduponant.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=J2leroux</id>
		<title>Les Fabriques du Ponant - Contributions de l’utilisateur [fr]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.lesfabriquesduponant.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=J2leroux"/>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Sp%C3%A9cial:Contributions/J2leroux"/>
		<updated>2026-05-18T21:12:34Z</updated>
		<subtitle>Contributions de l’utilisateur</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29521</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29521"/>
				<updated>2025-01-21T14:43:23Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Préparation des matériaux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Joseph_jean.jpg|300px|right|thumb|Joseph &amp;amp; Jean les ingénieurs]]&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
[[Fichier:Metronomoa.jpg|right|thumb|Métronome]]&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine&lt;br /&gt;
* Doigts minutieux et précis de Jean&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt;&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2;&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
const int boutonIncrement = D1;&lt;br /&gt;
const int boutonDecrement = D2;&lt;br /&gt;
const int led1 = D5;&lt;br /&gt;
const int servoPin = D4;&lt;br /&gt;
const int buzzer = D6;&lt;br /&gt;
const int clk = D3;  // Broche CLK du 4-Digit Display&lt;br /&gt;
const int dio = D0;  // Broche DIO du 4-Digit Display&lt;br /&gt;
&lt;br /&gt;
Servo servo;&lt;br /&gt;
TM1637Display display(clk, dio);&lt;br /&gt;
&lt;br /&gt;
int bpm = 60;  // BPM initial&lt;br /&gt;
int minBPM = 40;&lt;br /&gt;
int maxBPM = 200;&lt;br /&gt;
bool servo_pos = false;&lt;br /&gt;
unsigned long previousMillis = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(boutonIncrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(boutonDecrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(led1, OUTPUT);&lt;br /&gt;
  pinMode(buzzer, OUTPUT);&lt;br /&gt;
  servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(led1, LOW);&lt;br /&gt;
  digitalWrite(buzzer, LOW);&lt;br /&gt;
  servo.write(0);&lt;br /&gt;
  display.setBrightness(0x0f);  // Réglage de la luminosité du display&lt;br /&gt;
  display.showNumberDec(bpm);   // Affiche la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  handleButtons();&lt;br /&gt;
  metronomeTick();&lt;br /&gt;
  display.showNumberDec(bpm);  // Met à jour l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
  if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
    bpm = min(bpm + 1, maxBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
    bpm = max(bpm - 1, minBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  unsigned long interval = 60000 / bpm;  // Calcul de l'intervalle en ms&lt;br /&gt;
  unsigned long interval_buzzer = 100;&lt;br /&gt;
&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
    digitalWrite(buzzer, HIGH);&lt;br /&gt;
    if (servo_pos == false){&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo.write(180);&lt;br /&gt;
      servo_pos = true;&lt;br /&gt;
    } else{&lt;br /&gt;
      servo.write(0);&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo_pos = false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval_buzzer){&lt;br /&gt;
    digitalWrite(led1, LOW);&lt;br /&gt;
    digitalWrite(buzzer, LOW);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
*Découper le carton selon le patron.&lt;br /&gt;
*Imprimer l'aiguille ou en fabriquer une en papier (Si vous l'imprimez, il faudra mettre un point de colle chaude afin qu'elle soit bien fixée).&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Aiguille_3D.zip]]&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le schéma&amp;lt;br&amp;gt;&lt;br /&gt;
Sur le schéma nous avons une arduino mais le principe est le même pour le Wemos D1 mini.&lt;br /&gt;
[[Fichier: Shema_cablage.png|750px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Certaines soudures ont eu tendance à casser=====&lt;br /&gt;
* Solution : Un petit point de colle chaude par dessus les soudures permettra de renforcer les plus fragiles et d'isoler vos connections.&lt;br /&gt;
&lt;br /&gt;
=====Problème : On avait aucune aiguille=====&lt;br /&gt;
* Solution : En imprimer une en 3D ( Si vous n'avez pas d'imprimantes, une aiguille en papier pourrait très bien faire l'affaire).&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
=Axes d'améliorations=&lt;br /&gt;
- Augmenter la puissance sonore du haut parleur.&lt;br /&gt;
- Faire une coque en bois&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29520</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29520"/>
				<updated>2025-01-21T14:43:11Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Préparation des matériaux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Joseph_jean.jpg|300px|right|thumb|Joseph &amp;amp; Jean les ingénieurs]]&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
[[Fichier:Metronomoa.jpg|right|thumb|Métronome]]&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine&lt;br /&gt;
* Doigts minutieux et précis de Jean&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt;&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2;&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
const int boutonIncrement = D1;&lt;br /&gt;
const int boutonDecrement = D2;&lt;br /&gt;
const int led1 = D5;&lt;br /&gt;
const int servoPin = D4;&lt;br /&gt;
const int buzzer = D6;&lt;br /&gt;
const int clk = D3;  // Broche CLK du 4-Digit Display&lt;br /&gt;
const int dio = D0;  // Broche DIO du 4-Digit Display&lt;br /&gt;
&lt;br /&gt;
Servo servo;&lt;br /&gt;
TM1637Display display(clk, dio);&lt;br /&gt;
&lt;br /&gt;
int bpm = 60;  // BPM initial&lt;br /&gt;
int minBPM = 40;&lt;br /&gt;
int maxBPM = 200;&lt;br /&gt;
bool servo_pos = false;&lt;br /&gt;
unsigned long previousMillis = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(boutonIncrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(boutonDecrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(led1, OUTPUT);&lt;br /&gt;
  pinMode(buzzer, OUTPUT);&lt;br /&gt;
  servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(led1, LOW);&lt;br /&gt;
  digitalWrite(buzzer, LOW);&lt;br /&gt;
  servo.write(0);&lt;br /&gt;
  display.setBrightness(0x0f);  // Réglage de la luminosité du display&lt;br /&gt;
  display.showNumberDec(bpm);   // Affiche la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  handleButtons();&lt;br /&gt;
  metronomeTick();&lt;br /&gt;
  display.showNumberDec(bpm);  // Met à jour l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
  if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
    bpm = min(bpm + 1, maxBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
    bpm = max(bpm - 1, minBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  unsigned long interval = 60000 / bpm;  // Calcul de l'intervalle en ms&lt;br /&gt;
  unsigned long interval_buzzer = 100;&lt;br /&gt;
&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
    digitalWrite(buzzer, HIGH);&lt;br /&gt;
    if (servo_pos == false){&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo.write(180);&lt;br /&gt;
      servo_pos = true;&lt;br /&gt;
    } else{&lt;br /&gt;
      servo.write(0);&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo_pos = false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval_buzzer){&lt;br /&gt;
    digitalWrite(led1, LOW);&lt;br /&gt;
    digitalWrite(buzzer, LOW);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
*Imprimer l'aiguille ou en fabriquer une en papier (Si vous l'imprimez, il faudra mettre un point de colle chaude afin qu'elle soit bien fixée).&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Aiguille_3D.zip]]&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le schéma&amp;lt;br&amp;gt;&lt;br /&gt;
Sur le schéma nous avons une arduino mais le principe est le même pour le Wemos D1 mini.&lt;br /&gt;
[[Fichier: Shema_cablage.png|750px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Certaines soudures ont eu tendance à casser=====&lt;br /&gt;
* Solution : Un petit point de colle chaude par dessus les soudures permettra de renforcer les plus fragiles et d'isoler vos connections.&lt;br /&gt;
&lt;br /&gt;
=====Problème : On avait aucune aiguille=====&lt;br /&gt;
* Solution : En imprimer une en 3D ( Si vous n'avez pas d'imprimantes, une aiguille en papier pourrait très bien faire l'affaire).&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
=Axes d'améliorations=&lt;br /&gt;
- Augmenter la puissance sonore du haut parleur.&lt;br /&gt;
- Faire une coque en bois&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29518</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29518"/>
				<updated>2025-01-21T14:42:53Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Préparation des matériaux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Joseph_jean.jpg|300px|right|thumb|Joseph &amp;amp; Jean les ingénieurs]]&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
[[Fichier:Metronomoa.jpg|right|thumb|Métronome]]&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine&lt;br /&gt;
* Doigts minutieux et précis de Jean&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt;&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2;&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
const int boutonIncrement = D1;&lt;br /&gt;
const int boutonDecrement = D2;&lt;br /&gt;
const int led1 = D5;&lt;br /&gt;
const int servoPin = D4;&lt;br /&gt;
const int buzzer = D6;&lt;br /&gt;
const int clk = D3;  // Broche CLK du 4-Digit Display&lt;br /&gt;
const int dio = D0;  // Broche DIO du 4-Digit Display&lt;br /&gt;
&lt;br /&gt;
Servo servo;&lt;br /&gt;
TM1637Display display(clk, dio);&lt;br /&gt;
&lt;br /&gt;
int bpm = 60;  // BPM initial&lt;br /&gt;
int minBPM = 40;&lt;br /&gt;
int maxBPM = 200;&lt;br /&gt;
bool servo_pos = false;&lt;br /&gt;
unsigned long previousMillis = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(boutonIncrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(boutonDecrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(led1, OUTPUT);&lt;br /&gt;
  pinMode(buzzer, OUTPUT);&lt;br /&gt;
  servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(led1, LOW);&lt;br /&gt;
  digitalWrite(buzzer, LOW);&lt;br /&gt;
  servo.write(0);&lt;br /&gt;
  display.setBrightness(0x0f);  // Réglage de la luminosité du display&lt;br /&gt;
  display.showNumberDec(bpm);   // Affiche la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  handleButtons();&lt;br /&gt;
  metronomeTick();&lt;br /&gt;
  display.showNumberDec(bpm);  // Met à jour l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
  if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
    bpm = min(bpm + 1, maxBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
    bpm = max(bpm - 1, minBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  unsigned long interval = 60000 / bpm;  // Calcul de l'intervalle en ms&lt;br /&gt;
  unsigned long interval_buzzer = 100;&lt;br /&gt;
&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
    digitalWrite(buzzer, HIGH);&lt;br /&gt;
    if (servo_pos == false){&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo.write(180);&lt;br /&gt;
      servo_pos = true;&lt;br /&gt;
    } else{&lt;br /&gt;
      servo.write(0);&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo_pos = false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval_buzzer){&lt;br /&gt;
    digitalWrite(led1, LOW);&lt;br /&gt;
    digitalWrite(buzzer, LOW);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
Imprimer l'aiguille ou en fabriquer une en papier (Si vous l'imprimez, il faudra mettre un point de colle chaude afin qu'elle soit bien fixée).&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Aiguille_3D.zip]]&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le schéma&amp;lt;br&amp;gt;&lt;br /&gt;
Sur le schéma nous avons une arduino mais le principe est le même pour le Wemos D1 mini.&lt;br /&gt;
[[Fichier: Shema_cablage.png|750px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Certaines soudures ont eu tendance à casser=====&lt;br /&gt;
* Solution : Un petit point de colle chaude par dessus les soudures permettra de renforcer les plus fragiles et d'isoler vos connections.&lt;br /&gt;
&lt;br /&gt;
=====Problème : On avait aucune aiguille=====&lt;br /&gt;
* Solution : En imprimer une en 3D ( Si vous n'avez pas d'imprimantes, une aiguille en papier pourrait très bien faire l'affaire).&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
=Axes d'améliorations=&lt;br /&gt;
- Augmenter la puissance sonore du haut parleur.&lt;br /&gt;
- Faire une coque en bois&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29517</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29517"/>
				<updated>2025-01-21T14:42:35Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Préparation des matériaux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Joseph_jean.jpg|300px|right|thumb|Joseph &amp;amp; Jean les ingénieurs]]&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
[[Fichier:Metronomoa.jpg|right|thumb|Métronome]]&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine&lt;br /&gt;
* Doigts minutieux et précis de Jean&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt;&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2;&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
const int boutonIncrement = D1;&lt;br /&gt;
const int boutonDecrement = D2;&lt;br /&gt;
const int led1 = D5;&lt;br /&gt;
const int servoPin = D4;&lt;br /&gt;
const int buzzer = D6;&lt;br /&gt;
const int clk = D3;  // Broche CLK du 4-Digit Display&lt;br /&gt;
const int dio = D0;  // Broche DIO du 4-Digit Display&lt;br /&gt;
&lt;br /&gt;
Servo servo;&lt;br /&gt;
TM1637Display display(clk, dio);&lt;br /&gt;
&lt;br /&gt;
int bpm = 60;  // BPM initial&lt;br /&gt;
int minBPM = 40;&lt;br /&gt;
int maxBPM = 200;&lt;br /&gt;
bool servo_pos = false;&lt;br /&gt;
unsigned long previousMillis = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(boutonIncrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(boutonDecrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(led1, OUTPUT);&lt;br /&gt;
  pinMode(buzzer, OUTPUT);&lt;br /&gt;
  servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(led1, LOW);&lt;br /&gt;
  digitalWrite(buzzer, LOW);&lt;br /&gt;
  servo.write(0);&lt;br /&gt;
  display.setBrightness(0x0f);  // Réglage de la luminosité du display&lt;br /&gt;
  display.showNumberDec(bpm);   // Affiche la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  handleButtons();&lt;br /&gt;
  metronomeTick();&lt;br /&gt;
  display.showNumberDec(bpm);  // Met à jour l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
  if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
    bpm = min(bpm + 1, maxBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
    bpm = max(bpm - 1, minBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  unsigned long interval = 60000 / bpm;  // Calcul de l'intervalle en ms&lt;br /&gt;
  unsigned long interval_buzzer = 100;&lt;br /&gt;
&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
    digitalWrite(buzzer, HIGH);&lt;br /&gt;
    if (servo_pos == false){&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo.write(180);&lt;br /&gt;
      servo_pos = true;&lt;br /&gt;
    } else{&lt;br /&gt;
      servo.write(0);&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo_pos = false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval_buzzer){&lt;br /&gt;
    digitalWrite(led1, LOW);&lt;br /&gt;
    digitalWrite(buzzer, LOW);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
Imprimer l'aiguille ou en fabriquer une en papier (Si vous l'imprimez, il faudra mettre un point de colle chaude afin qu'elle soit bien fixée.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Aiguille_3D.zip]]&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le schéma&amp;lt;br&amp;gt;&lt;br /&gt;
Sur le schéma nous avons une arduino mais le principe est le même pour le Wemos D1 mini.&lt;br /&gt;
[[Fichier: Shema_cablage.png|750px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Certaines soudures ont eu tendance à casser=====&lt;br /&gt;
* Solution : Un petit point de colle chaude par dessus les soudures permettra de renforcer les plus fragiles et d'isoler vos connections.&lt;br /&gt;
&lt;br /&gt;
=====Problème : On avait aucune aiguille=====&lt;br /&gt;
* Solution : En imprimer une en 3D ( Si vous n'avez pas d'imprimantes, une aiguille en papier pourrait très bien faire l'affaire).&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
=Axes d'améliorations=&lt;br /&gt;
- Augmenter la puissance sonore du haut parleur.&lt;br /&gt;
- Faire une coque en bois&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29507</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29507"/>
				<updated>2025-01-21T14:37:12Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Préparation des matériaux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Joseph_jean.jpg|300px|right|thumb|Joseph &amp;amp; Jean les ingénieurs]]&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
[[Fichier:Metronomoa.jpg|right|thumb|Métronome]]&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine&lt;br /&gt;
* Doigts minutieux et précis de Jean&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt;&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2;&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
const int boutonIncrement = D1;&lt;br /&gt;
const int boutonDecrement = D2;&lt;br /&gt;
const int led1 = D5;&lt;br /&gt;
const int servoPin = D4;&lt;br /&gt;
const int buzzer = D6;&lt;br /&gt;
const int clk = D3;  // Broche CLK du 4-Digit Display&lt;br /&gt;
const int dio = D0;  // Broche DIO du 4-Digit Display&lt;br /&gt;
&lt;br /&gt;
Servo servo;&lt;br /&gt;
TM1637Display display(clk, dio);&lt;br /&gt;
&lt;br /&gt;
int bpm = 60;  // BPM initial&lt;br /&gt;
int minBPM = 40;&lt;br /&gt;
int maxBPM = 200;&lt;br /&gt;
bool servo_pos = false;&lt;br /&gt;
unsigned long previousMillis = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(boutonIncrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(boutonDecrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(led1, OUTPUT);&lt;br /&gt;
  pinMode(buzzer, OUTPUT);&lt;br /&gt;
  servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(led1, LOW);&lt;br /&gt;
  digitalWrite(buzzer, LOW);&lt;br /&gt;
  servo.write(0);&lt;br /&gt;
  display.setBrightness(0x0f);  // Réglage de la luminosité du display&lt;br /&gt;
  display.showNumberDec(bpm);   // Affiche la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  handleButtons();&lt;br /&gt;
  metronomeTick();&lt;br /&gt;
  display.showNumberDec(bpm);  // Met à jour l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
  if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
    bpm = min(bpm + 1, maxBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
    bpm = max(bpm - 1, minBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  unsigned long interval = 60000 / bpm;  // Calcul de l'intervalle en ms&lt;br /&gt;
  unsigned long interval_buzzer = 100;&lt;br /&gt;
&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
    digitalWrite(buzzer, HIGH);&lt;br /&gt;
    if (servo_pos == false){&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo.write(180);&lt;br /&gt;
      servo_pos = true;&lt;br /&gt;
    } else{&lt;br /&gt;
      servo.write(0);&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo_pos = false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval_buzzer){&lt;br /&gt;
    digitalWrite(led1, LOW);&lt;br /&gt;
    digitalWrite(buzzer, LOW);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Aiguille_3D.zip]]&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le schéma&amp;lt;br&amp;gt;&lt;br /&gt;
Sur le schéma nous avons une arduino mais le principe est le même pour le Wemos D1 mini.&lt;br /&gt;
[[Fichier: Shema_cablage.png|750px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Certaines soudures ont eu tendance à casser=====&lt;br /&gt;
* Solution : Un petit point de colle chaude par dessus les soudures permettra de renforcer les plus fragiles et d'isoler vos connections.&lt;br /&gt;
&lt;br /&gt;
=====Problème : On avait aucune aiguille=====&lt;br /&gt;
* Solution : En imprimer une en 3D ( Si vous n'avez pas d'imprimantes, une aiguille en papier pourrait très bien faire l'affaire).&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
=Axes d'améliorations=&lt;br /&gt;
- Augmenter la puissance sonore du haut parleur.&lt;br /&gt;
- Faire une coque en bois&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29506</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29506"/>
				<updated>2025-01-21T14:37:02Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Préparation des matériaux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Joseph_jean.jpg|300px|right|thumb|Joseph &amp;amp; Jean les ingénieurs]]&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
[[Fichier:Metronomoa.jpg|right|thumb|Métronome]]&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine&lt;br /&gt;
* Doigts minutieux et précis de Jean&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt;&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2;&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
const int boutonIncrement = D1;&lt;br /&gt;
const int boutonDecrement = D2;&lt;br /&gt;
const int led1 = D5;&lt;br /&gt;
const int servoPin = D4;&lt;br /&gt;
const int buzzer = D6;&lt;br /&gt;
const int clk = D3;  // Broche CLK du 4-Digit Display&lt;br /&gt;
const int dio = D0;  // Broche DIO du 4-Digit Display&lt;br /&gt;
&lt;br /&gt;
Servo servo;&lt;br /&gt;
TM1637Display display(clk, dio);&lt;br /&gt;
&lt;br /&gt;
int bpm = 60;  // BPM initial&lt;br /&gt;
int minBPM = 40;&lt;br /&gt;
int maxBPM = 200;&lt;br /&gt;
bool servo_pos = false;&lt;br /&gt;
unsigned long previousMillis = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(boutonIncrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(boutonDecrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(led1, OUTPUT);&lt;br /&gt;
  pinMode(buzzer, OUTPUT);&lt;br /&gt;
  servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(led1, LOW);&lt;br /&gt;
  digitalWrite(buzzer, LOW);&lt;br /&gt;
  servo.write(0);&lt;br /&gt;
  display.setBrightness(0x0f);  // Réglage de la luminosité du display&lt;br /&gt;
  display.showNumberDec(bpm);   // Affiche la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  handleButtons();&lt;br /&gt;
  metronomeTick();&lt;br /&gt;
  display.showNumberDec(bpm);  // Met à jour l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
  if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
    bpm = min(bpm + 1, maxBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
    bpm = max(bpm - 1, minBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  unsigned long interval = 60000 / bpm;  // Calcul de l'intervalle en ms&lt;br /&gt;
  unsigned long interval_buzzer = 100;&lt;br /&gt;
&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
    digitalWrite(buzzer, HIGH);&lt;br /&gt;
    if (servo_pos == false){&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo.write(180);&lt;br /&gt;
      servo_pos = true;&lt;br /&gt;
    } else{&lt;br /&gt;
      servo.write(0);&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo_pos = false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval_buzzer){&lt;br /&gt;
    digitalWrite(led1, LOW);&lt;br /&gt;
    digitalWrite(buzzer, LOW);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Aiguille_3D.zip]dcsqfq]&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le schéma&amp;lt;br&amp;gt;&lt;br /&gt;
Sur le schéma nous avons une arduino mais le principe est le même pour le Wemos D1 mini.&lt;br /&gt;
[[Fichier: Shema_cablage.png|750px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Certaines soudures ont eu tendance à casser=====&lt;br /&gt;
* Solution : Un petit point de colle chaude par dessus les soudures permettra de renforcer les plus fragiles et d'isoler vos connections.&lt;br /&gt;
&lt;br /&gt;
=====Problème : On avait aucune aiguille=====&lt;br /&gt;
* Solution : En imprimer une en 3D ( Si vous n'avez pas d'imprimantes, une aiguille en papier pourrait très bien faire l'affaire).&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
=Axes d'améliorations=&lt;br /&gt;
- Augmenter la puissance sonore du haut parleur.&lt;br /&gt;
- Faire une coque en bois&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29505</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29505"/>
				<updated>2025-01-21T14:36:49Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Préparation des matériaux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Joseph_jean.jpg|300px|right|thumb|Joseph &amp;amp; Jean les ingénieurs]]&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
[[Fichier:Metronomoa.jpg|right|thumb|Métronome]]&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine&lt;br /&gt;
* Doigts minutieux et précis de Jean&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt;&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2;&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
const int boutonIncrement = D1;&lt;br /&gt;
const int boutonDecrement = D2;&lt;br /&gt;
const int led1 = D5;&lt;br /&gt;
const int servoPin = D4;&lt;br /&gt;
const int buzzer = D6;&lt;br /&gt;
const int clk = D3;  // Broche CLK du 4-Digit Display&lt;br /&gt;
const int dio = D0;  // Broche DIO du 4-Digit Display&lt;br /&gt;
&lt;br /&gt;
Servo servo;&lt;br /&gt;
TM1637Display display(clk, dio);&lt;br /&gt;
&lt;br /&gt;
int bpm = 60;  // BPM initial&lt;br /&gt;
int minBPM = 40;&lt;br /&gt;
int maxBPM = 200;&lt;br /&gt;
bool servo_pos = false;&lt;br /&gt;
unsigned long previousMillis = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(boutonIncrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(boutonDecrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(led1, OUTPUT);&lt;br /&gt;
  pinMode(buzzer, OUTPUT);&lt;br /&gt;
  servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(led1, LOW);&lt;br /&gt;
  digitalWrite(buzzer, LOW);&lt;br /&gt;
  servo.write(0);&lt;br /&gt;
  display.setBrightness(0x0f);  // Réglage de la luminosité du display&lt;br /&gt;
  display.showNumberDec(bpm);   // Affiche la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  handleButtons();&lt;br /&gt;
  metronomeTick();&lt;br /&gt;
  display.showNumberDec(bpm);  // Met à jour l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
  if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
    bpm = min(bpm + 1, maxBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
    bpm = max(bpm - 1, minBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  unsigned long interval = 60000 / bpm;  // Calcul de l'intervalle en ms&lt;br /&gt;
  unsigned long interval_buzzer = 100;&lt;br /&gt;
&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
    digitalWrite(buzzer, HIGH);&lt;br /&gt;
    if (servo_pos == false){&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo.write(180);&lt;br /&gt;
      servo_pos = true;&lt;br /&gt;
    } else{&lt;br /&gt;
      servo.write(0);&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo_pos = false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval_buzzer){&lt;br /&gt;
    digitalWrite(led1, LOW);&lt;br /&gt;
    digitalWrite(buzzer, LOW);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Aiguille_3D.zip]]&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le schéma&amp;lt;br&amp;gt;&lt;br /&gt;
Sur le schéma nous avons une arduino mais le principe est le même pour le Wemos D1 mini.&lt;br /&gt;
[[Fichier: Shema_cablage.png|750px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Certaines soudures ont eu tendance à casser=====&lt;br /&gt;
* Solution : Un petit point de colle chaude par dessus les soudures permettra de renforcer les plus fragiles et d'isoler vos connections.&lt;br /&gt;
&lt;br /&gt;
=====Problème : On avait aucune aiguille=====&lt;br /&gt;
* Solution : En imprimer une en 3D ( Si vous n'avez pas d'imprimantes, une aiguille en papier pourrait très bien faire l'affaire).&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
=Axes d'améliorations=&lt;br /&gt;
- Augmenter la puissance sonore du haut parleur.&lt;br /&gt;
- Faire une coque en bois&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29502</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29502"/>
				<updated>2025-01-21T14:36:22Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Préparation des matériaux */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Joseph_jean.jpg|300px|right|thumb|Joseph &amp;amp; Jean les ingénieurs]]&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
[[Fichier:Metronomoa.jpg|right|thumb|Métronome]]&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine&lt;br /&gt;
* Doigts minutieux et précis de Jean&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt;&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2;&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
const int boutonIncrement = D1;&lt;br /&gt;
const int boutonDecrement = D2;&lt;br /&gt;
const int led1 = D5;&lt;br /&gt;
const int servoPin = D4;&lt;br /&gt;
const int buzzer = D6;&lt;br /&gt;
const int clk = D3;  // Broche CLK du 4-Digit Display&lt;br /&gt;
const int dio = D0;  // Broche DIO du 4-Digit Display&lt;br /&gt;
&lt;br /&gt;
Servo servo;&lt;br /&gt;
TM1637Display display(clk, dio);&lt;br /&gt;
&lt;br /&gt;
int bpm = 60;  // BPM initial&lt;br /&gt;
int minBPM = 40;&lt;br /&gt;
int maxBPM = 200;&lt;br /&gt;
bool servo_pos = false;&lt;br /&gt;
unsigned long previousMillis = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(boutonIncrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(boutonDecrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(led1, OUTPUT);&lt;br /&gt;
  pinMode(buzzer, OUTPUT);&lt;br /&gt;
  servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(led1, LOW);&lt;br /&gt;
  digitalWrite(buzzer, LOW);&lt;br /&gt;
  servo.write(0);&lt;br /&gt;
  display.setBrightness(0x0f);  // Réglage de la luminosité du display&lt;br /&gt;
  display.showNumberDec(bpm);   // Affiche la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  handleButtons();&lt;br /&gt;
  metronomeTick();&lt;br /&gt;
  display.showNumberDec(bpm);  // Met à jour l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
  if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
    bpm = min(bpm + 1, maxBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
    bpm = max(bpm - 1, minBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  unsigned long interval = 60000 / bpm;  // Calcul de l'intervalle en ms&lt;br /&gt;
  unsigned long interval_buzzer = 100;&lt;br /&gt;
&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
    digitalWrite(buzzer, HIGH);&lt;br /&gt;
    if (servo_pos == false){&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo.write(180);&lt;br /&gt;
      servo_pos = true;&lt;br /&gt;
    } else{&lt;br /&gt;
      servo.write(0);&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo_pos = false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval_buzzer){&lt;br /&gt;
    digitalWrite(led1, LOW);&lt;br /&gt;
    digitalWrite(buzzer, LOW);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Aiguille_3D.zip|thumb|fichier de l'aiguille pour l'imprimante 3D|bottom]]&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le schéma&amp;lt;br&amp;gt;&lt;br /&gt;
Sur le schéma nous avons une arduino mais le principe est le même pour le Wemos D1 mini.&lt;br /&gt;
[[Fichier: Shema_cablage.png|750px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Certaines soudures ont eu tendance à casser=====&lt;br /&gt;
* Solution : Un petit point de colle chaude par dessus les soudures permettra de renforcer les plus fragiles et d'isoler vos connections.&lt;br /&gt;
&lt;br /&gt;
=====Problème : On avait aucune aiguille=====&lt;br /&gt;
* Solution : En imprimer une en 3D ( Si vous n'avez pas d'imprimantes, une aiguille en papier pourrait très bien faire l'affaire).&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
=Axes d'améliorations=&lt;br /&gt;
- Augmenter la puissance sonore du haut parleur.&lt;br /&gt;
- Faire une coque en bois&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:Aiguille_3D.zip&amp;diff=29495</id>
		<title>Fichier:Aiguille 3D.zip</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:Aiguille_3D.zip&amp;diff=29495"/>
				<updated>2025-01-21T14:33:45Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : Fichiers pour pouvoir imprimer la même aiguille que nous&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Fichiers pour pouvoir imprimer la même aiguille que nous&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29486</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29486"/>
				<updated>2025-01-21T14:24:49Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Joseph_jean.jpg|300px|right|thumb|Joseph &amp;amp; Jean les ingénieurs]]&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
[[Fichier:Metronomoa.jpg|right|thumb|Métronome]]&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine&lt;br /&gt;
* Doigts minutieux et précis de Jean&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt;&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2;&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
const int boutonIncrement = D1;&lt;br /&gt;
const int boutonDecrement = D2;&lt;br /&gt;
const int led1 = D5;&lt;br /&gt;
const int servoPin = D4;&lt;br /&gt;
const int buzzer = D6;&lt;br /&gt;
const int clk = D3;  // Broche CLK du 4-Digit Display&lt;br /&gt;
const int dio = D0;  // Broche DIO du 4-Digit Display&lt;br /&gt;
&lt;br /&gt;
Servo servo;&lt;br /&gt;
TM1637Display display(clk, dio);&lt;br /&gt;
&lt;br /&gt;
int bpm = 60;  // BPM initial&lt;br /&gt;
int minBPM = 40;&lt;br /&gt;
int maxBPM = 200;&lt;br /&gt;
bool servo_pos = false;&lt;br /&gt;
unsigned long previousMillis = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(boutonIncrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(boutonDecrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(led1, OUTPUT);&lt;br /&gt;
  pinMode(buzzer, OUTPUT);&lt;br /&gt;
  servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(led1, LOW);&lt;br /&gt;
  digitalWrite(buzzer, LOW);&lt;br /&gt;
  servo.write(0);&lt;br /&gt;
  display.setBrightness(0x0f);  // Réglage de la luminosité du display&lt;br /&gt;
  display.showNumberDec(bpm);   // Affiche la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  handleButtons();&lt;br /&gt;
  metronomeTick();&lt;br /&gt;
  display.showNumberDec(bpm);  // Met à jour l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
  if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
    bpm = min(bpm + 1, maxBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
    bpm = max(bpm - 1, minBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  unsigned long interval = 60000 / bpm;  // Calcul de l'intervalle en ms&lt;br /&gt;
  unsigned long interval_buzzer = 100;&lt;br /&gt;
&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
    digitalWrite(buzzer, HIGH);&lt;br /&gt;
    if (servo_pos == false){&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo.write(180);&lt;br /&gt;
      servo_pos = true;&lt;br /&gt;
    } else{&lt;br /&gt;
      servo.write(0);&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo_pos = false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval_buzzer){&lt;br /&gt;
    digitalWrite(led1, LOW);&lt;br /&gt;
    digitalWrite(buzzer, LOW);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le schéma&amp;lt;br&amp;gt;&lt;br /&gt;
Sur le schéma nous avons une arduino mais le principe est le même pour le Wemos D1 mini.&lt;br /&gt;
[[Fichier: Shema_cablage.png|750px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Certaines soudures ont eu tendance à casser=====&lt;br /&gt;
* Solution : Un petit point de colle chaude par dessus les soudures permettra de renforcer les plus fragiles et d'isoler vos connections.&lt;br /&gt;
&lt;br /&gt;
=====Problème : On avait aucune aiguille=====&lt;br /&gt;
* Solution : En imprimer une en 3D ( Si vous n'avez pas d'imprimantes, une aiguille en papier pourrait très bien faire l'affaire).&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
=Axes d'améliorations=&lt;br /&gt;
- Augmenter la puissance sonore du haut parleur.&lt;br /&gt;
- Faire une coque en bois&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29455</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29455"/>
				<updated>2025-01-21T14:08:15Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Joseph_jean.jpg|300px|right|thumb|Joseph &amp;amp; Jean les ingénieurs]]&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
[[Fichier:Metronomoa.jpg|right|thumb|Métronome]]&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine&lt;br /&gt;
* Doigts minutieux et précis de Jean&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt;&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2;&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
const int boutonIncrement = D1;&lt;br /&gt;
const int boutonDecrement = D2;&lt;br /&gt;
const int led1 = D5;&lt;br /&gt;
const int servoPin = D4;&lt;br /&gt;
const int buzzer = D6;&lt;br /&gt;
const int clk = D3;  // Broche CLK du 4-Digit Display&lt;br /&gt;
const int dio = D0;  // Broche DIO du 4-Digit Display&lt;br /&gt;
&lt;br /&gt;
Servo servo;&lt;br /&gt;
TM1637Display display(clk, dio);&lt;br /&gt;
&lt;br /&gt;
int bpm = 60;  // BPM initial&lt;br /&gt;
int minBPM = 40;&lt;br /&gt;
int maxBPM = 200;&lt;br /&gt;
bool servo_pos = false;&lt;br /&gt;
unsigned long previousMillis = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(boutonIncrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(boutonDecrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(led1, OUTPUT);&lt;br /&gt;
  pinMode(buzzer, OUTPUT);&lt;br /&gt;
  servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(led1, LOW);&lt;br /&gt;
  digitalWrite(buzzer, LOW);&lt;br /&gt;
  servo.write(0);&lt;br /&gt;
  display.setBrightness(0x0f);  // Réglage de la luminosité du display&lt;br /&gt;
  display.showNumberDec(bpm);   // Affiche la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  handleButtons();&lt;br /&gt;
  metronomeTick();&lt;br /&gt;
  display.showNumberDec(bpm);  // Met à jour l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
  if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
    bpm = min(bpm + 1, maxBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
    bpm = max(bpm - 1, minBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  unsigned long interval = 60000 / bpm;  // Calcul de l'intervalle en ms&lt;br /&gt;
  unsigned long interval_buzzer = 100;&lt;br /&gt;
&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
    digitalWrite(buzzer, HIGH);&lt;br /&gt;
    if (servo_pos == false){&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo.write(180);&lt;br /&gt;
      servo_pos = true;&lt;br /&gt;
    } else{&lt;br /&gt;
      servo.write(0);&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo_pos = false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval_buzzer){&lt;br /&gt;
    digitalWrite(led1, LOW);&lt;br /&gt;
    digitalWrite(buzzer, LOW);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le schéma&amp;lt;br&amp;gt;&lt;br /&gt;
Sur le schéma nous avons une arduino mais le principe est le même pour le Wemos D1 mini.&lt;br /&gt;
[[Fichier: Shema_cablage.png|750px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
=Axes d'améliorations=&lt;br /&gt;
- Augmenter la puissance sonore du haut parleur.&lt;br /&gt;
- Faire une coque en bois&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29452</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29452"/>
				<updated>2025-01-21T14:07:57Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Qu'est qu'un métronome ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Joseph_jean.jpg|300px|right|thumb|Joseph &amp;amp; Jean les ingénieurs]]&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
[[Fichier:Metronomoa.jpg|right|thumb|Métronome]]&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine&lt;br /&gt;
* Doigts minutieux et précis de Jean&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt;&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2;&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
const int boutonIncrement = D1;&lt;br /&gt;
const int boutonDecrement = D2;&lt;br /&gt;
const int led1 = D5;&lt;br /&gt;
const int servoPin = D4;&lt;br /&gt;
const int buzzer = D6;&lt;br /&gt;
const int clk = D3;  // Broche CLK du 4-Digit Display&lt;br /&gt;
const int dio = D0;  // Broche DIO du 4-Digit Display&lt;br /&gt;
&lt;br /&gt;
Servo servo;&lt;br /&gt;
TM1637Display display(clk, dio);&lt;br /&gt;
&lt;br /&gt;
int bpm = 60;  // BPM initial&lt;br /&gt;
int minBPM = 40;&lt;br /&gt;
int maxBPM = 200;&lt;br /&gt;
bool servo_pos = false;&lt;br /&gt;
unsigned long previousMillis = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(boutonIncrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(boutonDecrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(led1, OUTPUT);&lt;br /&gt;
  pinMode(buzzer, OUTPUT);&lt;br /&gt;
  servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(led1, LOW);&lt;br /&gt;
  digitalWrite(buzzer, LOW);&lt;br /&gt;
  servo.write(0);&lt;br /&gt;
  display.setBrightness(0x0f);  // Réglage de la luminosité du display&lt;br /&gt;
  display.showNumberDec(bpm);   // Affiche la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  handleButtons();&lt;br /&gt;
  metronomeTick();&lt;br /&gt;
  display.showNumberDec(bpm);  // Met à jour l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
  if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
    bpm = min(bpm + 1, maxBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
    bpm = max(bpm - 1, minBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  unsigned long interval = 60000 / bpm;  // Calcul de l'intervalle en ms&lt;br /&gt;
  unsigned long interval_buzzer = 100;&lt;br /&gt;
&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
    digitalWrite(buzzer, HIGH);&lt;br /&gt;
    if (servo_pos == false){&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo.write(180);&lt;br /&gt;
      servo_pos = true;&lt;br /&gt;
    } else{&lt;br /&gt;
      servo.write(0);&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo_pos = false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval_buzzer){&lt;br /&gt;
    digitalWrite(led1, LOW);&lt;br /&gt;
    digitalWrite(buzzer, LOW);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le schéma&amp;lt;br&amp;gt;&lt;br /&gt;
Sur le schéma nous avons une arduino mais le principe est le même pour le Wemos D1 mini.&lt;br /&gt;
[[Fichier: Shema_cablage.png|750px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
=Axes d'améliorations=&lt;br /&gt;
- Augmenter la puissance sonore du haut parleur.&lt;br /&gt;
- Faire une coque en bois&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29451</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29451"/>
				<updated>2025-01-21T14:07:47Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Qu'est qu'un métronome ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Joseph_jean.jpg|300px|right|thumb|Joseph &amp;amp; Jean les ingénieurs]]&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
[[Fichier:Metronomoa.jpg|right|thumb|Métronome]]&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine&lt;br /&gt;
* Doigts minutieux et précis de Jean&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt;&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2;&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
const int boutonIncrement = D1;&lt;br /&gt;
const int boutonDecrement = D2;&lt;br /&gt;
const int led1 = D5;&lt;br /&gt;
const int servoPin = D4;&lt;br /&gt;
const int buzzer = D6;&lt;br /&gt;
const int clk = D3;  // Broche CLK du 4-Digit Display&lt;br /&gt;
const int dio = D0;  // Broche DIO du 4-Digit Display&lt;br /&gt;
&lt;br /&gt;
Servo servo;&lt;br /&gt;
TM1637Display display(clk, dio);&lt;br /&gt;
&lt;br /&gt;
int bpm = 60;  // BPM initial&lt;br /&gt;
int minBPM = 40;&lt;br /&gt;
int maxBPM = 200;&lt;br /&gt;
bool servo_pos = false;&lt;br /&gt;
unsigned long previousMillis = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(boutonIncrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(boutonDecrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(led1, OUTPUT);&lt;br /&gt;
  pinMode(buzzer, OUTPUT);&lt;br /&gt;
  servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(led1, LOW);&lt;br /&gt;
  digitalWrite(buzzer, LOW);&lt;br /&gt;
  servo.write(0);&lt;br /&gt;
  display.setBrightness(0x0f);  // Réglage de la luminosité du display&lt;br /&gt;
  display.showNumberDec(bpm);   // Affiche la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  handleButtons();&lt;br /&gt;
  metronomeTick();&lt;br /&gt;
  display.showNumberDec(bpm);  // Met à jour l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
  if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
    bpm = min(bpm + 1, maxBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
    bpm = max(bpm - 1, minBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  unsigned long interval = 60000 / bpm;  // Calcul de l'intervalle en ms&lt;br /&gt;
  unsigned long interval_buzzer = 100;&lt;br /&gt;
&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
    digitalWrite(buzzer, HIGH);&lt;br /&gt;
    if (servo_pos == false){&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo.write(180);&lt;br /&gt;
      servo_pos = true;&lt;br /&gt;
    } else{&lt;br /&gt;
      servo.write(0);&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo_pos = false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval_buzzer){&lt;br /&gt;
    digitalWrite(led1, LOW);&lt;br /&gt;
    digitalWrite(buzzer, LOW);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le schéma&amp;lt;br&amp;gt;&lt;br /&gt;
Sur le schéma nous avons une arduino mais le principe est le même pour le Wemos D1 mini.&lt;br /&gt;
[[Fichier: Shema_cablage.png|750px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
=Axes d'améliorations=&lt;br /&gt;
- Augmenter la puissance sonore du haut parleur.&lt;br /&gt;
- Faire une coque en bois&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29450</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29450"/>
				<updated>2025-01-21T14:07:34Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Qu'est qu'un métronome ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Joseph_jean.jpg|300px|right|thumb|Joseph &amp;amp; Jean les ingénieurs]]&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
[[Fichier:Metronomoa.jpg|right|thumb|Métronome]]&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine&lt;br /&gt;
* Doigts minutieux et précis de Jean&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt;&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2;&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
const int boutonIncrement = D1;&lt;br /&gt;
const int boutonDecrement = D2;&lt;br /&gt;
const int led1 = D5;&lt;br /&gt;
const int servoPin = D4;&lt;br /&gt;
const int buzzer = D6;&lt;br /&gt;
const int clk = D3;  // Broche CLK du 4-Digit Display&lt;br /&gt;
const int dio = D0;  // Broche DIO du 4-Digit Display&lt;br /&gt;
&lt;br /&gt;
Servo servo;&lt;br /&gt;
TM1637Display display(clk, dio);&lt;br /&gt;
&lt;br /&gt;
int bpm = 60;  // BPM initial&lt;br /&gt;
int minBPM = 40;&lt;br /&gt;
int maxBPM = 200;&lt;br /&gt;
bool servo_pos = false;&lt;br /&gt;
unsigned long previousMillis = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(boutonIncrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(boutonDecrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(led1, OUTPUT);&lt;br /&gt;
  pinMode(buzzer, OUTPUT);&lt;br /&gt;
  servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(led1, LOW);&lt;br /&gt;
  digitalWrite(buzzer, LOW);&lt;br /&gt;
  servo.write(0);&lt;br /&gt;
  display.setBrightness(0x0f);  // Réglage de la luminosité du display&lt;br /&gt;
  display.showNumberDec(bpm);   // Affiche la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  handleButtons();&lt;br /&gt;
  metronomeTick();&lt;br /&gt;
  display.showNumberDec(bpm);  // Met à jour l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
  if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
    bpm = min(bpm + 1, maxBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
    bpm = max(bpm - 1, minBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  unsigned long interval = 60000 / bpm;  // Calcul de l'intervalle en ms&lt;br /&gt;
  unsigned long interval_buzzer = 100;&lt;br /&gt;
&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
    digitalWrite(buzzer, HIGH);&lt;br /&gt;
    if (servo_pos == false){&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo.write(180);&lt;br /&gt;
      servo_pos = true;&lt;br /&gt;
    } else{&lt;br /&gt;
      servo.write(0);&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo_pos = false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval_buzzer){&lt;br /&gt;
    digitalWrite(led1, LOW);&lt;br /&gt;
    digitalWrite(buzzer, LOW);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le schéma&amp;lt;br&amp;gt;&lt;br /&gt;
Sur le schéma nous avons une arduino mais le principe est le même pour le Wemos D1 mini.&lt;br /&gt;
[[Fichier: Shema_cablage.png|750px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
=Axes d'améliorations=&lt;br /&gt;
- Augmenter la puissance sonore du haut parleur.&lt;br /&gt;
- Faire une coque en bois&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29447</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29447"/>
				<updated>2025-01-21T14:06:36Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Qu'est qu'un métronome ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Joseph_jean.jpg|300px|right|thumb|Joseph &amp;amp; Jean les ingénieurs]]&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
[[Fichier:Metronomoa.jpg|right|thumb|Métronome]]&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine&lt;br /&gt;
* Doigts minutieux et précis de Jean&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt;&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2;&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
const int boutonIncrement = D1;&lt;br /&gt;
const int boutonDecrement = D2;&lt;br /&gt;
const int led1 = D5;&lt;br /&gt;
const int servoPin = D4;&lt;br /&gt;
const int buzzer = D6;&lt;br /&gt;
const int clk = D3;  // Broche CLK du 4-Digit Display&lt;br /&gt;
const int dio = D0;  // Broche DIO du 4-Digit Display&lt;br /&gt;
&lt;br /&gt;
Servo servo;&lt;br /&gt;
TM1637Display display(clk, dio);&lt;br /&gt;
&lt;br /&gt;
int bpm = 60;  // BPM initial&lt;br /&gt;
int minBPM = 40;&lt;br /&gt;
int maxBPM = 200;&lt;br /&gt;
bool servo_pos = false;&lt;br /&gt;
unsigned long previousMillis = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(boutonIncrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(boutonDecrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(led1, OUTPUT);&lt;br /&gt;
  pinMode(buzzer, OUTPUT);&lt;br /&gt;
  servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(led1, LOW);&lt;br /&gt;
  digitalWrite(buzzer, LOW);&lt;br /&gt;
  servo.write(0);&lt;br /&gt;
  display.setBrightness(0x0f);  // Réglage de la luminosité du display&lt;br /&gt;
  display.showNumberDec(bpm);   // Affiche la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  handleButtons();&lt;br /&gt;
  metronomeTick();&lt;br /&gt;
  display.showNumberDec(bpm);  // Met à jour l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
  if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
    bpm = min(bpm + 1, maxBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
    bpm = max(bpm - 1, minBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  unsigned long interval = 60000 / bpm;  // Calcul de l'intervalle en ms&lt;br /&gt;
  unsigned long interval_buzzer = 100;&lt;br /&gt;
&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
    digitalWrite(buzzer, HIGH);&lt;br /&gt;
    if (servo_pos == false){&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo.write(180);&lt;br /&gt;
      servo_pos = true;&lt;br /&gt;
    } else{&lt;br /&gt;
      servo.write(0);&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo_pos = false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval_buzzer){&lt;br /&gt;
    digitalWrite(led1, LOW);&lt;br /&gt;
    digitalWrite(buzzer, LOW);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le schéma&amp;lt;br&amp;gt;&lt;br /&gt;
Sur le schéma nous avons une arduino mais le principe est le même pour le Wemos D1 mini.&lt;br /&gt;
[[Fichier: Shema_cablage.png|750px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
=Axes d'améliorations=&lt;br /&gt;
- Augmenter la puissance sonore du haut parleur.&lt;br /&gt;
- Faire une coque en bois&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29443</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29443"/>
				<updated>2025-01-21T14:05:58Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Qu'est qu'un métronome ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Joseph_jean.jpg|300px|right|thumb|Joseph &amp;amp; Jean les ingénieurs]]&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
[[Fichier:Metronomoa.jpg|right|thumb|Métronome]]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine&lt;br /&gt;
* Doigts minutieux et précis de Jean&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt;&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2;&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
const int boutonIncrement = D1;&lt;br /&gt;
const int boutonDecrement = D2;&lt;br /&gt;
const int led1 = D5;&lt;br /&gt;
const int servoPin = D4;&lt;br /&gt;
const int buzzer = D6;&lt;br /&gt;
const int clk = D3;  // Broche CLK du 4-Digit Display&lt;br /&gt;
const int dio = D0;  // Broche DIO du 4-Digit Display&lt;br /&gt;
&lt;br /&gt;
Servo servo;&lt;br /&gt;
TM1637Display display(clk, dio);&lt;br /&gt;
&lt;br /&gt;
int bpm = 60;  // BPM initial&lt;br /&gt;
int minBPM = 40;&lt;br /&gt;
int maxBPM = 200;&lt;br /&gt;
bool servo_pos = false;&lt;br /&gt;
unsigned long previousMillis = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(boutonIncrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(boutonDecrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(led1, OUTPUT);&lt;br /&gt;
  pinMode(buzzer, OUTPUT);&lt;br /&gt;
  servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(led1, LOW);&lt;br /&gt;
  digitalWrite(buzzer, LOW);&lt;br /&gt;
  servo.write(0);&lt;br /&gt;
  display.setBrightness(0x0f);  // Réglage de la luminosité du display&lt;br /&gt;
  display.showNumberDec(bpm);   // Affiche la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  handleButtons();&lt;br /&gt;
  metronomeTick();&lt;br /&gt;
  display.showNumberDec(bpm);  // Met à jour l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
  if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
    bpm = min(bpm + 1, maxBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
    bpm = max(bpm - 1, minBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  unsigned long interval = 60000 / bpm;  // Calcul de l'intervalle en ms&lt;br /&gt;
  unsigned long interval_buzzer = 100;&lt;br /&gt;
&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
    digitalWrite(buzzer, HIGH);&lt;br /&gt;
    if (servo_pos == false){&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo.write(180);&lt;br /&gt;
      servo_pos = true;&lt;br /&gt;
    } else{&lt;br /&gt;
      servo.write(0);&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo_pos = false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval_buzzer){&lt;br /&gt;
    digitalWrite(led1, LOW);&lt;br /&gt;
    digitalWrite(buzzer, LOW);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le schéma&amp;lt;br&amp;gt;&lt;br /&gt;
Sur le schéma nous avons une arduino mais le principe est le même pour le Wemos D1 mini.&lt;br /&gt;
[[Fichier: Shema_cablage.png|750px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
=Axes d'améliorations=&lt;br /&gt;
- Augmenter la puissance sonore du haut parleur.&lt;br /&gt;
- Faire une coque en bois&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29440</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29440"/>
				<updated>2025-01-21T14:05:40Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Joseph_jean.jpg|300px|right|thumb|Joseph &amp;amp; Jean les ingénieurs]]&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Metronomoa.jpg|right|thumb|Métronome]]&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine&lt;br /&gt;
* Doigts minutieux et précis de Jean&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt;&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2;&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
const int boutonIncrement = D1;&lt;br /&gt;
const int boutonDecrement = D2;&lt;br /&gt;
const int led1 = D5;&lt;br /&gt;
const int servoPin = D4;&lt;br /&gt;
const int buzzer = D6;&lt;br /&gt;
const int clk = D3;  // Broche CLK du 4-Digit Display&lt;br /&gt;
const int dio = D0;  // Broche DIO du 4-Digit Display&lt;br /&gt;
&lt;br /&gt;
Servo servo;&lt;br /&gt;
TM1637Display display(clk, dio);&lt;br /&gt;
&lt;br /&gt;
int bpm = 60;  // BPM initial&lt;br /&gt;
int minBPM = 40;&lt;br /&gt;
int maxBPM = 200;&lt;br /&gt;
bool servo_pos = false;&lt;br /&gt;
unsigned long previousMillis = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(boutonIncrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(boutonDecrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(led1, OUTPUT);&lt;br /&gt;
  pinMode(buzzer, OUTPUT);&lt;br /&gt;
  servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(led1, LOW);&lt;br /&gt;
  digitalWrite(buzzer, LOW);&lt;br /&gt;
  servo.write(0);&lt;br /&gt;
  display.setBrightness(0x0f);  // Réglage de la luminosité du display&lt;br /&gt;
  display.showNumberDec(bpm);   // Affiche la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  handleButtons();&lt;br /&gt;
  metronomeTick();&lt;br /&gt;
  display.showNumberDec(bpm);  // Met à jour l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
  if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
    bpm = min(bpm + 1, maxBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
    bpm = max(bpm - 1, minBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  unsigned long interval = 60000 / bpm;  // Calcul de l'intervalle en ms&lt;br /&gt;
  unsigned long interval_buzzer = 100;&lt;br /&gt;
&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
    digitalWrite(buzzer, HIGH);&lt;br /&gt;
    if (servo_pos == false){&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo.write(180);&lt;br /&gt;
      servo_pos = true;&lt;br /&gt;
    } else{&lt;br /&gt;
      servo.write(0);&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo_pos = false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval_buzzer){&lt;br /&gt;
    digitalWrite(led1, LOW);&lt;br /&gt;
    digitalWrite(buzzer, LOW);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le schéma&amp;lt;br&amp;gt;&lt;br /&gt;
Sur le schéma nous avons une arduino mais le principe est le même pour le Wemos D1 mini.&lt;br /&gt;
[[Fichier: Shema_cablage.png|750px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
=Axes d'améliorations=&lt;br /&gt;
- Augmenter la puissance sonore du haut parleur.&lt;br /&gt;
- Faire une coque en bois&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29437</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29437"/>
				<updated>2025-01-21T14:05:10Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Joseph_jean.jpg|300px|right|thumb|Joseph &amp;amp; Jean les ingénieurs]]&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Metronomoa.jpg|right|thumb|Métronome]]&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine&lt;br /&gt;
* Doigts minutieux et précis de Jean&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt;&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2;&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
const int boutonIncrement = D1;&lt;br /&gt;
const int boutonDecrement = D2;&lt;br /&gt;
const int led1 = D5;&lt;br /&gt;
const int servoPin = D4;&lt;br /&gt;
const int buzzer = D6;&lt;br /&gt;
const int clk = D3;  // Broche CLK du 4-Digit Display&lt;br /&gt;
const int dio = D0;  // Broche DIO du 4-Digit Display&lt;br /&gt;
&lt;br /&gt;
Servo servo;&lt;br /&gt;
TM1637Display display(clk, dio);&lt;br /&gt;
&lt;br /&gt;
int bpm = 60;  // BPM initial&lt;br /&gt;
int minBPM = 40;&lt;br /&gt;
int maxBPM = 200;&lt;br /&gt;
bool servo_pos = false;&lt;br /&gt;
unsigned long previousMillis = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(boutonIncrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(boutonDecrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(led1, OUTPUT);&lt;br /&gt;
  pinMode(buzzer, OUTPUT);&lt;br /&gt;
  servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(led1, LOW);&lt;br /&gt;
  digitalWrite(buzzer, LOW);&lt;br /&gt;
  servo.write(0);&lt;br /&gt;
  display.setBrightness(0x0f);  // Réglage de la luminosité du display&lt;br /&gt;
  display.showNumberDec(bpm);   // Affiche la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  handleButtons();&lt;br /&gt;
  metronomeTick();&lt;br /&gt;
  display.showNumberDec(bpm);  // Met à jour l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
  if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
    bpm = min(bpm + 1, maxBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
    bpm = max(bpm - 1, minBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  unsigned long interval = 60000 / bpm;  // Calcul de l'intervalle en ms&lt;br /&gt;
  unsigned long interval_buzzer = 100;&lt;br /&gt;
&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
    digitalWrite(buzzer, HIGH);&lt;br /&gt;
    if (servo_pos == false){&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo.write(180);&lt;br /&gt;
      servo_pos = true;&lt;br /&gt;
    } else{&lt;br /&gt;
      servo.write(0);&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo_pos = false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval_buzzer){&lt;br /&gt;
    digitalWrite(led1, LOW);&lt;br /&gt;
    digitalWrite(buzzer, LOW);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le schéma&amp;lt;br&amp;gt;&lt;br /&gt;
Sur le schéma nous avons une arduino mais le principe est le même pour le Wemos D1 mini.&lt;br /&gt;
[[Fichier: Shema_cablage.png|750px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
=Axes d'améliorations=&lt;br /&gt;
- Augmenter la puissance sonore du haut parleur.&lt;br /&gt;
- Faire une coque en bois&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29430</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29430"/>
				<updated>2025-01-21T14:03:29Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Joseph_jean.jpg|300px|right|thumb|Joseph &amp;amp; Jean les ingénieurs]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Metronomoa.jpg|right|thumb|Métronome]]&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine&lt;br /&gt;
* Doigts minutieux et précis de Jean&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt;&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2;&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
const int boutonIncrement = D1;&lt;br /&gt;
const int boutonDecrement = D2;&lt;br /&gt;
const int led1 = D5;&lt;br /&gt;
const int servoPin = D4;&lt;br /&gt;
const int buzzer = D6;&lt;br /&gt;
const int clk = D3;  // Broche CLK du 4-Digit Display&lt;br /&gt;
const int dio = D0;  // Broche DIO du 4-Digit Display&lt;br /&gt;
&lt;br /&gt;
Servo servo;&lt;br /&gt;
TM1637Display display(clk, dio);&lt;br /&gt;
&lt;br /&gt;
int bpm = 60;  // BPM initial&lt;br /&gt;
int minBPM = 40;&lt;br /&gt;
int maxBPM = 200;&lt;br /&gt;
bool servo_pos = false;&lt;br /&gt;
unsigned long previousMillis = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(boutonIncrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(boutonDecrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(led1, OUTPUT);&lt;br /&gt;
  pinMode(buzzer, OUTPUT);&lt;br /&gt;
  servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(led1, LOW);&lt;br /&gt;
  digitalWrite(buzzer, LOW);&lt;br /&gt;
  servo.write(0);&lt;br /&gt;
  display.setBrightness(0x0f);  // Réglage de la luminosité du display&lt;br /&gt;
  display.showNumberDec(bpm);   // Affiche la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  handleButtons();&lt;br /&gt;
  metronomeTick();&lt;br /&gt;
  display.showNumberDec(bpm);  // Met à jour l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
  if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
    bpm = min(bpm + 1, maxBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
    bpm = max(bpm - 1, minBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  unsigned long interval = 60000 / bpm;  // Calcul de l'intervalle en ms&lt;br /&gt;
  unsigned long interval_buzzer = 100;&lt;br /&gt;
&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
    digitalWrite(buzzer, HIGH);&lt;br /&gt;
    if (servo_pos == false){&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo.write(180);&lt;br /&gt;
      servo_pos = true;&lt;br /&gt;
    } else{&lt;br /&gt;
      servo.write(0);&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo_pos = false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval_buzzer){&lt;br /&gt;
    digitalWrite(led1, LOW);&lt;br /&gt;
    digitalWrite(buzzer, LOW);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le schéma&amp;lt;br&amp;gt;&lt;br /&gt;
Sur le schéma nous avons une arduino mais le principe est le même pour le Wemos D1 mini.&lt;br /&gt;
[[Fichier: Shema_cablage.png|750px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
=Axes d'améliorations=&lt;br /&gt;
- Augmenter la puissance sonore du haut parleur.&lt;br /&gt;
- Faire une coque en bois&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29427</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29427"/>
				<updated>2025-01-21T14:03:05Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Qu'est qu'un métronome ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Joseph_jean.jpg|300px|right|thumb|Joseph &amp;amp; Jean les ingénieurs]]&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Metronomoa.jpg|right|thumb|Métronome]]&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine&lt;br /&gt;
* Doigts minutieux et précis de Jean&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt;&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2;&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
const int boutonIncrement = D1;&lt;br /&gt;
const int boutonDecrement = D2;&lt;br /&gt;
const int led1 = D5;&lt;br /&gt;
const int servoPin = D4;&lt;br /&gt;
const int buzzer = D6;&lt;br /&gt;
const int clk = D3;  // Broche CLK du 4-Digit Display&lt;br /&gt;
const int dio = D0;  // Broche DIO du 4-Digit Display&lt;br /&gt;
&lt;br /&gt;
Servo servo;&lt;br /&gt;
TM1637Display display(clk, dio);&lt;br /&gt;
&lt;br /&gt;
int bpm = 60;  // BPM initial&lt;br /&gt;
int minBPM = 40;&lt;br /&gt;
int maxBPM = 200;&lt;br /&gt;
bool servo_pos = false;&lt;br /&gt;
unsigned long previousMillis = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(boutonIncrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(boutonDecrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(led1, OUTPUT);&lt;br /&gt;
  pinMode(buzzer, OUTPUT);&lt;br /&gt;
  servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(led1, LOW);&lt;br /&gt;
  digitalWrite(buzzer, LOW);&lt;br /&gt;
  servo.write(0);&lt;br /&gt;
  display.setBrightness(0x0f);  // Réglage de la luminosité du display&lt;br /&gt;
  display.showNumberDec(bpm);   // Affiche la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  handleButtons();&lt;br /&gt;
  metronomeTick();&lt;br /&gt;
  display.showNumberDec(bpm);  // Met à jour l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
  if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
    bpm = min(bpm + 1, maxBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
    bpm = max(bpm - 1, minBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  unsigned long interval = 60000 / bpm;  // Calcul de l'intervalle en ms&lt;br /&gt;
  unsigned long interval_buzzer = 100;&lt;br /&gt;
&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
    digitalWrite(buzzer, HIGH);&lt;br /&gt;
    if (servo_pos == false){&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo.write(180);&lt;br /&gt;
      servo_pos = true;&lt;br /&gt;
    } else{&lt;br /&gt;
      servo.write(0);&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo_pos = false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval_buzzer){&lt;br /&gt;
    digitalWrite(led1, LOW);&lt;br /&gt;
    digitalWrite(buzzer, LOW);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le schéma&amp;lt;br&amp;gt;&lt;br /&gt;
Sur le schéma nous avons une arduino mais le principe est le même pour le Wemos D1 mini.&lt;br /&gt;
[[Fichier: Shema_cablage.png|750px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
=Axes d'améliorations=&lt;br /&gt;
- Augmenter la puissance sonore du haut parleur.&lt;br /&gt;
- Faire une coque en bois&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29420</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29420"/>
				<updated>2025-01-21T14:02:31Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Joseph_jean.jpg|300px|right|thumb|Joseph &amp;amp; Jean les ingénieurs]]&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Metronomoa.jpg|right]]&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine&lt;br /&gt;
* Doigts minutieux et précis de Jean&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt;&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2;&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
const int boutonIncrement = D1;&lt;br /&gt;
const int boutonDecrement = D2;&lt;br /&gt;
const int led1 = D5;&lt;br /&gt;
const int servoPin = D4;&lt;br /&gt;
const int buzzer = D6;&lt;br /&gt;
const int clk = D3;  // Broche CLK du 4-Digit Display&lt;br /&gt;
const int dio = D0;  // Broche DIO du 4-Digit Display&lt;br /&gt;
&lt;br /&gt;
Servo servo;&lt;br /&gt;
TM1637Display display(clk, dio);&lt;br /&gt;
&lt;br /&gt;
int bpm = 60;  // BPM initial&lt;br /&gt;
int minBPM = 40;&lt;br /&gt;
int maxBPM = 200;&lt;br /&gt;
bool servo_pos = false;&lt;br /&gt;
unsigned long previousMillis = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(boutonIncrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(boutonDecrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(led1, OUTPUT);&lt;br /&gt;
  pinMode(buzzer, OUTPUT);&lt;br /&gt;
  servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(led1, LOW);&lt;br /&gt;
  digitalWrite(buzzer, LOW);&lt;br /&gt;
  servo.write(0);&lt;br /&gt;
  display.setBrightness(0x0f);  // Réglage de la luminosité du display&lt;br /&gt;
  display.showNumberDec(bpm);   // Affiche la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  handleButtons();&lt;br /&gt;
  metronomeTick();&lt;br /&gt;
  display.showNumberDec(bpm);  // Met à jour l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
  if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
    bpm = min(bpm + 1, maxBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
    bpm = max(bpm - 1, minBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  unsigned long interval = 60000 / bpm;  // Calcul de l'intervalle en ms&lt;br /&gt;
  unsigned long interval_buzzer = 100;&lt;br /&gt;
&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
    digitalWrite(buzzer, HIGH);&lt;br /&gt;
    if (servo_pos == false){&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo.write(180);&lt;br /&gt;
      servo_pos = true;&lt;br /&gt;
    } else{&lt;br /&gt;
      servo.write(0);&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo_pos = false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval_buzzer){&lt;br /&gt;
    digitalWrite(led1, LOW);&lt;br /&gt;
    digitalWrite(buzzer, LOW);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le schéma&amp;lt;br&amp;gt;&lt;br /&gt;
Sur le schéma nous avons une arduino mais le principe est le même pour le Wemos D1 mini.&lt;br /&gt;
[[Fichier: Shema_cablage.png|750px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
=Axes d'améliorations=&lt;br /&gt;
- Augmenter la puissance sonore du haut parleur.&lt;br /&gt;
- Faire une coque en bois&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29412</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29412"/>
				<updated>2025-01-21T14:01:24Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Joseph_jean.jpg|300px|right]]&lt;br /&gt;
&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Metronomoa.jpg|right]]&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine&lt;br /&gt;
* Doigts minutieux et précis de Jean&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt;&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2;&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
const int boutonIncrement = D1;&lt;br /&gt;
const int boutonDecrement = D2;&lt;br /&gt;
const int led1 = D5;&lt;br /&gt;
const int servoPin = D4;&lt;br /&gt;
const int buzzer = D6;&lt;br /&gt;
const int clk = D3;  // Broche CLK du 4-Digit Display&lt;br /&gt;
const int dio = D0;  // Broche DIO du 4-Digit Display&lt;br /&gt;
&lt;br /&gt;
Servo servo;&lt;br /&gt;
TM1637Display display(clk, dio);&lt;br /&gt;
&lt;br /&gt;
int bpm = 60;  // BPM initial&lt;br /&gt;
int minBPM = 40;&lt;br /&gt;
int maxBPM = 200;&lt;br /&gt;
bool servo_pos = false;&lt;br /&gt;
unsigned long previousMillis = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(boutonIncrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(boutonDecrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(led1, OUTPUT);&lt;br /&gt;
  pinMode(buzzer, OUTPUT);&lt;br /&gt;
  servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(led1, LOW);&lt;br /&gt;
  digitalWrite(buzzer, LOW);&lt;br /&gt;
  servo.write(0);&lt;br /&gt;
  display.setBrightness(0x0f);  // Réglage de la luminosité du display&lt;br /&gt;
  display.showNumberDec(bpm);   // Affiche la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  handleButtons();&lt;br /&gt;
  metronomeTick();&lt;br /&gt;
  display.showNumberDec(bpm);  // Met à jour l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
  if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
    bpm = min(bpm + 1, maxBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
    bpm = max(bpm - 1, minBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  unsigned long interval = 60000 / bpm;  // Calcul de l'intervalle en ms&lt;br /&gt;
  unsigned long interval_buzzer = 100;&lt;br /&gt;
&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
    digitalWrite(buzzer, HIGH);&lt;br /&gt;
    if (servo_pos == false){&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo.write(180);&lt;br /&gt;
      servo_pos = true;&lt;br /&gt;
    } else{&lt;br /&gt;
      servo.write(0);&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo_pos = false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval_buzzer){&lt;br /&gt;
    digitalWrite(led1, LOW);&lt;br /&gt;
    digitalWrite(buzzer, LOW);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le schéma&amp;lt;br&amp;gt;&lt;br /&gt;
Sur le schéma nous avons une arduino mais le principe est le même pour le Wemos D1 mini.&lt;br /&gt;
[[Fichier: Shema_cablage.png|750px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
=Axes d'améliorations=&lt;br /&gt;
- Augmenter la puissance sonore du haut parleur.&lt;br /&gt;
- Faire une coque en bois&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29407</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29407"/>
				<updated>2025-01-21T14:00:43Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Joseph_jean.jpg|300px|right]]&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Metronomoa.jpg|right]]&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine&lt;br /&gt;
* Doigts minutieux et précis de Jean&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt;&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2;&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
const int boutonIncrement = D1;&lt;br /&gt;
const int boutonDecrement = D2;&lt;br /&gt;
const int led1 = D5;&lt;br /&gt;
const int servoPin = D4;&lt;br /&gt;
const int buzzer = D6;&lt;br /&gt;
const int clk = D3;  // Broche CLK du 4-Digit Display&lt;br /&gt;
const int dio = D0;  // Broche DIO du 4-Digit Display&lt;br /&gt;
&lt;br /&gt;
Servo servo;&lt;br /&gt;
TM1637Display display(clk, dio);&lt;br /&gt;
&lt;br /&gt;
int bpm = 60;  // BPM initial&lt;br /&gt;
int minBPM = 40;&lt;br /&gt;
int maxBPM = 200;&lt;br /&gt;
bool servo_pos = false;&lt;br /&gt;
unsigned long previousMillis = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(boutonIncrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(boutonDecrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(led1, OUTPUT);&lt;br /&gt;
  pinMode(buzzer, OUTPUT);&lt;br /&gt;
  servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(led1, LOW);&lt;br /&gt;
  digitalWrite(buzzer, LOW);&lt;br /&gt;
  servo.write(0);&lt;br /&gt;
  display.setBrightness(0x0f);  // Réglage de la luminosité du display&lt;br /&gt;
  display.showNumberDec(bpm);   // Affiche la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  handleButtons();&lt;br /&gt;
  metronomeTick();&lt;br /&gt;
  display.showNumberDec(bpm);  // Met à jour l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
  if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
    bpm = min(bpm + 1, maxBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
    bpm = max(bpm - 1, minBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  unsigned long interval = 60000 / bpm;  // Calcul de l'intervalle en ms&lt;br /&gt;
  unsigned long interval_buzzer = 100;&lt;br /&gt;
&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
    digitalWrite(buzzer, HIGH);&lt;br /&gt;
    if (servo_pos == false){&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo.write(180);&lt;br /&gt;
      servo_pos = true;&lt;br /&gt;
    } else{&lt;br /&gt;
      servo.write(0);&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo_pos = false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval_buzzer){&lt;br /&gt;
    digitalWrite(led1, LOW);&lt;br /&gt;
    digitalWrite(buzzer, LOW);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le schéma&amp;lt;br&amp;gt;&lt;br /&gt;
Sur le schéma nous avons une arduino mais le principe est le même pour le Wemos D1 mini.&lt;br /&gt;
[[Fichier: Shema_cablage.png|750px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
=Axes d'améliorations=&lt;br /&gt;
- Augmenter la puissance sonore du haut parleur.&lt;br /&gt;
- Faire une coque en bois&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29404</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29404"/>
				<updated>2025-01-21T14:00:12Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Metronomoa.jpg]] [[Fichier:Joseph_jean.jpg|300px|right]]&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine&lt;br /&gt;
* Doigts minutieux et précis de Jean&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt;&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2;&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
const int boutonIncrement = D1;&lt;br /&gt;
const int boutonDecrement = D2;&lt;br /&gt;
const int led1 = D5;&lt;br /&gt;
const int servoPin = D4;&lt;br /&gt;
const int buzzer = D6;&lt;br /&gt;
const int clk = D3;  // Broche CLK du 4-Digit Display&lt;br /&gt;
const int dio = D0;  // Broche DIO du 4-Digit Display&lt;br /&gt;
&lt;br /&gt;
Servo servo;&lt;br /&gt;
TM1637Display display(clk, dio);&lt;br /&gt;
&lt;br /&gt;
int bpm = 60;  // BPM initial&lt;br /&gt;
int minBPM = 40;&lt;br /&gt;
int maxBPM = 200;&lt;br /&gt;
bool servo_pos = false;&lt;br /&gt;
unsigned long previousMillis = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(boutonIncrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(boutonDecrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(led1, OUTPUT);&lt;br /&gt;
  pinMode(buzzer, OUTPUT);&lt;br /&gt;
  servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(led1, LOW);&lt;br /&gt;
  digitalWrite(buzzer, LOW);&lt;br /&gt;
  servo.write(0);&lt;br /&gt;
  display.setBrightness(0x0f);  // Réglage de la luminosité du display&lt;br /&gt;
  display.showNumberDec(bpm);   // Affiche la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  handleButtons();&lt;br /&gt;
  metronomeTick();&lt;br /&gt;
  display.showNumberDec(bpm);  // Met à jour l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
  if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
    bpm = min(bpm + 1, maxBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
    bpm = max(bpm - 1, minBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  unsigned long interval = 60000 / bpm;  // Calcul de l'intervalle en ms&lt;br /&gt;
  unsigned long interval_buzzer = 100;&lt;br /&gt;
&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
    digitalWrite(buzzer, HIGH);&lt;br /&gt;
    if (servo_pos == false){&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo.write(180);&lt;br /&gt;
      servo_pos = true;&lt;br /&gt;
    } else{&lt;br /&gt;
      servo.write(0);&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo_pos = false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval_buzzer){&lt;br /&gt;
    digitalWrite(led1, LOW);&lt;br /&gt;
    digitalWrite(buzzer, LOW);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le schéma&amp;lt;br&amp;gt;&lt;br /&gt;
Sur le schéma nous avons une arduino mais le principe est le même pour le Wemos D1 mini.&lt;br /&gt;
[[Fichier: Shema_cablage.png|750px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
=Axes d'améliorations=&lt;br /&gt;
- Augmenter la puissance sonore du haut parleur.&lt;br /&gt;
- Faire une coque en bois&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29403</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29403"/>
				<updated>2025-01-21T13:59:58Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Metronomoa.jpg]] [[Fichier:Joseph_jean.jpg|400px|right]]&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine&lt;br /&gt;
* Doigts minutieux et précis de Jean&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt;&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2;&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
const int boutonIncrement = D1;&lt;br /&gt;
const int boutonDecrement = D2;&lt;br /&gt;
const int led1 = D5;&lt;br /&gt;
const int servoPin = D4;&lt;br /&gt;
const int buzzer = D6;&lt;br /&gt;
const int clk = D3;  // Broche CLK du 4-Digit Display&lt;br /&gt;
const int dio = D0;  // Broche DIO du 4-Digit Display&lt;br /&gt;
&lt;br /&gt;
Servo servo;&lt;br /&gt;
TM1637Display display(clk, dio);&lt;br /&gt;
&lt;br /&gt;
int bpm = 60;  // BPM initial&lt;br /&gt;
int minBPM = 40;&lt;br /&gt;
int maxBPM = 200;&lt;br /&gt;
bool servo_pos = false;&lt;br /&gt;
unsigned long previousMillis = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(boutonIncrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(boutonDecrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(led1, OUTPUT);&lt;br /&gt;
  pinMode(buzzer, OUTPUT);&lt;br /&gt;
  servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(led1, LOW);&lt;br /&gt;
  digitalWrite(buzzer, LOW);&lt;br /&gt;
  servo.write(0);&lt;br /&gt;
  display.setBrightness(0x0f);  // Réglage de la luminosité du display&lt;br /&gt;
  display.showNumberDec(bpm);   // Affiche la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  handleButtons();&lt;br /&gt;
  metronomeTick();&lt;br /&gt;
  display.showNumberDec(bpm);  // Met à jour l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
  if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
    bpm = min(bpm + 1, maxBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
    bpm = max(bpm - 1, minBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  unsigned long interval = 60000 / bpm;  // Calcul de l'intervalle en ms&lt;br /&gt;
  unsigned long interval_buzzer = 100;&lt;br /&gt;
&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
    digitalWrite(buzzer, HIGH);&lt;br /&gt;
    if (servo_pos == false){&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo.write(180);&lt;br /&gt;
      servo_pos = true;&lt;br /&gt;
    } else{&lt;br /&gt;
      servo.write(0);&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo_pos = false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval_buzzer){&lt;br /&gt;
    digitalWrite(led1, LOW);&lt;br /&gt;
    digitalWrite(buzzer, LOW);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le schéma&amp;lt;br&amp;gt;&lt;br /&gt;
Sur le schéma nous avons une arduino mais le principe est le même pour le Wemos D1 mini.&lt;br /&gt;
[[Fichier: Shema_cablage.png|750px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
=Axes d'améliorations=&lt;br /&gt;
- Augmenter la puissance sonore du haut parleur.&lt;br /&gt;
- Faire une coque en bois&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29401</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29401"/>
				<updated>2025-01-21T13:59:36Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Metronomoa.jpg]] [[Fichier:Joseph_jean.jpg|400px]]&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine&lt;br /&gt;
* Doigts minutieux et précis de Jean&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt;&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2;&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
const int boutonIncrement = D1;&lt;br /&gt;
const int boutonDecrement = D2;&lt;br /&gt;
const int led1 = D5;&lt;br /&gt;
const int servoPin = D4;&lt;br /&gt;
const int buzzer = D6;&lt;br /&gt;
const int clk = D3;  // Broche CLK du 4-Digit Display&lt;br /&gt;
const int dio = D0;  // Broche DIO du 4-Digit Display&lt;br /&gt;
&lt;br /&gt;
Servo servo;&lt;br /&gt;
TM1637Display display(clk, dio);&lt;br /&gt;
&lt;br /&gt;
int bpm = 60;  // BPM initial&lt;br /&gt;
int minBPM = 40;&lt;br /&gt;
int maxBPM = 200;&lt;br /&gt;
bool servo_pos = false;&lt;br /&gt;
unsigned long previousMillis = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(boutonIncrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(boutonDecrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(led1, OUTPUT);&lt;br /&gt;
  pinMode(buzzer, OUTPUT);&lt;br /&gt;
  servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(led1, LOW);&lt;br /&gt;
  digitalWrite(buzzer, LOW);&lt;br /&gt;
  servo.write(0);&lt;br /&gt;
  display.setBrightness(0x0f);  // Réglage de la luminosité du display&lt;br /&gt;
  display.showNumberDec(bpm);   // Affiche la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  handleButtons();&lt;br /&gt;
  metronomeTick();&lt;br /&gt;
  display.showNumberDec(bpm);  // Met à jour l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
  if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
    bpm = min(bpm + 1, maxBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
    bpm = max(bpm - 1, minBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  unsigned long interval = 60000 / bpm;  // Calcul de l'intervalle en ms&lt;br /&gt;
  unsigned long interval_buzzer = 100;&lt;br /&gt;
&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
    digitalWrite(buzzer, HIGH);&lt;br /&gt;
    if (servo_pos == false){&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo.write(180);&lt;br /&gt;
      servo_pos = true;&lt;br /&gt;
    } else{&lt;br /&gt;
      servo.write(0);&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo_pos = false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval_buzzer){&lt;br /&gt;
    digitalWrite(led1, LOW);&lt;br /&gt;
    digitalWrite(buzzer, LOW);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le schéma&amp;lt;br&amp;gt;&lt;br /&gt;
Sur le schéma nous avons une arduino mais le principe est le même pour le Wemos D1 mini.&lt;br /&gt;
[[Fichier: Shema_cablage.png|750px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
=Axes d'améliorations=&lt;br /&gt;
- Augmenter la puissance sonore du haut parleur.&lt;br /&gt;
- Faire une coque en bois&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29398</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29398"/>
				<updated>2025-01-21T13:58:55Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Metronomoa.jpg]] [[Fichier:Joseph_jean.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine&lt;br /&gt;
* Doigts minutieux et précis de Jean&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt;&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2;&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
const int boutonIncrement = D1;&lt;br /&gt;
const int boutonDecrement = D2;&lt;br /&gt;
const int led1 = D5;&lt;br /&gt;
const int servoPin = D4;&lt;br /&gt;
const int buzzer = D6;&lt;br /&gt;
const int clk = D3;  // Broche CLK du 4-Digit Display&lt;br /&gt;
const int dio = D0;  // Broche DIO du 4-Digit Display&lt;br /&gt;
&lt;br /&gt;
Servo servo;&lt;br /&gt;
TM1637Display display(clk, dio);&lt;br /&gt;
&lt;br /&gt;
int bpm = 60;  // BPM initial&lt;br /&gt;
int minBPM = 40;&lt;br /&gt;
int maxBPM = 200;&lt;br /&gt;
bool servo_pos = false;&lt;br /&gt;
unsigned long previousMillis = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(boutonIncrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(boutonDecrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(led1, OUTPUT);&lt;br /&gt;
  pinMode(buzzer, OUTPUT);&lt;br /&gt;
  servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(led1, LOW);&lt;br /&gt;
  digitalWrite(buzzer, LOW);&lt;br /&gt;
  servo.write(0);&lt;br /&gt;
  display.setBrightness(0x0f);  // Réglage de la luminosité du display&lt;br /&gt;
  display.showNumberDec(bpm);   // Affiche la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  handleButtons();&lt;br /&gt;
  metronomeTick();&lt;br /&gt;
  display.showNumberDec(bpm);  // Met à jour l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
  if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
    bpm = min(bpm + 1, maxBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
    bpm = max(bpm - 1, minBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  unsigned long interval = 60000 / bpm;  // Calcul de l'intervalle en ms&lt;br /&gt;
  unsigned long interval_buzzer = 100;&lt;br /&gt;
&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
    digitalWrite(buzzer, HIGH);&lt;br /&gt;
    if (servo_pos == false){&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo.write(180);&lt;br /&gt;
      servo_pos = true;&lt;br /&gt;
    } else{&lt;br /&gt;
      servo.write(0);&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo_pos = false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval_buzzer){&lt;br /&gt;
    digitalWrite(led1, LOW);&lt;br /&gt;
    digitalWrite(buzzer, LOW);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le schéma&amp;lt;br&amp;gt;&lt;br /&gt;
Sur le schéma nous avons une arduino mais le principe est le même pour le Wemos D1 mini.&lt;br /&gt;
[[Fichier: Shema_cablage.png|750px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
=Axes d'améliorations=&lt;br /&gt;
- Augmenter la puissance sonore du haut parleur.&lt;br /&gt;
- Faire une coque en bois&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29396</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29396"/>
				<updated>2025-01-21T13:58:32Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Metronomoa.jpg]] [[Fichier:Joseph Jean.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine&lt;br /&gt;
* Doigts minutieux et précis de Jean&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt;&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2;&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
const int boutonIncrement = D1;&lt;br /&gt;
const int boutonDecrement = D2;&lt;br /&gt;
const int led1 = D5;&lt;br /&gt;
const int servoPin = D4;&lt;br /&gt;
const int buzzer = D6;&lt;br /&gt;
const int clk = D3;  // Broche CLK du 4-Digit Display&lt;br /&gt;
const int dio = D0;  // Broche DIO du 4-Digit Display&lt;br /&gt;
&lt;br /&gt;
Servo servo;&lt;br /&gt;
TM1637Display display(clk, dio);&lt;br /&gt;
&lt;br /&gt;
int bpm = 60;  // BPM initial&lt;br /&gt;
int minBPM = 40;&lt;br /&gt;
int maxBPM = 200;&lt;br /&gt;
bool servo_pos = false;&lt;br /&gt;
unsigned long previousMillis = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(boutonIncrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(boutonDecrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(led1, OUTPUT);&lt;br /&gt;
  pinMode(buzzer, OUTPUT);&lt;br /&gt;
  servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(led1, LOW);&lt;br /&gt;
  digitalWrite(buzzer, LOW);&lt;br /&gt;
  servo.write(0);&lt;br /&gt;
  display.setBrightness(0x0f);  // Réglage de la luminosité du display&lt;br /&gt;
  display.showNumberDec(bpm);   // Affiche la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  handleButtons();&lt;br /&gt;
  metronomeTick();&lt;br /&gt;
  display.showNumberDec(bpm);  // Met à jour l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
  if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
    bpm = min(bpm + 1, maxBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
    bpm = max(bpm - 1, minBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  unsigned long interval = 60000 / bpm;  // Calcul de l'intervalle en ms&lt;br /&gt;
  unsigned long interval_buzzer = 100;&lt;br /&gt;
&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
    digitalWrite(buzzer, HIGH);&lt;br /&gt;
    if (servo_pos == false){&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo.write(180);&lt;br /&gt;
      servo_pos = true;&lt;br /&gt;
    } else{&lt;br /&gt;
      servo.write(0);&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo_pos = false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval_buzzer){&lt;br /&gt;
    digitalWrite(led1, LOW);&lt;br /&gt;
    digitalWrite(buzzer, LOW);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le schéma&amp;lt;br&amp;gt;&lt;br /&gt;
Sur le schéma nous avons une arduino mais le principe est le même pour le Wemos D1 mini.&lt;br /&gt;
[[Fichier: Shema_cablage.png|750px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
=Axes d'améliorations=&lt;br /&gt;
- Augmenter la puissance sonore du haut parleur.&lt;br /&gt;
- Faire une coque en bois&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29393</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29393"/>
				<updated>2025-01-21T13:57:20Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Metronomoa.jpg]] [[Fichier:Joseph_Jean.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine&lt;br /&gt;
* Doigts minutieux et précis de Jean&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt;&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2;&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
const int boutonIncrement = D1;&lt;br /&gt;
const int boutonDecrement = D2;&lt;br /&gt;
const int led1 = D5;&lt;br /&gt;
const int servoPin = D4;&lt;br /&gt;
const int buzzer = D6;&lt;br /&gt;
const int clk = D3;  // Broche CLK du 4-Digit Display&lt;br /&gt;
const int dio = D0;  // Broche DIO du 4-Digit Display&lt;br /&gt;
&lt;br /&gt;
Servo servo;&lt;br /&gt;
TM1637Display display(clk, dio);&lt;br /&gt;
&lt;br /&gt;
int bpm = 60;  // BPM initial&lt;br /&gt;
int minBPM = 40;&lt;br /&gt;
int maxBPM = 200;&lt;br /&gt;
bool servo_pos = false;&lt;br /&gt;
unsigned long previousMillis = 0;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  pinMode(boutonIncrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(boutonDecrement, INPUT_PULLUP);&lt;br /&gt;
  pinMode(led1, OUTPUT);&lt;br /&gt;
  pinMode(buzzer, OUTPUT);&lt;br /&gt;
  servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
  digitalWrite(led1, LOW);&lt;br /&gt;
  digitalWrite(buzzer, LOW);&lt;br /&gt;
  servo.write(0);&lt;br /&gt;
  display.setBrightness(0x0f);  // Réglage de la luminosité du display&lt;br /&gt;
  display.showNumberDec(bpm);   // Affiche la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  handleButtons();&lt;br /&gt;
  metronomeTick();&lt;br /&gt;
  display.showNumberDec(bpm);  // Met à jour l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
  if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
    bpm = min(bpm + 1, maxBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
  if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
    bpm = max(bpm - 1, minBPM);&lt;br /&gt;
    delay(200);  // Antirebond&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
  unsigned long currentMillis = millis();&lt;br /&gt;
  unsigned long interval = 60000 / bpm;  // Calcul de l'intervalle en ms&lt;br /&gt;
  unsigned long interval_buzzer = 100;&lt;br /&gt;
&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
    previousMillis = currentMillis;&lt;br /&gt;
    digitalWrite(buzzer, HIGH);&lt;br /&gt;
    if (servo_pos == false){&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo.write(180);&lt;br /&gt;
      servo_pos = true;&lt;br /&gt;
    } else{&lt;br /&gt;
      servo.write(0);&lt;br /&gt;
      digitalWrite(led1, HIGH);&lt;br /&gt;
      servo_pos = false;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  if (currentMillis - previousMillis &amp;gt;= interval_buzzer){&lt;br /&gt;
    digitalWrite(led1, LOW);&lt;br /&gt;
    digitalWrite(buzzer, LOW);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le schéma&amp;lt;br&amp;gt;&lt;br /&gt;
Sur le schéma nous avons une arduino mais le principe est le même pour le Wemos D1 mini.&lt;br /&gt;
[[Fichier: Shema_cablage.png|750px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
=Axes d'améliorations=&lt;br /&gt;
- Augmenter la puissance sonore du haut parleur.&lt;br /&gt;
- Faire une coque en bois&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:Joseph_jean.jpg&amp;diff=29389</id>
		<title>Fichier:Joseph jean.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:Joseph_jean.jpg&amp;diff=29389"/>
				<updated>2025-01-21T13:56:06Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29255</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29255"/>
				<updated>2025-01-21T11:15:52Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Metronomoa.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine l’ingénieur&lt;br /&gt;
* Doigts minutieux et précis de Jean l’ingénieur&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt; // Bibliothèque pour contrôler les servomoteurs&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt; // Bibliothèque pour connecter l'ESP8266 au WiFi&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt; // Bibliothèque pour contrôler l'afficheur 7 segments TM1637&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2; // Création d'une instance de servomoteur&lt;br /&gt;
&lt;br /&gt;
const int boutonIncrement = D1; // Bouton pour augmenter le BPM&lt;br /&gt;
const int boutonDecrement = D2; // Bouton pour diminuer le BPM&lt;br /&gt;
const int led1 = D5; // LED synchronisée avec le tempo&lt;br /&gt;
const int servoPin = D4; // Broche du servomoteur&lt;br /&gt;
const int buzzer = D6; // Haut-parleur pour signal sonore&lt;br /&gt;
const int clk = D3; // Broche CLK de l'afficheur 7 segments&lt;br /&gt;
const int dio = D0; // Broche DIO de l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
Servo servo; // Instance principale du servomoteur&lt;br /&gt;
TM1637Display display(clk, dio); // Instance pour contrôler l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
// Variables globales&lt;br /&gt;
int bpm = 60; // BPM initial&lt;br /&gt;
int minBPM = 40; // BPM minimum&lt;br /&gt;
int maxBPM = 200; // BPM maximum&lt;br /&gt;
bool servo_pos = false; // État actuel du servomoteur (position)&lt;br /&gt;
unsigned long previousMillis = 0; // Temps de référence pour le métronome&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
// Initialisation du matériel&lt;br /&gt;
initHardware();&lt;br /&gt;
setupWiFi();&lt;br /&gt;
server.begin();&lt;br /&gt;
&lt;br /&gt;
// Configuration des broches&lt;br /&gt;
pinMode(boutonIncrement, INPUT_PULLUP); // Bouton &amp;quot;+&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(boutonDecrement, INPUT_PULLUP); // Bouton &amp;quot;-&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(led1, OUTPUT); // Configuration de la LED comme sortie&lt;br /&gt;
pinMode(buzzer, OUTPUT); // Configuration du buzzer comme sortie&lt;br /&gt;
&lt;br /&gt;
// Configuration du servomoteur&lt;br /&gt;
servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
// Initialisation des sorties&lt;br /&gt;
digitalWrite(led1, LOW); // Éteindre la LED au démarrage&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteindre le buzzer au démarrage&lt;br /&gt;
servo.write(0); // Position initiale du servomoteur&lt;br /&gt;
&lt;br /&gt;
// Configuration de l'afficheur 7 segments&lt;br /&gt;
display.setBrightness(0x0f); // Réglage de la luminosité de l'afficheur&lt;br /&gt;
display.showNumberDec(bpm); // Affichage de la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
handleButtons(); // Gestion des boutons pour régler le BPM&lt;br /&gt;
metronomeTick(); // Gestion des ticks du métronome&lt;br /&gt;
display.showNumberDec(bpm); // Mise à jour de l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
// Vérifie si le bouton &amp;quot;+&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
bpm = min(bpm + 1, maxBPM); // Augmente le BPM jusqu'à la limite maximale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le bouton &amp;quot;-&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
bpm = max(bpm - 1, minBPM); // Diminue le BPM jusqu'à la limite minimale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
unsigned long currentMillis = millis(); // Récupère le temps actuel&lt;br /&gt;
unsigned long interval = 60000 / bpm; // Calcul de l'intervalle entre chaque tick (en ms)&lt;br /&gt;
unsigned long interval_buzzer = 100; // Durée d'activation du buzzer&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le temps écoulé dépasse l'intervalle calculé&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
previousMillis = currentMillis; // Met à jour le temps de référence&lt;br /&gt;
digitalWrite(buzzer, HIGH); // Active le buzzer&lt;br /&gt;
&lt;br /&gt;
if (servo_pos == false) {&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo.write(180); // Déplace le servomoteur à 180°&lt;br /&gt;
  servo_pos = true; // Change l'état du servomoteur&lt;br /&gt;
} else {&lt;br /&gt;
  servo.write(0); // Ramène le servomoteur à 0°&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo_pos = false; // Change l'état du servomoteur&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le buzzer doit être éteint après son intervalle&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval_buzzer) {&lt;br /&gt;
digitalWrite(led1, LOW); // Éteint la LED&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteint le buzzer&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le schéma&amp;lt;br&amp;gt;&lt;br /&gt;
[[Fichier: Shema_cablage.png|750px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29253</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29253"/>
				<updated>2025-01-21T11:15:28Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Introduction */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Metronoma.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine l’ingénieur&lt;br /&gt;
* Doigts minutieux et précis de Jean l’ingénieur&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt; // Bibliothèque pour contrôler les servomoteurs&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt; // Bibliothèque pour connecter l'ESP8266 au WiFi&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt; // Bibliothèque pour contrôler l'afficheur 7 segments TM1637&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2; // Création d'une instance de servomoteur&lt;br /&gt;
&lt;br /&gt;
const int boutonIncrement = D1; // Bouton pour augmenter le BPM&lt;br /&gt;
const int boutonDecrement = D2; // Bouton pour diminuer le BPM&lt;br /&gt;
const int led1 = D5; // LED synchronisée avec le tempo&lt;br /&gt;
const int servoPin = D4; // Broche du servomoteur&lt;br /&gt;
const int buzzer = D6; // Haut-parleur pour signal sonore&lt;br /&gt;
const int clk = D3; // Broche CLK de l'afficheur 7 segments&lt;br /&gt;
const int dio = D0; // Broche DIO de l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
Servo servo; // Instance principale du servomoteur&lt;br /&gt;
TM1637Display display(clk, dio); // Instance pour contrôler l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
// Variables globales&lt;br /&gt;
int bpm = 60; // BPM initial&lt;br /&gt;
int minBPM = 40; // BPM minimum&lt;br /&gt;
int maxBPM = 200; // BPM maximum&lt;br /&gt;
bool servo_pos = false; // État actuel du servomoteur (position)&lt;br /&gt;
unsigned long previousMillis = 0; // Temps de référence pour le métronome&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
// Initialisation du matériel&lt;br /&gt;
initHardware();&lt;br /&gt;
setupWiFi();&lt;br /&gt;
server.begin();&lt;br /&gt;
&lt;br /&gt;
// Configuration des broches&lt;br /&gt;
pinMode(boutonIncrement, INPUT_PULLUP); // Bouton &amp;quot;+&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(boutonDecrement, INPUT_PULLUP); // Bouton &amp;quot;-&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(led1, OUTPUT); // Configuration de la LED comme sortie&lt;br /&gt;
pinMode(buzzer, OUTPUT); // Configuration du buzzer comme sortie&lt;br /&gt;
&lt;br /&gt;
// Configuration du servomoteur&lt;br /&gt;
servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
// Initialisation des sorties&lt;br /&gt;
digitalWrite(led1, LOW); // Éteindre la LED au démarrage&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteindre le buzzer au démarrage&lt;br /&gt;
servo.write(0); // Position initiale du servomoteur&lt;br /&gt;
&lt;br /&gt;
// Configuration de l'afficheur 7 segments&lt;br /&gt;
display.setBrightness(0x0f); // Réglage de la luminosité de l'afficheur&lt;br /&gt;
display.showNumberDec(bpm); // Affichage de la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
handleButtons(); // Gestion des boutons pour régler le BPM&lt;br /&gt;
metronomeTick(); // Gestion des ticks du métronome&lt;br /&gt;
display.showNumberDec(bpm); // Mise à jour de l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
// Vérifie si le bouton &amp;quot;+&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
bpm = min(bpm + 1, maxBPM); // Augmente le BPM jusqu'à la limite maximale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le bouton &amp;quot;-&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
bpm = max(bpm - 1, minBPM); // Diminue le BPM jusqu'à la limite minimale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
unsigned long currentMillis = millis(); // Récupère le temps actuel&lt;br /&gt;
unsigned long interval = 60000 / bpm; // Calcul de l'intervalle entre chaque tick (en ms)&lt;br /&gt;
unsigned long interval_buzzer = 100; // Durée d'activation du buzzer&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le temps écoulé dépasse l'intervalle calculé&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
previousMillis = currentMillis; // Met à jour le temps de référence&lt;br /&gt;
digitalWrite(buzzer, HIGH); // Active le buzzer&lt;br /&gt;
&lt;br /&gt;
if (servo_pos == false) {&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo.write(180); // Déplace le servomoteur à 180°&lt;br /&gt;
  servo_pos = true; // Change l'état du servomoteur&lt;br /&gt;
} else {&lt;br /&gt;
  servo.write(0); // Ramène le servomoteur à 0°&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo_pos = false; // Change l'état du servomoteur&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le buzzer doit être éteint après son intervalle&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval_buzzer) {&lt;br /&gt;
digitalWrite(led1, LOW); // Éteint la LED&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteint le buzzer&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le schéma&amp;lt;br&amp;gt;&lt;br /&gt;
[[Fichier: Shema_cablage.png|750px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29223</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29223"/>
				<updated>2025-01-21T11:01:47Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Montage des composants électroniques */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine l’ingénieur&lt;br /&gt;
* Doigts minutieux et précis de Jean l’ingénieur&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt; // Bibliothèque pour contrôler les servomoteurs&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt; // Bibliothèque pour connecter l'ESP8266 au WiFi&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt; // Bibliothèque pour contrôler l'afficheur 7 segments TM1637&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2; // Création d'une instance de servomoteur&lt;br /&gt;
&lt;br /&gt;
const int boutonIncrement = D1; // Bouton pour augmenter le BPM&lt;br /&gt;
const int boutonDecrement = D2; // Bouton pour diminuer le BPM&lt;br /&gt;
const int led1 = D5; // LED synchronisée avec le tempo&lt;br /&gt;
const int servoPin = D4; // Broche du servomoteur&lt;br /&gt;
const int buzzer = D6; // Haut-parleur pour signal sonore&lt;br /&gt;
const int clk = D3; // Broche CLK de l'afficheur 7 segments&lt;br /&gt;
const int dio = D0; // Broche DIO de l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
Servo servo; // Instance principale du servomoteur&lt;br /&gt;
TM1637Display display(clk, dio); // Instance pour contrôler l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
// Variables globales&lt;br /&gt;
int bpm = 60; // BPM initial&lt;br /&gt;
int minBPM = 40; // BPM minimum&lt;br /&gt;
int maxBPM = 200; // BPM maximum&lt;br /&gt;
bool servo_pos = false; // État actuel du servomoteur (position)&lt;br /&gt;
unsigned long previousMillis = 0; // Temps de référence pour le métronome&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
// Initialisation du matériel&lt;br /&gt;
initHardware();&lt;br /&gt;
setupWiFi();&lt;br /&gt;
server.begin();&lt;br /&gt;
&lt;br /&gt;
// Configuration des broches&lt;br /&gt;
pinMode(boutonIncrement, INPUT_PULLUP); // Bouton &amp;quot;+&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(boutonDecrement, INPUT_PULLUP); // Bouton &amp;quot;-&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(led1, OUTPUT); // Configuration de la LED comme sortie&lt;br /&gt;
pinMode(buzzer, OUTPUT); // Configuration du buzzer comme sortie&lt;br /&gt;
&lt;br /&gt;
// Configuration du servomoteur&lt;br /&gt;
servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
// Initialisation des sorties&lt;br /&gt;
digitalWrite(led1, LOW); // Éteindre la LED au démarrage&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteindre le buzzer au démarrage&lt;br /&gt;
servo.write(0); // Position initiale du servomoteur&lt;br /&gt;
&lt;br /&gt;
// Configuration de l'afficheur 7 segments&lt;br /&gt;
display.setBrightness(0x0f); // Réglage de la luminosité de l'afficheur&lt;br /&gt;
display.showNumberDec(bpm); // Affichage de la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
handleButtons(); // Gestion des boutons pour régler le BPM&lt;br /&gt;
metronomeTick(); // Gestion des ticks du métronome&lt;br /&gt;
display.showNumberDec(bpm); // Mise à jour de l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
// Vérifie si le bouton &amp;quot;+&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
bpm = min(bpm + 1, maxBPM); // Augmente le BPM jusqu'à la limite maximale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le bouton &amp;quot;-&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
bpm = max(bpm - 1, minBPM); // Diminue le BPM jusqu'à la limite minimale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
unsigned long currentMillis = millis(); // Récupère le temps actuel&lt;br /&gt;
unsigned long interval = 60000 / bpm; // Calcul de l'intervalle entre chaque tick (en ms)&lt;br /&gt;
unsigned long interval_buzzer = 100; // Durée d'activation du buzzer&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le temps écoulé dépasse l'intervalle calculé&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
previousMillis = currentMillis; // Met à jour le temps de référence&lt;br /&gt;
digitalWrite(buzzer, HIGH); // Active le buzzer&lt;br /&gt;
&lt;br /&gt;
if (servo_pos == false) {&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo.write(180); // Déplace le servomoteur à 180°&lt;br /&gt;
  servo_pos = true; // Change l'état du servomoteur&lt;br /&gt;
} else {&lt;br /&gt;
  servo.write(0); // Ramène le servomoteur à 0°&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo_pos = false; // Change l'état du servomoteur&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le buzzer doit être éteint après son intervalle&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval_buzzer) {&lt;br /&gt;
digitalWrite(led1, LOW); // Éteint la LED&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteint le buzzer&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le schéma&amp;lt;br&amp;gt;&lt;br /&gt;
[[Fichier: Shema_cablage.png|750px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29220</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29220"/>
				<updated>2025-01-21T11:01:21Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Montage des composants électroniques */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine l’ingénieur&lt;br /&gt;
* Doigts minutieux et précis de Jean l’ingénieur&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt; // Bibliothèque pour contrôler les servomoteurs&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt; // Bibliothèque pour connecter l'ESP8266 au WiFi&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt; // Bibliothèque pour contrôler l'afficheur 7 segments TM1637&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2; // Création d'une instance de servomoteur&lt;br /&gt;
&lt;br /&gt;
const int boutonIncrement = D1; // Bouton pour augmenter le BPM&lt;br /&gt;
const int boutonDecrement = D2; // Bouton pour diminuer le BPM&lt;br /&gt;
const int led1 = D5; // LED synchronisée avec le tempo&lt;br /&gt;
const int servoPin = D4; // Broche du servomoteur&lt;br /&gt;
const int buzzer = D6; // Haut-parleur pour signal sonore&lt;br /&gt;
const int clk = D3; // Broche CLK de l'afficheur 7 segments&lt;br /&gt;
const int dio = D0; // Broche DIO de l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
Servo servo; // Instance principale du servomoteur&lt;br /&gt;
TM1637Display display(clk, dio); // Instance pour contrôler l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
// Variables globales&lt;br /&gt;
int bpm = 60; // BPM initial&lt;br /&gt;
int minBPM = 40; // BPM minimum&lt;br /&gt;
int maxBPM = 200; // BPM maximum&lt;br /&gt;
bool servo_pos = false; // État actuel du servomoteur (position)&lt;br /&gt;
unsigned long previousMillis = 0; // Temps de référence pour le métronome&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
// Initialisation du matériel&lt;br /&gt;
initHardware();&lt;br /&gt;
setupWiFi();&lt;br /&gt;
server.begin();&lt;br /&gt;
&lt;br /&gt;
// Configuration des broches&lt;br /&gt;
pinMode(boutonIncrement, INPUT_PULLUP); // Bouton &amp;quot;+&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(boutonDecrement, INPUT_PULLUP); // Bouton &amp;quot;-&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(led1, OUTPUT); // Configuration de la LED comme sortie&lt;br /&gt;
pinMode(buzzer, OUTPUT); // Configuration du buzzer comme sortie&lt;br /&gt;
&lt;br /&gt;
// Configuration du servomoteur&lt;br /&gt;
servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
// Initialisation des sorties&lt;br /&gt;
digitalWrite(led1, LOW); // Éteindre la LED au démarrage&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteindre le buzzer au démarrage&lt;br /&gt;
servo.write(0); // Position initiale du servomoteur&lt;br /&gt;
&lt;br /&gt;
// Configuration de l'afficheur 7 segments&lt;br /&gt;
display.setBrightness(0x0f); // Réglage de la luminosité de l'afficheur&lt;br /&gt;
display.showNumberDec(bpm); // Affichage de la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
handleButtons(); // Gestion des boutons pour régler le BPM&lt;br /&gt;
metronomeTick(); // Gestion des ticks du métronome&lt;br /&gt;
display.showNumberDec(bpm); // Mise à jour de l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
// Vérifie si le bouton &amp;quot;+&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
bpm = min(bpm + 1, maxBPM); // Augmente le BPM jusqu'à la limite maximale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le bouton &amp;quot;-&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
bpm = max(bpm - 1, minBPM); // Diminue le BPM jusqu'à la limite minimale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
unsigned long currentMillis = millis(); // Récupère le temps actuel&lt;br /&gt;
unsigned long interval = 60000 / bpm; // Calcul de l'intervalle entre chaque tick (en ms)&lt;br /&gt;
unsigned long interval_buzzer = 100; // Durée d'activation du buzzer&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le temps écoulé dépasse l'intervalle calculé&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
previousMillis = currentMillis; // Met à jour le temps de référence&lt;br /&gt;
digitalWrite(buzzer, HIGH); // Active le buzzer&lt;br /&gt;
&lt;br /&gt;
if (servo_pos == false) {&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo.write(180); // Déplace le servomoteur à 180°&lt;br /&gt;
  servo_pos = true; // Change l'état du servomoteur&lt;br /&gt;
} else {&lt;br /&gt;
  servo.write(0); // Ramène le servomoteur à 0°&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo_pos = false; // Change l'état du servomoteur&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le buzzer doit être éteint après son intervalle&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval_buzzer) {&lt;br /&gt;
digitalWrite(led1, LOW); // Éteint la LED&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteint le buzzer&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le plan&amp;lt;br&amp;gt;&lt;br /&gt;
[[Fichier: Shema_cablage.png|750px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29219</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29219"/>
				<updated>2025-01-21T11:01:04Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Montage des composants électroniques */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine l’ingénieur&lt;br /&gt;
* Doigts minutieux et précis de Jean l’ingénieur&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt; // Bibliothèque pour contrôler les servomoteurs&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt; // Bibliothèque pour connecter l'ESP8266 au WiFi&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt; // Bibliothèque pour contrôler l'afficheur 7 segments TM1637&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2; // Création d'une instance de servomoteur&lt;br /&gt;
&lt;br /&gt;
const int boutonIncrement = D1; // Bouton pour augmenter le BPM&lt;br /&gt;
const int boutonDecrement = D2; // Bouton pour diminuer le BPM&lt;br /&gt;
const int led1 = D5; // LED synchronisée avec le tempo&lt;br /&gt;
const int servoPin = D4; // Broche du servomoteur&lt;br /&gt;
const int buzzer = D6; // Haut-parleur pour signal sonore&lt;br /&gt;
const int clk = D3; // Broche CLK de l'afficheur 7 segments&lt;br /&gt;
const int dio = D0; // Broche DIO de l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
Servo servo; // Instance principale du servomoteur&lt;br /&gt;
TM1637Display display(clk, dio); // Instance pour contrôler l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
// Variables globales&lt;br /&gt;
int bpm = 60; // BPM initial&lt;br /&gt;
int minBPM = 40; // BPM minimum&lt;br /&gt;
int maxBPM = 200; // BPM maximum&lt;br /&gt;
bool servo_pos = false; // État actuel du servomoteur (position)&lt;br /&gt;
unsigned long previousMillis = 0; // Temps de référence pour le métronome&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
// Initialisation du matériel&lt;br /&gt;
initHardware();&lt;br /&gt;
setupWiFi();&lt;br /&gt;
server.begin();&lt;br /&gt;
&lt;br /&gt;
// Configuration des broches&lt;br /&gt;
pinMode(boutonIncrement, INPUT_PULLUP); // Bouton &amp;quot;+&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(boutonDecrement, INPUT_PULLUP); // Bouton &amp;quot;-&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(led1, OUTPUT); // Configuration de la LED comme sortie&lt;br /&gt;
pinMode(buzzer, OUTPUT); // Configuration du buzzer comme sortie&lt;br /&gt;
&lt;br /&gt;
// Configuration du servomoteur&lt;br /&gt;
servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
// Initialisation des sorties&lt;br /&gt;
digitalWrite(led1, LOW); // Éteindre la LED au démarrage&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteindre le buzzer au démarrage&lt;br /&gt;
servo.write(0); // Position initiale du servomoteur&lt;br /&gt;
&lt;br /&gt;
// Configuration de l'afficheur 7 segments&lt;br /&gt;
display.setBrightness(0x0f); // Réglage de la luminosité de l'afficheur&lt;br /&gt;
display.showNumberDec(bpm); // Affichage de la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
handleButtons(); // Gestion des boutons pour régler le BPM&lt;br /&gt;
metronomeTick(); // Gestion des ticks du métronome&lt;br /&gt;
display.showNumberDec(bpm); // Mise à jour de l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
// Vérifie si le bouton &amp;quot;+&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
bpm = min(bpm + 1, maxBPM); // Augmente le BPM jusqu'à la limite maximale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le bouton &amp;quot;-&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
bpm = max(bpm - 1, minBPM); // Diminue le BPM jusqu'à la limite minimale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
unsigned long currentMillis = millis(); // Récupère le temps actuel&lt;br /&gt;
unsigned long interval = 60000 / bpm; // Calcul de l'intervalle entre chaque tick (en ms)&lt;br /&gt;
unsigned long interval_buzzer = 100; // Durée d'activation du buzzer&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le temps écoulé dépasse l'intervalle calculé&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
previousMillis = currentMillis; // Met à jour le temps de référence&lt;br /&gt;
digitalWrite(buzzer, HIGH); // Active le buzzer&lt;br /&gt;
&lt;br /&gt;
if (servo_pos == false) {&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo.write(180); // Déplace le servomoteur à 180°&lt;br /&gt;
  servo_pos = true; // Change l'état du servomoteur&lt;br /&gt;
} else {&lt;br /&gt;
  servo.write(0); // Ramène le servomoteur à 0°&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo_pos = false; // Change l'état du servomoteur&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le buzzer doit être éteint après son intervalle&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval_buzzer) {&lt;br /&gt;
digitalWrite(led1, LOW); // Éteint la LED&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteint le buzzer&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le plan&amp;lt;br&amp;gt;&lt;br /&gt;
[[Fichier: Shema_cablage.png|650px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29217</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29217"/>
				<updated>2025-01-21T11:00:49Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Montage des composants électroniques */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine l’ingénieur&lt;br /&gt;
* Doigts minutieux et précis de Jean l’ingénieur&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt; // Bibliothèque pour contrôler les servomoteurs&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt; // Bibliothèque pour connecter l'ESP8266 au WiFi&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt; // Bibliothèque pour contrôler l'afficheur 7 segments TM1637&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2; // Création d'une instance de servomoteur&lt;br /&gt;
&lt;br /&gt;
const int boutonIncrement = D1; // Bouton pour augmenter le BPM&lt;br /&gt;
const int boutonDecrement = D2; // Bouton pour diminuer le BPM&lt;br /&gt;
const int led1 = D5; // LED synchronisée avec le tempo&lt;br /&gt;
const int servoPin = D4; // Broche du servomoteur&lt;br /&gt;
const int buzzer = D6; // Haut-parleur pour signal sonore&lt;br /&gt;
const int clk = D3; // Broche CLK de l'afficheur 7 segments&lt;br /&gt;
const int dio = D0; // Broche DIO de l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
Servo servo; // Instance principale du servomoteur&lt;br /&gt;
TM1637Display display(clk, dio); // Instance pour contrôler l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
// Variables globales&lt;br /&gt;
int bpm = 60; // BPM initial&lt;br /&gt;
int minBPM = 40; // BPM minimum&lt;br /&gt;
int maxBPM = 200; // BPM maximum&lt;br /&gt;
bool servo_pos = false; // État actuel du servomoteur (position)&lt;br /&gt;
unsigned long previousMillis = 0; // Temps de référence pour le métronome&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
// Initialisation du matériel&lt;br /&gt;
initHardware();&lt;br /&gt;
setupWiFi();&lt;br /&gt;
server.begin();&lt;br /&gt;
&lt;br /&gt;
// Configuration des broches&lt;br /&gt;
pinMode(boutonIncrement, INPUT_PULLUP); // Bouton &amp;quot;+&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(boutonDecrement, INPUT_PULLUP); // Bouton &amp;quot;-&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(led1, OUTPUT); // Configuration de la LED comme sortie&lt;br /&gt;
pinMode(buzzer, OUTPUT); // Configuration du buzzer comme sortie&lt;br /&gt;
&lt;br /&gt;
// Configuration du servomoteur&lt;br /&gt;
servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
// Initialisation des sorties&lt;br /&gt;
digitalWrite(led1, LOW); // Éteindre la LED au démarrage&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteindre le buzzer au démarrage&lt;br /&gt;
servo.write(0); // Position initiale du servomoteur&lt;br /&gt;
&lt;br /&gt;
// Configuration de l'afficheur 7 segments&lt;br /&gt;
display.setBrightness(0x0f); // Réglage de la luminosité de l'afficheur&lt;br /&gt;
display.showNumberDec(bpm); // Affichage de la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
handleButtons(); // Gestion des boutons pour régler le BPM&lt;br /&gt;
metronomeTick(); // Gestion des ticks du métronome&lt;br /&gt;
display.showNumberDec(bpm); // Mise à jour de l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
// Vérifie si le bouton &amp;quot;+&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
bpm = min(bpm + 1, maxBPM); // Augmente le BPM jusqu'à la limite maximale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le bouton &amp;quot;-&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
bpm = max(bpm - 1, minBPM); // Diminue le BPM jusqu'à la limite minimale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
unsigned long currentMillis = millis(); // Récupère le temps actuel&lt;br /&gt;
unsigned long interval = 60000 / bpm; // Calcul de l'intervalle entre chaque tick (en ms)&lt;br /&gt;
unsigned long interval_buzzer = 100; // Durée d'activation du buzzer&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le temps écoulé dépasse l'intervalle calculé&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
previousMillis = currentMillis; // Met à jour le temps de référence&lt;br /&gt;
digitalWrite(buzzer, HIGH); // Active le buzzer&lt;br /&gt;
&lt;br /&gt;
if (servo_pos == false) {&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo.write(180); // Déplace le servomoteur à 180°&lt;br /&gt;
  servo_pos = true; // Change l'état du servomoteur&lt;br /&gt;
} else {&lt;br /&gt;
  servo.write(0); // Ramène le servomoteur à 0°&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo_pos = false; // Change l'état du servomoteur&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le buzzer doit être éteint après son intervalle&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval_buzzer) {&lt;br /&gt;
digitalWrite(led1, LOW); // Éteint la LED&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteint le buzzer&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le plan&amp;lt;br&amp;gt;&lt;br /&gt;
[[Fichier: Shema_cablage.png|1000px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29216</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29216"/>
				<updated>2025-01-21T11:00:33Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Montage des composants électroniques */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine l’ingénieur&lt;br /&gt;
* Doigts minutieux et précis de Jean l’ingénieur&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt; // Bibliothèque pour contrôler les servomoteurs&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt; // Bibliothèque pour connecter l'ESP8266 au WiFi&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt; // Bibliothèque pour contrôler l'afficheur 7 segments TM1637&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2; // Création d'une instance de servomoteur&lt;br /&gt;
&lt;br /&gt;
const int boutonIncrement = D1; // Bouton pour augmenter le BPM&lt;br /&gt;
const int boutonDecrement = D2; // Bouton pour diminuer le BPM&lt;br /&gt;
const int led1 = D5; // LED synchronisée avec le tempo&lt;br /&gt;
const int servoPin = D4; // Broche du servomoteur&lt;br /&gt;
const int buzzer = D6; // Haut-parleur pour signal sonore&lt;br /&gt;
const int clk = D3; // Broche CLK de l'afficheur 7 segments&lt;br /&gt;
const int dio = D0; // Broche DIO de l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
Servo servo; // Instance principale du servomoteur&lt;br /&gt;
TM1637Display display(clk, dio); // Instance pour contrôler l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
// Variables globales&lt;br /&gt;
int bpm = 60; // BPM initial&lt;br /&gt;
int minBPM = 40; // BPM minimum&lt;br /&gt;
int maxBPM = 200; // BPM maximum&lt;br /&gt;
bool servo_pos = false; // État actuel du servomoteur (position)&lt;br /&gt;
unsigned long previousMillis = 0; // Temps de référence pour le métronome&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
// Initialisation du matériel&lt;br /&gt;
initHardware();&lt;br /&gt;
setupWiFi();&lt;br /&gt;
server.begin();&lt;br /&gt;
&lt;br /&gt;
// Configuration des broches&lt;br /&gt;
pinMode(boutonIncrement, INPUT_PULLUP); // Bouton &amp;quot;+&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(boutonDecrement, INPUT_PULLUP); // Bouton &amp;quot;-&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(led1, OUTPUT); // Configuration de la LED comme sortie&lt;br /&gt;
pinMode(buzzer, OUTPUT); // Configuration du buzzer comme sortie&lt;br /&gt;
&lt;br /&gt;
// Configuration du servomoteur&lt;br /&gt;
servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
// Initialisation des sorties&lt;br /&gt;
digitalWrite(led1, LOW); // Éteindre la LED au démarrage&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteindre le buzzer au démarrage&lt;br /&gt;
servo.write(0); // Position initiale du servomoteur&lt;br /&gt;
&lt;br /&gt;
// Configuration de l'afficheur 7 segments&lt;br /&gt;
display.setBrightness(0x0f); // Réglage de la luminosité de l'afficheur&lt;br /&gt;
display.showNumberDec(bpm); // Affichage de la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
handleButtons(); // Gestion des boutons pour régler le BPM&lt;br /&gt;
metronomeTick(); // Gestion des ticks du métronome&lt;br /&gt;
display.showNumberDec(bpm); // Mise à jour de l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
// Vérifie si le bouton &amp;quot;+&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
bpm = min(bpm + 1, maxBPM); // Augmente le BPM jusqu'à la limite maximale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le bouton &amp;quot;-&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
bpm = max(bpm - 1, minBPM); // Diminue le BPM jusqu'à la limite minimale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
unsigned long currentMillis = millis(); // Récupère le temps actuel&lt;br /&gt;
unsigned long interval = 60000 / bpm; // Calcul de l'intervalle entre chaque tick (en ms)&lt;br /&gt;
unsigned long interval_buzzer = 100; // Durée d'activation du buzzer&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le temps écoulé dépasse l'intervalle calculé&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
previousMillis = currentMillis; // Met à jour le temps de référence&lt;br /&gt;
digitalWrite(buzzer, HIGH); // Active le buzzer&lt;br /&gt;
&lt;br /&gt;
if (servo_pos == false) {&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo.write(180); // Déplace le servomoteur à 180°&lt;br /&gt;
  servo_pos = true; // Change l'état du servomoteur&lt;br /&gt;
} else {&lt;br /&gt;
  servo.write(0); // Ramène le servomoteur à 0°&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo_pos = false; // Change l'état du servomoteur&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le buzzer doit être éteint après son intervalle&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval_buzzer) {&lt;br /&gt;
digitalWrite(led1, LOW); // Éteint la LED&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteint le buzzer&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le plan&lt;br /&gt;
[[Fichier: Shema_cablage.png|1000px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29214</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29214"/>
				<updated>2025-01-21T10:59:36Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Montage des composants électroniques */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine l’ingénieur&lt;br /&gt;
* Doigts minutieux et précis de Jean l’ingénieur&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt; // Bibliothèque pour contrôler les servomoteurs&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt; // Bibliothèque pour connecter l'ESP8266 au WiFi&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt; // Bibliothèque pour contrôler l'afficheur 7 segments TM1637&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2; // Création d'une instance de servomoteur&lt;br /&gt;
&lt;br /&gt;
const int boutonIncrement = D1; // Bouton pour augmenter le BPM&lt;br /&gt;
const int boutonDecrement = D2; // Bouton pour diminuer le BPM&lt;br /&gt;
const int led1 = D5; // LED synchronisée avec le tempo&lt;br /&gt;
const int servoPin = D4; // Broche du servomoteur&lt;br /&gt;
const int buzzer = D6; // Haut-parleur pour signal sonore&lt;br /&gt;
const int clk = D3; // Broche CLK de l'afficheur 7 segments&lt;br /&gt;
const int dio = D0; // Broche DIO de l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
Servo servo; // Instance principale du servomoteur&lt;br /&gt;
TM1637Display display(clk, dio); // Instance pour contrôler l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
// Variables globales&lt;br /&gt;
int bpm = 60; // BPM initial&lt;br /&gt;
int minBPM = 40; // BPM minimum&lt;br /&gt;
int maxBPM = 200; // BPM maximum&lt;br /&gt;
bool servo_pos = false; // État actuel du servomoteur (position)&lt;br /&gt;
unsigned long previousMillis = 0; // Temps de référence pour le métronome&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
// Initialisation du matériel&lt;br /&gt;
initHardware();&lt;br /&gt;
setupWiFi();&lt;br /&gt;
server.begin();&lt;br /&gt;
&lt;br /&gt;
// Configuration des broches&lt;br /&gt;
pinMode(boutonIncrement, INPUT_PULLUP); // Bouton &amp;quot;+&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(boutonDecrement, INPUT_PULLUP); // Bouton &amp;quot;-&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(led1, OUTPUT); // Configuration de la LED comme sortie&lt;br /&gt;
pinMode(buzzer, OUTPUT); // Configuration du buzzer comme sortie&lt;br /&gt;
&lt;br /&gt;
// Configuration du servomoteur&lt;br /&gt;
servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
// Initialisation des sorties&lt;br /&gt;
digitalWrite(led1, LOW); // Éteindre la LED au démarrage&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteindre le buzzer au démarrage&lt;br /&gt;
servo.write(0); // Position initiale du servomoteur&lt;br /&gt;
&lt;br /&gt;
// Configuration de l'afficheur 7 segments&lt;br /&gt;
display.setBrightness(0x0f); // Réglage de la luminosité de l'afficheur&lt;br /&gt;
display.showNumberDec(bpm); // Affichage de la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
handleButtons(); // Gestion des boutons pour régler le BPM&lt;br /&gt;
metronomeTick(); // Gestion des ticks du métronome&lt;br /&gt;
display.showNumberDec(bpm); // Mise à jour de l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
// Vérifie si le bouton &amp;quot;+&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
bpm = min(bpm + 1, maxBPM); // Augmente le BPM jusqu'à la limite maximale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le bouton &amp;quot;-&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
bpm = max(bpm - 1, minBPM); // Diminue le BPM jusqu'à la limite minimale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
unsigned long currentMillis = millis(); // Récupère le temps actuel&lt;br /&gt;
unsigned long interval = 60000 / bpm; // Calcul de l'intervalle entre chaque tick (en ms)&lt;br /&gt;
unsigned long interval_buzzer = 100; // Durée d'activation du buzzer&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le temps écoulé dépasse l'intervalle calculé&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
previousMillis = currentMillis; // Met à jour le temps de référence&lt;br /&gt;
digitalWrite(buzzer, HIGH); // Active le buzzer&lt;br /&gt;
&lt;br /&gt;
if (servo_pos == false) {&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo.write(180); // Déplace le servomoteur à 180°&lt;br /&gt;
  servo_pos = true; // Change l'état du servomoteur&lt;br /&gt;
} else {&lt;br /&gt;
  servo.write(0); // Ramène le servomoteur à 0°&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo_pos = false; // Change l'état du servomoteur&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le buzzer doit être éteint après son intervalle&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval_buzzer) {&lt;br /&gt;
digitalWrite(led1, LOW); // Éteint la LED&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteint le buzzer&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le plan&lt;br /&gt;
[[Fichier: Shema_cablage.png|200px|top]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29212</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29212"/>
				<updated>2025-01-21T10:59:23Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Montage des composants électroniques */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine l’ingénieur&lt;br /&gt;
* Doigts minutieux et précis de Jean l’ingénieur&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt; // Bibliothèque pour contrôler les servomoteurs&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt; // Bibliothèque pour connecter l'ESP8266 au WiFi&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt; // Bibliothèque pour contrôler l'afficheur 7 segments TM1637&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2; // Création d'une instance de servomoteur&lt;br /&gt;
&lt;br /&gt;
const int boutonIncrement = D1; // Bouton pour augmenter le BPM&lt;br /&gt;
const int boutonDecrement = D2; // Bouton pour diminuer le BPM&lt;br /&gt;
const int led1 = D5; // LED synchronisée avec le tempo&lt;br /&gt;
const int servoPin = D4; // Broche du servomoteur&lt;br /&gt;
const int buzzer = D6; // Haut-parleur pour signal sonore&lt;br /&gt;
const int clk = D3; // Broche CLK de l'afficheur 7 segments&lt;br /&gt;
const int dio = D0; // Broche DIO de l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
Servo servo; // Instance principale du servomoteur&lt;br /&gt;
TM1637Display display(clk, dio); // Instance pour contrôler l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
// Variables globales&lt;br /&gt;
int bpm = 60; // BPM initial&lt;br /&gt;
int minBPM = 40; // BPM minimum&lt;br /&gt;
int maxBPM = 200; // BPM maximum&lt;br /&gt;
bool servo_pos = false; // État actuel du servomoteur (position)&lt;br /&gt;
unsigned long previousMillis = 0; // Temps de référence pour le métronome&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
// Initialisation du matériel&lt;br /&gt;
initHardware();&lt;br /&gt;
setupWiFi();&lt;br /&gt;
server.begin();&lt;br /&gt;
&lt;br /&gt;
// Configuration des broches&lt;br /&gt;
pinMode(boutonIncrement, INPUT_PULLUP); // Bouton &amp;quot;+&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(boutonDecrement, INPUT_PULLUP); // Bouton &amp;quot;-&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(led1, OUTPUT); // Configuration de la LED comme sortie&lt;br /&gt;
pinMode(buzzer, OUTPUT); // Configuration du buzzer comme sortie&lt;br /&gt;
&lt;br /&gt;
// Configuration du servomoteur&lt;br /&gt;
servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
// Initialisation des sorties&lt;br /&gt;
digitalWrite(led1, LOW); // Éteindre la LED au démarrage&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteindre le buzzer au démarrage&lt;br /&gt;
servo.write(0); // Position initiale du servomoteur&lt;br /&gt;
&lt;br /&gt;
// Configuration de l'afficheur 7 segments&lt;br /&gt;
display.setBrightness(0x0f); // Réglage de la luminosité de l'afficheur&lt;br /&gt;
display.showNumberDec(bpm); // Affichage de la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
handleButtons(); // Gestion des boutons pour régler le BPM&lt;br /&gt;
metronomeTick(); // Gestion des ticks du métronome&lt;br /&gt;
display.showNumberDec(bpm); // Mise à jour de l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
// Vérifie si le bouton &amp;quot;+&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
bpm = min(bpm + 1, maxBPM); // Augmente le BPM jusqu'à la limite maximale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le bouton &amp;quot;-&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
bpm = max(bpm - 1, minBPM); // Diminue le BPM jusqu'à la limite minimale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
unsigned long currentMillis = millis(); // Récupère le temps actuel&lt;br /&gt;
unsigned long interval = 60000 / bpm; // Calcul de l'intervalle entre chaque tick (en ms)&lt;br /&gt;
unsigned long interval_buzzer = 100; // Durée d'activation du buzzer&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le temps écoulé dépasse l'intervalle calculé&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
previousMillis = currentMillis; // Met à jour le temps de référence&lt;br /&gt;
digitalWrite(buzzer, HIGH); // Active le buzzer&lt;br /&gt;
&lt;br /&gt;
if (servo_pos == false) {&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo.write(180); // Déplace le servomoteur à 180°&lt;br /&gt;
  servo_pos = true; // Change l'état du servomoteur&lt;br /&gt;
} else {&lt;br /&gt;
  servo.write(0); // Ramène le servomoteur à 0°&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo_pos = false; // Change l'état du servomoteur&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le buzzer doit être éteint après son intervalle&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval_buzzer) {&lt;br /&gt;
digitalWrite(led1, LOW); // Éteint la LED&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteint le buzzer&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le plan&lt;br /&gt;
[[Fichier: Shema_cablage.png|200px|bottom]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29206</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29206"/>
				<updated>2025-01-21T10:56:11Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Montage des composants électroniques */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine l’ingénieur&lt;br /&gt;
* Doigts minutieux et précis de Jean l’ingénieur&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt; // Bibliothèque pour contrôler les servomoteurs&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt; // Bibliothèque pour connecter l'ESP8266 au WiFi&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt; // Bibliothèque pour contrôler l'afficheur 7 segments TM1637&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2; // Création d'une instance de servomoteur&lt;br /&gt;
&lt;br /&gt;
const int boutonIncrement = D1; // Bouton pour augmenter le BPM&lt;br /&gt;
const int boutonDecrement = D2; // Bouton pour diminuer le BPM&lt;br /&gt;
const int led1 = D5; // LED synchronisée avec le tempo&lt;br /&gt;
const int servoPin = D4; // Broche du servomoteur&lt;br /&gt;
const int buzzer = D6; // Haut-parleur pour signal sonore&lt;br /&gt;
const int clk = D3; // Broche CLK de l'afficheur 7 segments&lt;br /&gt;
const int dio = D0; // Broche DIO de l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
Servo servo; // Instance principale du servomoteur&lt;br /&gt;
TM1637Display display(clk, dio); // Instance pour contrôler l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
// Variables globales&lt;br /&gt;
int bpm = 60; // BPM initial&lt;br /&gt;
int minBPM = 40; // BPM minimum&lt;br /&gt;
int maxBPM = 200; // BPM maximum&lt;br /&gt;
bool servo_pos = false; // État actuel du servomoteur (position)&lt;br /&gt;
unsigned long previousMillis = 0; // Temps de référence pour le métronome&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
// Initialisation du matériel&lt;br /&gt;
initHardware();&lt;br /&gt;
setupWiFi();&lt;br /&gt;
server.begin();&lt;br /&gt;
&lt;br /&gt;
// Configuration des broches&lt;br /&gt;
pinMode(boutonIncrement, INPUT_PULLUP); // Bouton &amp;quot;+&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(boutonDecrement, INPUT_PULLUP); // Bouton &amp;quot;-&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(led1, OUTPUT); // Configuration de la LED comme sortie&lt;br /&gt;
pinMode(buzzer, OUTPUT); // Configuration du buzzer comme sortie&lt;br /&gt;
&lt;br /&gt;
// Configuration du servomoteur&lt;br /&gt;
servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
// Initialisation des sorties&lt;br /&gt;
digitalWrite(led1, LOW); // Éteindre la LED au démarrage&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteindre le buzzer au démarrage&lt;br /&gt;
servo.write(0); // Position initiale du servomoteur&lt;br /&gt;
&lt;br /&gt;
// Configuration de l'afficheur 7 segments&lt;br /&gt;
display.setBrightness(0x0f); // Réglage de la luminosité de l'afficheur&lt;br /&gt;
display.showNumberDec(bpm); // Affichage de la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
handleButtons(); // Gestion des boutons pour régler le BPM&lt;br /&gt;
metronomeTick(); // Gestion des ticks du métronome&lt;br /&gt;
display.showNumberDec(bpm); // Mise à jour de l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
// Vérifie si le bouton &amp;quot;+&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
bpm = min(bpm + 1, maxBPM); // Augmente le BPM jusqu'à la limite maximale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le bouton &amp;quot;-&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
bpm = max(bpm - 1, minBPM); // Diminue le BPM jusqu'à la limite minimale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
unsigned long currentMillis = millis(); // Récupère le temps actuel&lt;br /&gt;
unsigned long interval = 60000 / bpm; // Calcul de l'intervalle entre chaque tick (en ms)&lt;br /&gt;
unsigned long interval_buzzer = 100; // Durée d'activation du buzzer&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le temps écoulé dépasse l'intervalle calculé&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
previousMillis = currentMillis; // Met à jour le temps de référence&lt;br /&gt;
digitalWrite(buzzer, HIGH); // Active le buzzer&lt;br /&gt;
&lt;br /&gt;
if (servo_pos == false) {&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo.write(180); // Déplace le servomoteur à 180°&lt;br /&gt;
  servo_pos = true; // Change l'état du servomoteur&lt;br /&gt;
} else {&lt;br /&gt;
  servo.write(0); // Ramène le servomoteur à 0°&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo_pos = false; // Change l'état du servomoteur&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le buzzer doit être éteint après son intervalle&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval_buzzer) {&lt;br /&gt;
digitalWrite(led1, LOW); // Éteint la LED&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteint le buzzer&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le plan&lt;br /&gt;
[[Fichier: Shema_cablage.png|200px]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29204</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29204"/>
				<updated>2025-01-21T10:55:18Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Montage des composants électroniques */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine l’ingénieur&lt;br /&gt;
* Doigts minutieux et précis de Jean l’ingénieur&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt; // Bibliothèque pour contrôler les servomoteurs&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt; // Bibliothèque pour connecter l'ESP8266 au WiFi&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt; // Bibliothèque pour contrôler l'afficheur 7 segments TM1637&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2; // Création d'une instance de servomoteur&lt;br /&gt;
&lt;br /&gt;
const int boutonIncrement = D1; // Bouton pour augmenter le BPM&lt;br /&gt;
const int boutonDecrement = D2; // Bouton pour diminuer le BPM&lt;br /&gt;
const int led1 = D5; // LED synchronisée avec le tempo&lt;br /&gt;
const int servoPin = D4; // Broche du servomoteur&lt;br /&gt;
const int buzzer = D6; // Haut-parleur pour signal sonore&lt;br /&gt;
const int clk = D3; // Broche CLK de l'afficheur 7 segments&lt;br /&gt;
const int dio = D0; // Broche DIO de l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
Servo servo; // Instance principale du servomoteur&lt;br /&gt;
TM1637Display display(clk, dio); // Instance pour contrôler l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
// Variables globales&lt;br /&gt;
int bpm = 60; // BPM initial&lt;br /&gt;
int minBPM = 40; // BPM minimum&lt;br /&gt;
int maxBPM = 200; // BPM maximum&lt;br /&gt;
bool servo_pos = false; // État actuel du servomoteur (position)&lt;br /&gt;
unsigned long previousMillis = 0; // Temps de référence pour le métronome&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
// Initialisation du matériel&lt;br /&gt;
initHardware();&lt;br /&gt;
setupWiFi();&lt;br /&gt;
server.begin();&lt;br /&gt;
&lt;br /&gt;
// Configuration des broches&lt;br /&gt;
pinMode(boutonIncrement, INPUT_PULLUP); // Bouton &amp;quot;+&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(boutonDecrement, INPUT_PULLUP); // Bouton &amp;quot;-&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(led1, OUTPUT); // Configuration de la LED comme sortie&lt;br /&gt;
pinMode(buzzer, OUTPUT); // Configuration du buzzer comme sortie&lt;br /&gt;
&lt;br /&gt;
// Configuration du servomoteur&lt;br /&gt;
servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
// Initialisation des sorties&lt;br /&gt;
digitalWrite(led1, LOW); // Éteindre la LED au démarrage&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteindre le buzzer au démarrage&lt;br /&gt;
servo.write(0); // Position initiale du servomoteur&lt;br /&gt;
&lt;br /&gt;
// Configuration de l'afficheur 7 segments&lt;br /&gt;
display.setBrightness(0x0f); // Réglage de la luminosité de l'afficheur&lt;br /&gt;
display.showNumberDec(bpm); // Affichage de la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
handleButtons(); // Gestion des boutons pour régler le BPM&lt;br /&gt;
metronomeTick(); // Gestion des ticks du métronome&lt;br /&gt;
display.showNumberDec(bpm); // Mise à jour de l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
// Vérifie si le bouton &amp;quot;+&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
bpm = min(bpm + 1, maxBPM); // Augmente le BPM jusqu'à la limite maximale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le bouton &amp;quot;-&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
bpm = max(bpm - 1, minBPM); // Diminue le BPM jusqu'à la limite minimale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
unsigned long currentMillis = millis(); // Récupère le temps actuel&lt;br /&gt;
unsigned long interval = 60000 / bpm; // Calcul de l'intervalle entre chaque tick (en ms)&lt;br /&gt;
unsigned long interval_buzzer = 100; // Durée d'activation du buzzer&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le temps écoulé dépasse l'intervalle calculé&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
previousMillis = currentMillis; // Met à jour le temps de référence&lt;br /&gt;
digitalWrite(buzzer, HIGH); // Active le buzzer&lt;br /&gt;
&lt;br /&gt;
if (servo_pos == false) {&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo.write(180); // Déplace le servomoteur à 180°&lt;br /&gt;
  servo_pos = true; // Change l'état du servomoteur&lt;br /&gt;
} else {&lt;br /&gt;
  servo.write(0); // Ramène le servomoteur à 0°&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo_pos = false; // Change l'état du servomoteur&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le buzzer doit être éteint après son intervalle&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval_buzzer) {&lt;br /&gt;
digitalWrite(led1, LOW); // Éteint la LED&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteint le buzzer&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le plan&lt;br /&gt;
[[Fichier: Shema_cablage.png]]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29203</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29203"/>
				<updated>2025-01-21T10:54:30Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Montage des composants électroniques */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine l’ingénieur&lt;br /&gt;
* Doigts minutieux et précis de Jean l’ingénieur&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt; // Bibliothèque pour contrôler les servomoteurs&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt; // Bibliothèque pour connecter l'ESP8266 au WiFi&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt; // Bibliothèque pour contrôler l'afficheur 7 segments TM1637&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2; // Création d'une instance de servomoteur&lt;br /&gt;
&lt;br /&gt;
const int boutonIncrement = D1; // Bouton pour augmenter le BPM&lt;br /&gt;
const int boutonDecrement = D2; // Bouton pour diminuer le BPM&lt;br /&gt;
const int led1 = D5; // LED synchronisée avec le tempo&lt;br /&gt;
const int servoPin = D4; // Broche du servomoteur&lt;br /&gt;
const int buzzer = D6; // Haut-parleur pour signal sonore&lt;br /&gt;
const int clk = D3; // Broche CLK de l'afficheur 7 segments&lt;br /&gt;
const int dio = D0; // Broche DIO de l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
Servo servo; // Instance principale du servomoteur&lt;br /&gt;
TM1637Display display(clk, dio); // Instance pour contrôler l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
// Variables globales&lt;br /&gt;
int bpm = 60; // BPM initial&lt;br /&gt;
int minBPM = 40; // BPM minimum&lt;br /&gt;
int maxBPM = 200; // BPM maximum&lt;br /&gt;
bool servo_pos = false; // État actuel du servomoteur (position)&lt;br /&gt;
unsigned long previousMillis = 0; // Temps de référence pour le métronome&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
// Initialisation du matériel&lt;br /&gt;
initHardware();&lt;br /&gt;
setupWiFi();&lt;br /&gt;
server.begin();&lt;br /&gt;
&lt;br /&gt;
// Configuration des broches&lt;br /&gt;
pinMode(boutonIncrement, INPUT_PULLUP); // Bouton &amp;quot;+&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(boutonDecrement, INPUT_PULLUP); // Bouton &amp;quot;-&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(led1, OUTPUT); // Configuration de la LED comme sortie&lt;br /&gt;
pinMode(buzzer, OUTPUT); // Configuration du buzzer comme sortie&lt;br /&gt;
&lt;br /&gt;
// Configuration du servomoteur&lt;br /&gt;
servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
// Initialisation des sorties&lt;br /&gt;
digitalWrite(led1, LOW); // Éteindre la LED au démarrage&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteindre le buzzer au démarrage&lt;br /&gt;
servo.write(0); // Position initiale du servomoteur&lt;br /&gt;
&lt;br /&gt;
// Configuration de l'afficheur 7 segments&lt;br /&gt;
display.setBrightness(0x0f); // Réglage de la luminosité de l'afficheur&lt;br /&gt;
display.showNumberDec(bpm); // Affichage de la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
handleButtons(); // Gestion des boutons pour régler le BPM&lt;br /&gt;
metronomeTick(); // Gestion des ticks du métronome&lt;br /&gt;
display.showNumberDec(bpm); // Mise à jour de l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
// Vérifie si le bouton &amp;quot;+&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
bpm = min(bpm + 1, maxBPM); // Augmente le BPM jusqu'à la limite maximale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le bouton &amp;quot;-&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
bpm = max(bpm - 1, minBPM); // Diminue le BPM jusqu'à la limite minimale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
unsigned long currentMillis = millis(); // Récupère le temps actuel&lt;br /&gt;
unsigned long interval = 60000 / bpm; // Calcul de l'intervalle entre chaque tick (en ms)&lt;br /&gt;
unsigned long interval_buzzer = 100; // Durée d'activation du buzzer&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le temps écoulé dépasse l'intervalle calculé&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
previousMillis = currentMillis; // Met à jour le temps de référence&lt;br /&gt;
digitalWrite(buzzer, HIGH); // Active le buzzer&lt;br /&gt;
&lt;br /&gt;
if (servo_pos == false) {&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo.write(180); // Déplace le servomoteur à 180°&lt;br /&gt;
  servo_pos = true; // Change l'état du servomoteur&lt;br /&gt;
} else {&lt;br /&gt;
  servo.write(0); // Ramène le servomoteur à 0°&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo_pos = false; // Change l'état du servomoteur&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le buzzer doit être éteint après son intervalle&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval_buzzer) {&lt;br /&gt;
digitalWrite(led1, LOW); // Éteint la LED&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteint le buzzer&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le plan&lt;br /&gt;
[Fichier: Shema_cablage.png]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29202</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29202"/>
				<updated>2025-01-21T10:53:41Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Montage des composants électroniques */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine l’ingénieur&lt;br /&gt;
* Doigts minutieux et précis de Jean l’ingénieur&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt; // Bibliothèque pour contrôler les servomoteurs&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt; // Bibliothèque pour connecter l'ESP8266 au WiFi&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt; // Bibliothèque pour contrôler l'afficheur 7 segments TM1637&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2; // Création d'une instance de servomoteur&lt;br /&gt;
&lt;br /&gt;
const int boutonIncrement = D1; // Bouton pour augmenter le BPM&lt;br /&gt;
const int boutonDecrement = D2; // Bouton pour diminuer le BPM&lt;br /&gt;
const int led1 = D5; // LED synchronisée avec le tempo&lt;br /&gt;
const int servoPin = D4; // Broche du servomoteur&lt;br /&gt;
const int buzzer = D6; // Haut-parleur pour signal sonore&lt;br /&gt;
const int clk = D3; // Broche CLK de l'afficheur 7 segments&lt;br /&gt;
const int dio = D0; // Broche DIO de l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
Servo servo; // Instance principale du servomoteur&lt;br /&gt;
TM1637Display display(clk, dio); // Instance pour contrôler l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
// Variables globales&lt;br /&gt;
int bpm = 60; // BPM initial&lt;br /&gt;
int minBPM = 40; // BPM minimum&lt;br /&gt;
int maxBPM = 200; // BPM maximum&lt;br /&gt;
bool servo_pos = false; // État actuel du servomoteur (position)&lt;br /&gt;
unsigned long previousMillis = 0; // Temps de référence pour le métronome&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
// Initialisation du matériel&lt;br /&gt;
initHardware();&lt;br /&gt;
setupWiFi();&lt;br /&gt;
server.begin();&lt;br /&gt;
&lt;br /&gt;
// Configuration des broches&lt;br /&gt;
pinMode(boutonIncrement, INPUT_PULLUP); // Bouton &amp;quot;+&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(boutonDecrement, INPUT_PULLUP); // Bouton &amp;quot;-&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(led1, OUTPUT); // Configuration de la LED comme sortie&lt;br /&gt;
pinMode(buzzer, OUTPUT); // Configuration du buzzer comme sortie&lt;br /&gt;
&lt;br /&gt;
// Configuration du servomoteur&lt;br /&gt;
servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
// Initialisation des sorties&lt;br /&gt;
digitalWrite(led1, LOW); // Éteindre la LED au démarrage&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteindre le buzzer au démarrage&lt;br /&gt;
servo.write(0); // Position initiale du servomoteur&lt;br /&gt;
&lt;br /&gt;
// Configuration de l'afficheur 7 segments&lt;br /&gt;
display.setBrightness(0x0f); // Réglage de la luminosité de l'afficheur&lt;br /&gt;
display.showNumberDec(bpm); // Affichage de la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
handleButtons(); // Gestion des boutons pour régler le BPM&lt;br /&gt;
metronomeTick(); // Gestion des ticks du métronome&lt;br /&gt;
display.showNumberDec(bpm); // Mise à jour de l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
// Vérifie si le bouton &amp;quot;+&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
bpm = min(bpm + 1, maxBPM); // Augmente le BPM jusqu'à la limite maximale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le bouton &amp;quot;-&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
bpm = max(bpm - 1, minBPM); // Diminue le BPM jusqu'à la limite minimale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
unsigned long currentMillis = millis(); // Récupère le temps actuel&lt;br /&gt;
unsigned long interval = 60000 / bpm; // Calcul de l'intervalle entre chaque tick (en ms)&lt;br /&gt;
unsigned long interval_buzzer = 100; // Durée d'activation du buzzer&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le temps écoulé dépasse l'intervalle calculé&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
previousMillis = currentMillis; // Met à jour le temps de référence&lt;br /&gt;
digitalWrite(buzzer, HIGH); // Active le buzzer&lt;br /&gt;
&lt;br /&gt;
if (servo_pos == false) {&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo.write(180); // Déplace le servomoteur à 180°&lt;br /&gt;
  servo_pos = true; // Change l'état du servomoteur&lt;br /&gt;
} else {&lt;br /&gt;
  servo.write(0); // Ramène le servomoteur à 0°&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo_pos = false; // Change l'état du servomoteur&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le buzzer doit être éteint après son intervalle&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval_buzzer) {&lt;br /&gt;
digitalWrite(led1, LOW); // Éteint la LED&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteint le buzzer&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le plan&lt;br /&gt;
[Shema_cablage.png]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29201</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29201"/>
				<updated>2025-01-21T10:53:30Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Montage des composants électroniques */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine l’ingénieur&lt;br /&gt;
* Doigts minutieux et précis de Jean l’ingénieur&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt; // Bibliothèque pour contrôler les servomoteurs&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt; // Bibliothèque pour connecter l'ESP8266 au WiFi&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt; // Bibliothèque pour contrôler l'afficheur 7 segments TM1637&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2; // Création d'une instance de servomoteur&lt;br /&gt;
&lt;br /&gt;
const int boutonIncrement = D1; // Bouton pour augmenter le BPM&lt;br /&gt;
const int boutonDecrement = D2; // Bouton pour diminuer le BPM&lt;br /&gt;
const int led1 = D5; // LED synchronisée avec le tempo&lt;br /&gt;
const int servoPin = D4; // Broche du servomoteur&lt;br /&gt;
const int buzzer = D6; // Haut-parleur pour signal sonore&lt;br /&gt;
const int clk = D3; // Broche CLK de l'afficheur 7 segments&lt;br /&gt;
const int dio = D0; // Broche DIO de l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
Servo servo; // Instance principale du servomoteur&lt;br /&gt;
TM1637Display display(clk, dio); // Instance pour contrôler l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
// Variables globales&lt;br /&gt;
int bpm = 60; // BPM initial&lt;br /&gt;
int minBPM = 40; // BPM minimum&lt;br /&gt;
int maxBPM = 200; // BPM maximum&lt;br /&gt;
bool servo_pos = false; // État actuel du servomoteur (position)&lt;br /&gt;
unsigned long previousMillis = 0; // Temps de référence pour le métronome&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
// Initialisation du matériel&lt;br /&gt;
initHardware();&lt;br /&gt;
setupWiFi();&lt;br /&gt;
server.begin();&lt;br /&gt;
&lt;br /&gt;
// Configuration des broches&lt;br /&gt;
pinMode(boutonIncrement, INPUT_PULLUP); // Bouton &amp;quot;+&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(boutonDecrement, INPUT_PULLUP); // Bouton &amp;quot;-&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(led1, OUTPUT); // Configuration de la LED comme sortie&lt;br /&gt;
pinMode(buzzer, OUTPUT); // Configuration du buzzer comme sortie&lt;br /&gt;
&lt;br /&gt;
// Configuration du servomoteur&lt;br /&gt;
servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
// Initialisation des sorties&lt;br /&gt;
digitalWrite(led1, LOW); // Éteindre la LED au démarrage&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteindre le buzzer au démarrage&lt;br /&gt;
servo.write(0); // Position initiale du servomoteur&lt;br /&gt;
&lt;br /&gt;
// Configuration de l'afficheur 7 segments&lt;br /&gt;
display.setBrightness(0x0f); // Réglage de la luminosité de l'afficheur&lt;br /&gt;
display.showNumberDec(bpm); // Affichage de la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
handleButtons(); // Gestion des boutons pour régler le BPM&lt;br /&gt;
metronomeTick(); // Gestion des ticks du métronome&lt;br /&gt;
display.showNumberDec(bpm); // Mise à jour de l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
// Vérifie si le bouton &amp;quot;+&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
bpm = min(bpm + 1, maxBPM); // Augmente le BPM jusqu'à la limite maximale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le bouton &amp;quot;-&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
bpm = max(bpm - 1, minBPM); // Diminue le BPM jusqu'à la limite minimale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
unsigned long currentMillis = millis(); // Récupère le temps actuel&lt;br /&gt;
unsigned long interval = 60000 / bpm; // Calcul de l'intervalle entre chaque tick (en ms)&lt;br /&gt;
unsigned long interval_buzzer = 100; // Durée d'activation du buzzer&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le temps écoulé dépasse l'intervalle calculé&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
previousMillis = currentMillis; // Met à jour le temps de référence&lt;br /&gt;
digitalWrite(buzzer, HIGH); // Active le buzzer&lt;br /&gt;
&lt;br /&gt;
if (servo_pos == false) {&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo.write(180); // Déplace le servomoteur à 180°&lt;br /&gt;
  servo_pos = true; // Change l'état du servomoteur&lt;br /&gt;
} else {&lt;br /&gt;
  servo.write(0); // Ramène le servomoteur à 0°&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo_pos = false; // Change l'état du servomoteur&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le buzzer doit être éteint après son intervalle&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval_buzzer) {&lt;br /&gt;
digitalWrite(led1, LOW); // Éteint la LED&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteint le buzzer&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le plan&lt;br /&gt;
[Shema cablage.png]&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:Shema_cablage.png&amp;diff=29195</id>
		<title>Fichier:Shema cablage.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=Fichier:Shema_cablage.png&amp;diff=29195"/>
				<updated>2025-01-21T10:52:01Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29171</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29171"/>
				<updated>2025-01-21T10:37:23Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Qu'est qu'un métronome ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo que l'on règle avec ce que l'on appelle le BPM (Battements Par Minute), vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine l’ingénieur&lt;br /&gt;
* Doigts minutieux et précis de Jean l’ingénieur&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt; // Bibliothèque pour contrôler les servomoteurs&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt; // Bibliothèque pour connecter l'ESP8266 au WiFi&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt; // Bibliothèque pour contrôler l'afficheur 7 segments TM1637&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2; // Création d'une instance de servomoteur&lt;br /&gt;
&lt;br /&gt;
const int boutonIncrement = D1; // Bouton pour augmenter le BPM&lt;br /&gt;
const int boutonDecrement = D2; // Bouton pour diminuer le BPM&lt;br /&gt;
const int led1 = D5; // LED synchronisée avec le tempo&lt;br /&gt;
const int servoPin = D4; // Broche du servomoteur&lt;br /&gt;
const int buzzer = D6; // Haut-parleur pour signal sonore&lt;br /&gt;
const int clk = D3; // Broche CLK de l'afficheur 7 segments&lt;br /&gt;
const int dio = D0; // Broche DIO de l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
Servo servo; // Instance principale du servomoteur&lt;br /&gt;
TM1637Display display(clk, dio); // Instance pour contrôler l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
// Variables globales&lt;br /&gt;
int bpm = 60; // BPM initial&lt;br /&gt;
int minBPM = 40; // BPM minimum&lt;br /&gt;
int maxBPM = 200; // BPM maximum&lt;br /&gt;
bool servo_pos = false; // État actuel du servomoteur (position)&lt;br /&gt;
unsigned long previousMillis = 0; // Temps de référence pour le métronome&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
// Initialisation du matériel&lt;br /&gt;
initHardware();&lt;br /&gt;
setupWiFi();&lt;br /&gt;
server.begin();&lt;br /&gt;
&lt;br /&gt;
// Configuration des broches&lt;br /&gt;
pinMode(boutonIncrement, INPUT_PULLUP); // Bouton &amp;quot;+&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(boutonDecrement, INPUT_PULLUP); // Bouton &amp;quot;-&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(led1, OUTPUT); // Configuration de la LED comme sortie&lt;br /&gt;
pinMode(buzzer, OUTPUT); // Configuration du buzzer comme sortie&lt;br /&gt;
&lt;br /&gt;
// Configuration du servomoteur&lt;br /&gt;
servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
// Initialisation des sorties&lt;br /&gt;
digitalWrite(led1, LOW); // Éteindre la LED au démarrage&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteindre le buzzer au démarrage&lt;br /&gt;
servo.write(0); // Position initiale du servomoteur&lt;br /&gt;
&lt;br /&gt;
// Configuration de l'afficheur 7 segments&lt;br /&gt;
display.setBrightness(0x0f); // Réglage de la luminosité de l'afficheur&lt;br /&gt;
display.showNumberDec(bpm); // Affichage de la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
handleButtons(); // Gestion des boutons pour régler le BPM&lt;br /&gt;
metronomeTick(); // Gestion des ticks du métronome&lt;br /&gt;
display.showNumberDec(bpm); // Mise à jour de l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
// Vérifie si le bouton &amp;quot;+&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
bpm = min(bpm + 1, maxBPM); // Augmente le BPM jusqu'à la limite maximale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le bouton &amp;quot;-&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
bpm = max(bpm - 1, minBPM); // Diminue le BPM jusqu'à la limite minimale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
unsigned long currentMillis = millis(); // Récupère le temps actuel&lt;br /&gt;
unsigned long interval = 60000 / bpm; // Calcul de l'intervalle entre chaque tick (en ms)&lt;br /&gt;
unsigned long interval_buzzer = 100; // Durée d'activation du buzzer&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le temps écoulé dépasse l'intervalle calculé&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
previousMillis = currentMillis; // Met à jour le temps de référence&lt;br /&gt;
digitalWrite(buzzer, HIGH); // Active le buzzer&lt;br /&gt;
&lt;br /&gt;
if (servo_pos == false) {&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo.write(180); // Déplace le servomoteur à 180°&lt;br /&gt;
  servo_pos = true; // Change l'état du servomoteur&lt;br /&gt;
} else {&lt;br /&gt;
  servo.write(0); // Ramène le servomoteur à 0°&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo_pos = false; // Change l'état du servomoteur&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le buzzer doit être éteint après son intervalle&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval_buzzer) {&lt;br /&gt;
digitalWrite(led1, LOW); // Éteint la LED&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteint le buzzer&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le plan&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29162</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29162"/>
				<updated>2025-01-21T10:32:24Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Qu'est qu'un métronome ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&lt;br /&gt;
&lt;br /&gt;
===Qu'est qu'un métronome ?===&lt;br /&gt;
&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo, vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine l’ingénieur&lt;br /&gt;
* Doigts minutieux et précis de Jean l’ingénieur&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt; // Bibliothèque pour contrôler les servomoteurs&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt; // Bibliothèque pour connecter l'ESP8266 au WiFi&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt; // Bibliothèque pour contrôler l'afficheur 7 segments TM1637&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2; // Création d'une instance de servomoteur&lt;br /&gt;
&lt;br /&gt;
const int boutonIncrement = D1; // Bouton pour augmenter le BPM&lt;br /&gt;
const int boutonDecrement = D2; // Bouton pour diminuer le BPM&lt;br /&gt;
const int led1 = D5; // LED synchronisée avec le tempo&lt;br /&gt;
const int servoPin = D4; // Broche du servomoteur&lt;br /&gt;
const int buzzer = D6; // Haut-parleur pour signal sonore&lt;br /&gt;
const int clk = D3; // Broche CLK de l'afficheur 7 segments&lt;br /&gt;
const int dio = D0; // Broche DIO de l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
Servo servo; // Instance principale du servomoteur&lt;br /&gt;
TM1637Display display(clk, dio); // Instance pour contrôler l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
// Variables globales&lt;br /&gt;
int bpm = 60; // BPM initial&lt;br /&gt;
int minBPM = 40; // BPM minimum&lt;br /&gt;
int maxBPM = 200; // BPM maximum&lt;br /&gt;
bool servo_pos = false; // État actuel du servomoteur (position)&lt;br /&gt;
unsigned long previousMillis = 0; // Temps de référence pour le métronome&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
// Initialisation du matériel&lt;br /&gt;
initHardware();&lt;br /&gt;
setupWiFi();&lt;br /&gt;
server.begin();&lt;br /&gt;
&lt;br /&gt;
// Configuration des broches&lt;br /&gt;
pinMode(boutonIncrement, INPUT_PULLUP); // Bouton &amp;quot;+&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(boutonDecrement, INPUT_PULLUP); // Bouton &amp;quot;-&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(led1, OUTPUT); // Configuration de la LED comme sortie&lt;br /&gt;
pinMode(buzzer, OUTPUT); // Configuration du buzzer comme sortie&lt;br /&gt;
&lt;br /&gt;
// Configuration du servomoteur&lt;br /&gt;
servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
// Initialisation des sorties&lt;br /&gt;
digitalWrite(led1, LOW); // Éteindre la LED au démarrage&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteindre le buzzer au démarrage&lt;br /&gt;
servo.write(0); // Position initiale du servomoteur&lt;br /&gt;
&lt;br /&gt;
// Configuration de l'afficheur 7 segments&lt;br /&gt;
display.setBrightness(0x0f); // Réglage de la luminosité de l'afficheur&lt;br /&gt;
display.showNumberDec(bpm); // Affichage de la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
handleButtons(); // Gestion des boutons pour régler le BPM&lt;br /&gt;
metronomeTick(); // Gestion des ticks du métronome&lt;br /&gt;
display.showNumberDec(bpm); // Mise à jour de l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
// Vérifie si le bouton &amp;quot;+&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
bpm = min(bpm + 1, maxBPM); // Augmente le BPM jusqu'à la limite maximale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le bouton &amp;quot;-&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
bpm = max(bpm - 1, minBPM); // Diminue le BPM jusqu'à la limite minimale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
unsigned long currentMillis = millis(); // Récupère le temps actuel&lt;br /&gt;
unsigned long interval = 60000 / bpm; // Calcul de l'intervalle entre chaque tick (en ms)&lt;br /&gt;
unsigned long interval_buzzer = 100; // Durée d'activation du buzzer&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le temps écoulé dépasse l'intervalle calculé&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
previousMillis = currentMillis; // Met à jour le temps de référence&lt;br /&gt;
digitalWrite(buzzer, HIGH); // Active le buzzer&lt;br /&gt;
&lt;br /&gt;
if (servo_pos == false) {&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo.write(180); // Déplace le servomoteur à 180°&lt;br /&gt;
  servo_pos = true; // Change l'état du servomoteur&lt;br /&gt;
} else {&lt;br /&gt;
  servo.write(0); // Ramène le servomoteur à 0°&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo_pos = false; // Change l'état du servomoteur&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le buzzer doit être éteint après son intervalle&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval_buzzer) {&lt;br /&gt;
digitalWrite(led1, LOW); // Éteint la LED&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteint le buzzer&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le plan&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29161</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29161"/>
				<updated>2025-01-21T10:32:07Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Qu'est qu'un métronome ? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&lt;br /&gt;
&lt;br /&gt;
=Qu'est qu'un métronome ?=&lt;br /&gt;
&lt;br /&gt;
Un métronome est un instrument donnant un signal audible permettant d'indiquer un tempo, vitesse à laquelle doit être jouée une musique. Il est surtout utilisé dans l'étude d'une partition, la mise en place d'une interprétation ou la recherche du minutage d'une œuvre musicale.[https://fr.wikipedia.org/wiki/M%C3%A9tronome (suite)]&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine l’ingénieur&lt;br /&gt;
* Doigts minutieux et précis de Jean l’ingénieur&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt; // Bibliothèque pour contrôler les servomoteurs&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt; // Bibliothèque pour connecter l'ESP8266 au WiFi&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt; // Bibliothèque pour contrôler l'afficheur 7 segments TM1637&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2; // Création d'une instance de servomoteur&lt;br /&gt;
&lt;br /&gt;
const int boutonIncrement = D1; // Bouton pour augmenter le BPM&lt;br /&gt;
const int boutonDecrement = D2; // Bouton pour diminuer le BPM&lt;br /&gt;
const int led1 = D5; // LED synchronisée avec le tempo&lt;br /&gt;
const int servoPin = D4; // Broche du servomoteur&lt;br /&gt;
const int buzzer = D6; // Haut-parleur pour signal sonore&lt;br /&gt;
const int clk = D3; // Broche CLK de l'afficheur 7 segments&lt;br /&gt;
const int dio = D0; // Broche DIO de l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
Servo servo; // Instance principale du servomoteur&lt;br /&gt;
TM1637Display display(clk, dio); // Instance pour contrôler l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
// Variables globales&lt;br /&gt;
int bpm = 60; // BPM initial&lt;br /&gt;
int minBPM = 40; // BPM minimum&lt;br /&gt;
int maxBPM = 200; // BPM maximum&lt;br /&gt;
bool servo_pos = false; // État actuel du servomoteur (position)&lt;br /&gt;
unsigned long previousMillis = 0; // Temps de référence pour le métronome&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
// Initialisation du matériel&lt;br /&gt;
initHardware();&lt;br /&gt;
setupWiFi();&lt;br /&gt;
server.begin();&lt;br /&gt;
&lt;br /&gt;
// Configuration des broches&lt;br /&gt;
pinMode(boutonIncrement, INPUT_PULLUP); // Bouton &amp;quot;+&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(boutonDecrement, INPUT_PULLUP); // Bouton &amp;quot;-&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(led1, OUTPUT); // Configuration de la LED comme sortie&lt;br /&gt;
pinMode(buzzer, OUTPUT); // Configuration du buzzer comme sortie&lt;br /&gt;
&lt;br /&gt;
// Configuration du servomoteur&lt;br /&gt;
servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
// Initialisation des sorties&lt;br /&gt;
digitalWrite(led1, LOW); // Éteindre la LED au démarrage&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteindre le buzzer au démarrage&lt;br /&gt;
servo.write(0); // Position initiale du servomoteur&lt;br /&gt;
&lt;br /&gt;
// Configuration de l'afficheur 7 segments&lt;br /&gt;
display.setBrightness(0x0f); // Réglage de la luminosité de l'afficheur&lt;br /&gt;
display.showNumberDec(bpm); // Affichage de la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
handleButtons(); // Gestion des boutons pour régler le BPM&lt;br /&gt;
metronomeTick(); // Gestion des ticks du métronome&lt;br /&gt;
display.showNumberDec(bpm); // Mise à jour de l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
// Vérifie si le bouton &amp;quot;+&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
bpm = min(bpm + 1, maxBPM); // Augmente le BPM jusqu'à la limite maximale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le bouton &amp;quot;-&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
bpm = max(bpm - 1, minBPM); // Diminue le BPM jusqu'à la limite minimale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
unsigned long currentMillis = millis(); // Récupère le temps actuel&lt;br /&gt;
unsigned long interval = 60000 / bpm; // Calcul de l'intervalle entre chaque tick (en ms)&lt;br /&gt;
unsigned long interval_buzzer = 100; // Durée d'activation du buzzer&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le temps écoulé dépasse l'intervalle calculé&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
previousMillis = currentMillis; // Met à jour le temps de référence&lt;br /&gt;
digitalWrite(buzzer, HIGH); // Active le buzzer&lt;br /&gt;
&lt;br /&gt;
if (servo_pos == false) {&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo.write(180); // Déplace le servomoteur à 180°&lt;br /&gt;
  servo_pos = true; // Change l'état du servomoteur&lt;br /&gt;
} else {&lt;br /&gt;
  servo.write(0); // Ramène le servomoteur à 0°&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo_pos = false; // Change l'état du servomoteur&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le buzzer doit être éteint après son intervalle&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval_buzzer) {&lt;br /&gt;
digitalWrite(led1, LOW); // Éteint la LED&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteint le buzzer&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le plan&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29160</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29160"/>
				<updated>2025-01-21T10:31:09Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&lt;br /&gt;
&lt;br /&gt;
=Qu'est qu'un métronome ?=&lt;br /&gt;
&lt;br /&gt;
[https://fr.wikipedia.org/wiki/M%C3%A9tronome Page Wikipédia Métronome]&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine l’ingénieur&lt;br /&gt;
* Doigts minutieux et précis de Jean l’ingénieur&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt; // Bibliothèque pour contrôler les servomoteurs&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt; // Bibliothèque pour connecter l'ESP8266 au WiFi&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt; // Bibliothèque pour contrôler l'afficheur 7 segments TM1637&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2; // Création d'une instance de servomoteur&lt;br /&gt;
&lt;br /&gt;
const int boutonIncrement = D1; // Bouton pour augmenter le BPM&lt;br /&gt;
const int boutonDecrement = D2; // Bouton pour diminuer le BPM&lt;br /&gt;
const int led1 = D5; // LED synchronisée avec le tempo&lt;br /&gt;
const int servoPin = D4; // Broche du servomoteur&lt;br /&gt;
const int buzzer = D6; // Haut-parleur pour signal sonore&lt;br /&gt;
const int clk = D3; // Broche CLK de l'afficheur 7 segments&lt;br /&gt;
const int dio = D0; // Broche DIO de l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
Servo servo; // Instance principale du servomoteur&lt;br /&gt;
TM1637Display display(clk, dio); // Instance pour contrôler l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
// Variables globales&lt;br /&gt;
int bpm = 60; // BPM initial&lt;br /&gt;
int minBPM = 40; // BPM minimum&lt;br /&gt;
int maxBPM = 200; // BPM maximum&lt;br /&gt;
bool servo_pos = false; // État actuel du servomoteur (position)&lt;br /&gt;
unsigned long previousMillis = 0; // Temps de référence pour le métronome&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
// Initialisation du matériel&lt;br /&gt;
initHardware();&lt;br /&gt;
setupWiFi();&lt;br /&gt;
server.begin();&lt;br /&gt;
&lt;br /&gt;
// Configuration des broches&lt;br /&gt;
pinMode(boutonIncrement, INPUT_PULLUP); // Bouton &amp;quot;+&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(boutonDecrement, INPUT_PULLUP); // Bouton &amp;quot;-&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(led1, OUTPUT); // Configuration de la LED comme sortie&lt;br /&gt;
pinMode(buzzer, OUTPUT); // Configuration du buzzer comme sortie&lt;br /&gt;
&lt;br /&gt;
// Configuration du servomoteur&lt;br /&gt;
servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
// Initialisation des sorties&lt;br /&gt;
digitalWrite(led1, LOW); // Éteindre la LED au démarrage&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteindre le buzzer au démarrage&lt;br /&gt;
servo.write(0); // Position initiale du servomoteur&lt;br /&gt;
&lt;br /&gt;
// Configuration de l'afficheur 7 segments&lt;br /&gt;
display.setBrightness(0x0f); // Réglage de la luminosité de l'afficheur&lt;br /&gt;
display.showNumberDec(bpm); // Affichage de la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
handleButtons(); // Gestion des boutons pour régler le BPM&lt;br /&gt;
metronomeTick(); // Gestion des ticks du métronome&lt;br /&gt;
display.showNumberDec(bpm); // Mise à jour de l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
// Vérifie si le bouton &amp;quot;+&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
bpm = min(bpm + 1, maxBPM); // Augmente le BPM jusqu'à la limite maximale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le bouton &amp;quot;-&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
bpm = max(bpm - 1, minBPM); // Diminue le BPM jusqu'à la limite minimale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
unsigned long currentMillis = millis(); // Récupère le temps actuel&lt;br /&gt;
unsigned long interval = 60000 / bpm; // Calcul de l'intervalle entre chaque tick (en ms)&lt;br /&gt;
unsigned long interval_buzzer = 100; // Durée d'activation du buzzer&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le temps écoulé dépasse l'intervalle calculé&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
previousMillis = currentMillis; // Met à jour le temps de référence&lt;br /&gt;
digitalWrite(buzzer, HIGH); // Active le buzzer&lt;br /&gt;
&lt;br /&gt;
if (servo_pos == false) {&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo.write(180); // Déplace le servomoteur à 180°&lt;br /&gt;
  servo_pos = true; // Change l'état du servomoteur&lt;br /&gt;
} else {&lt;br /&gt;
  servo.write(0); // Ramène le servomoteur à 0°&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo_pos = false; // Change l'état du servomoteur&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le buzzer doit être éteint après son intervalle&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval_buzzer) {&lt;br /&gt;
digitalWrite(led1, LOW); // Éteint la LED&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteint le buzzer&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le plan&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	<entry>
		<id>http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29151</id>
		<title>ENIB 2025 : Métronome JJJA</title>
		<link rel="alternate" type="text/html" href="http://wiki.lesfabriquesduponant.net/index.php?title=ENIB_2025_:_M%C3%A9tronome_JJJA&amp;diff=29151"/>
				<updated>2025-01-21T10:25:32Z</updated>
		
		<summary type="html">&lt;p&gt;J2leroux : /* Étapes de fabrication */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Description=&lt;br /&gt;
Le projet consiste en la conception et la réalisation d'un métronome à tempo variable, réglable entre 40 et 200 BPM à l’aide de boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;. Il dispose d’un écran numérique pour afficher avec précision le tempo sélectionné, d’une LED verte clignotant en synchronisation avec le rythme, ainsi que d'une deuxième LED avec intensité ajustable via un potentiomètre. Cette dernière assure un éclairage efficace de l’aiguille, permettant une utilisation optimale dans différentes conditions de luminosité.&lt;br /&gt;
&lt;br /&gt;
=Introduction=&lt;br /&gt;
Dans le cadre de ce projet, l'équipe JJJA (Joachim, Joseph, Jean, Antoine) a entrepris de transformer un papertoy existant en un métronome fonctionnel. En conservant les éléments essentiels du modèle de départ, à l’exception de la boîte initiale, l’équipe a entièrement repensé et adapté le dispositif.&lt;br /&gt;
&lt;br /&gt;
=Outils et matériel=&lt;br /&gt;
&lt;br /&gt;
===Outils===&lt;br /&gt;
* Pistolet à colle&lt;br /&gt;
* Imprimante 3D&lt;br /&gt;
* Cutter&lt;br /&gt;
* Ciseaux&lt;br /&gt;
* Crayon&lt;br /&gt;
* Cerveau affûté d'Antoine l’ingénieur&lt;br /&gt;
* Doigts minutieux et précis de Jean l’ingénieur&lt;br /&gt;
&lt;br /&gt;
===Matériel===&lt;br /&gt;
* 2 LEDs vertes&lt;br /&gt;
* Un potentiomètre 10 kΩ&lt;br /&gt;
* Un haut-parleur WSC 8 Ω 2 V&lt;br /&gt;
* Un écran 7 segments (4-digit display version 1.2)&lt;br /&gt;
* Une carte weemos D1 mini&lt;br /&gt;
* Un micro servo 9g NG90&lt;br /&gt;
* Un bouton poussoir&lt;br /&gt;
* Une breadboard&lt;br /&gt;
* Une batterie 2600 mAh avec câble&lt;br /&gt;
* Des câbles classiques&lt;br /&gt;
* Du carton&lt;br /&gt;
&lt;br /&gt;
=Fichiers annexes=&lt;br /&gt;
&lt;br /&gt;
==Code Arduino==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Arduino&amp;quot; line&amp;gt;&lt;br /&gt;
#include &amp;lt;Servo.h&amp;gt; // Bibliothèque pour contrôler les servomoteurs&lt;br /&gt;
#include &amp;lt;ESP8266WiFi.h&amp;gt; // Bibliothèque pour connecter l'ESP8266 au WiFi&lt;br /&gt;
#include &amp;lt;TM1637Display.h&amp;gt; // Bibliothèque pour contrôler l'afficheur 7 segments TM1637&lt;br /&gt;
&lt;br /&gt;
// Définition des broches&lt;br /&gt;
#define PIN_SERVO_2  D4&lt;br /&gt;
Servo myservo_2; // Création d'une instance de servomoteur&lt;br /&gt;
&lt;br /&gt;
const int boutonIncrement = D1; // Bouton pour augmenter le BPM&lt;br /&gt;
const int boutonDecrement = D2; // Bouton pour diminuer le BPM&lt;br /&gt;
const int led1 = D5; // LED synchronisée avec le tempo&lt;br /&gt;
const int servoPin = D4; // Broche du servomoteur&lt;br /&gt;
const int buzzer = D6; // Haut-parleur pour signal sonore&lt;br /&gt;
const int clk = D3; // Broche CLK de l'afficheur 7 segments&lt;br /&gt;
const int dio = D0; // Broche DIO de l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
Servo servo; // Instance principale du servomoteur&lt;br /&gt;
TM1637Display display(clk, dio); // Instance pour contrôler l'afficheur 7 segments&lt;br /&gt;
&lt;br /&gt;
// Variables globales&lt;br /&gt;
int bpm = 60; // BPM initial&lt;br /&gt;
int minBPM = 40; // BPM minimum&lt;br /&gt;
int maxBPM = 200; // BPM maximum&lt;br /&gt;
bool servo_pos = false; // État actuel du servomoteur (position)&lt;br /&gt;
unsigned long previousMillis = 0; // Temps de référence pour le métronome&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
// Initialisation du matériel&lt;br /&gt;
initHardware();&lt;br /&gt;
setupWiFi();&lt;br /&gt;
server.begin();&lt;br /&gt;
&lt;br /&gt;
// Configuration des broches&lt;br /&gt;
pinMode(boutonIncrement, INPUT_PULLUP); // Bouton &amp;quot;+&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(boutonDecrement, INPUT_PULLUP); // Bouton &amp;quot;-&amp;quot; configuré en entrée avec résistance pull-up&lt;br /&gt;
pinMode(led1, OUTPUT); // Configuration de la LED comme sortie&lt;br /&gt;
pinMode(buzzer, OUTPUT); // Configuration du buzzer comme sortie&lt;br /&gt;
&lt;br /&gt;
// Configuration du servomoteur&lt;br /&gt;
servo.attach(servoPin);&lt;br /&gt;
&lt;br /&gt;
// Initialisation des sorties&lt;br /&gt;
digitalWrite(led1, LOW); // Éteindre la LED au démarrage&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteindre le buzzer au démarrage&lt;br /&gt;
servo.write(0); // Position initiale du servomoteur&lt;br /&gt;
&lt;br /&gt;
// Configuration de l'afficheur 7 segments&lt;br /&gt;
display.setBrightness(0x0f); // Réglage de la luminosité de l'afficheur&lt;br /&gt;
display.showNumberDec(bpm); // Affichage de la valeur initiale de BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
handleButtons(); // Gestion des boutons pour régler le BPM&lt;br /&gt;
metronomeTick(); // Gestion des ticks du métronome&lt;br /&gt;
display.showNumberDec(bpm); // Mise à jour de l'affichage du BPM&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void handleButtons() {&lt;br /&gt;
// Vérifie si le bouton &amp;quot;+&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonIncrement) == LOW) {&lt;br /&gt;
bpm = min(bpm + 1, maxBPM); // Augmente le BPM jusqu'à la limite maximale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le bouton &amp;quot;-&amp;quot; est pressé&lt;br /&gt;
if (digitalRead(boutonDecrement) == LOW) {&lt;br /&gt;
bpm = max(bpm - 1, minBPM); // Diminue le BPM jusqu'à la limite minimale&lt;br /&gt;
delay(200); // Délai pour éviter les rebonds du bouton&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void metronomeTick() {&lt;br /&gt;
unsigned long currentMillis = millis(); // Récupère le temps actuel&lt;br /&gt;
unsigned long interval = 60000 / bpm; // Calcul de l'intervalle entre chaque tick (en ms)&lt;br /&gt;
unsigned long interval_buzzer = 100; // Durée d'activation du buzzer&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le temps écoulé dépasse l'intervalle calculé&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval) {&lt;br /&gt;
previousMillis = currentMillis; // Met à jour le temps de référence&lt;br /&gt;
digitalWrite(buzzer, HIGH); // Active le buzzer&lt;br /&gt;
&lt;br /&gt;
if (servo_pos == false) {&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo.write(180); // Déplace le servomoteur à 180°&lt;br /&gt;
  servo_pos = true; // Change l'état du servomoteur&lt;br /&gt;
} else {&lt;br /&gt;
  servo.write(0); // Ramène le servomoteur à 0°&lt;br /&gt;
  digitalWrite(led1, HIGH); // Allume la LED&lt;br /&gt;
  servo_pos = false; // Change l'état du servomoteur&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Vérifie si le buzzer doit être éteint après son intervalle&lt;br /&gt;
if (currentMillis - previousMillis &amp;gt;= interval_buzzer) {&lt;br /&gt;
digitalWrite(led1, LOW); // Éteint la LED&lt;br /&gt;
digitalWrite(buzzer, LOW); // Éteint le buzzer&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Étapes de fabrication=&lt;br /&gt;
indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Définition des objectifs du projet====&lt;br /&gt;
* Utiliser le servo pour faire l'aiguille.&lt;br /&gt;
* Rendre le tempo réglable (40 à 200 BPM) avec des boutons &amp;quot;+&amp;quot; et &amp;quot;-&amp;quot;.&lt;br /&gt;
* Inclure un affichage numérique pour le tempo.&lt;br /&gt;
* Inclure un haut parleur pour faire le rythme.&lt;br /&gt;
* Utiliser une LED pour un repère visuel et la synchronisée et l'autre LED d'éclairage pour l’aiguille.&lt;br /&gt;
&lt;br /&gt;
====Préparation de l’environnement Arduino====&lt;br /&gt;
*[https://www.arduino.cc/en/software Télécharger et installer l'IDE Arduino] et [https://www.wikidebrouillard.org/wiki/Utiliser_le_D1_mini_avec_Arduino utiliser la procédure pour le wemos D1 mini]&amp;lt;br&amp;gt;&lt;br /&gt;
*Ajouter les bibliothèques Servo.h, ESP8266WiFi.h et TM1637Display.h.&amp;lt;br&amp;gt;&lt;br /&gt;
Servo.h : Cette bibliothèque permet de contrôler des servomoteurs à l'aide des cartes Arduino.&amp;lt;br&amp;gt;&lt;br /&gt;
ESP8266WiFi.h : Cette bibliothèque fait partie du core ESP8266 pour Arduino et fournit des fonctionnalités pour connecter votre ESP8266 à un réseau Wi-Fi, configurer des serveurs ou des clients.&amp;lt;br&amp;gt;&lt;br /&gt;
TM1637Display.h : Cette bibliothèque est conçue pour contrôler des modules d'affichage 7 segments à 4 chiffres basés sur le circuit TM1637, tels que le module Grove 4-Digit Display de Seeed Studio.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Préparation des matériaux====&lt;br /&gt;
Découper le carton selon le patron.&lt;br /&gt;
&lt;br /&gt;
====Montage des composants électroniques====&lt;br /&gt;
Brancher tout les composants selon le plan&lt;br /&gt;
&lt;br /&gt;
====Intégration dans la structure====&lt;br /&gt;
Coller les composants dans le carton à l'aide du pistolet à colle.&lt;br /&gt;
Veiller à ce que tous les câbles soient bien positionnés pour éviter les déconnexions.&lt;br /&gt;
Fixer la batterie rechargeable avec un câble d’alimentation accessible.&lt;br /&gt;
&lt;br /&gt;
====Validation fonctionnelle====&lt;br /&gt;
Vérifier que le système fonctionne correctement en mode autonome.&lt;br /&gt;
Tester le métronome à différents tempos pour s'assurer de la fiabilité du système.&lt;br /&gt;
Vérifier la synchronisation des LEDs, le bon affichage du tempo, et l’intensité variable de l’éclairage.&lt;br /&gt;
&lt;br /&gt;
====Rédaction du wiki====&lt;br /&gt;
Compléter les problèmes et solutions rencontrés pour aider la communauté.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
&lt;br /&gt;
=====Problème : Latence élevée=====&lt;br /&gt;
* Solution :Les instructions `delay()` ont été supprimées du code pour réduire la latence.&lt;br /&gt;
&lt;br /&gt;
=====Problème : Pas de son provenant du haut-parleur=====&lt;br /&gt;
* Solution : Une caisse de résonance a été ajoutée pour améliorer la qualité du son.&lt;br /&gt;
&lt;br /&gt;
=Sources et documentation complémentaire=&lt;br /&gt;
&lt;br /&gt;
=Élément de présentation=&lt;br /&gt;
je met ici le document de présentation de mon projet&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2024]]&lt;br /&gt;
&lt;br /&gt;
[[Catégorie:Enib2025]]&lt;/div&gt;</summary>
		<author><name>J2leroux</name></author>	</entry>

	</feed>