« Art Sciences 2025/2026 E14 » : différence entre les versions
| (6 versions intermédiaires par le même utilisateur non affichées) | |||
| Ligne 26 : | Ligne 26 : | ||
Disposition modulaire : L'alignement de 15 servomoteurs sur deux rangées face à face permet d'étudier la gestion des vibrations mécaniques et l'efficacité énergétique, thèmes centraux de la collaboration avec Polytech. | Disposition modulaire : L'alignement de 15 servomoteurs sur deux rangées face à face permet d'étudier la gestion des vibrations mécaniques et l'efficacité énergétique, thèmes centraux de la collaboration avec Polytech. | ||
[[Fichier:Proc.jpg|gauche|sans_cadre]] | Journal de bord : Atelier Co-création Arts et Sciences | ||
[[Fichier:Videodemonstration.mov| | |||
Mardi 27 janvier | |||
Initialement, je souhaitais utiliser du bioplastique pour mon projet. J'ai rencontré Corentin pour tester la faisabilité de mes échantillons. Cependant, après plusieurs essais, nous n'avons pas pu garantir la durabilité du matériau sur toute la durée de l'exposition. J'ai donc décidé d'abandonner cette piste pour pivoter vers un nouveau concept. | |||
Mercredi 28 janvier | |||
Après discussion avec Hugo, j'ai lancé un nouveau projet combinant servomoteurs et boîte à musique. J'ai conçu la plaque de support pour les moteurs à l'aide de la découpeuse laser. En collaboration avec Chaymae, j'ai commencé à étudier le système de pilotage des 30 servomoteurs. | |||
Jeudi 29 janvier | |||
Avec Chaymae, nous avons poursuivi l'assemblage électronique. Nous avons connecté les 30 moteurs à l'Arduino et travaillé sur le code de programmation pour synchroniser les mouvements et permettre l'exécution des fichiers MIDI. | |||
Voici le code utilisé et les résultats obtenus : <syntaxhighlight lang="cpp"> | |||
#include <Wire.h> | |||
#include <Adafruit_PWMServoDriver.h> | |||
Adafruit_PWMServoDriver pwm1 = Adafruit_PWMServoDriver(0x40); | |||
Adafruit_PWMServoDriver pwm2 = Adafruit_PWMServoDriver(0x41); | |||
#define NB_SERVOS 15 | |||
#define SERVOMIN 110 | |||
#define SERVOMAX 500 | |||
uint16_t angleToPWM(int angle) { | |||
return map(angle, -30, 30, SERVOMIN, SERVOMAX); | |||
} | |||
void setup() { | |||
Wire.begin(); | |||
pwm1.begin(); | |||
pwm1.setPWMFreq(50); | |||
pwm2.begin(); | |||
pwm2.setPWMFreq(50); | |||
// ÉTAT INITIAL : tous les servos à 0° | |||
for (uint8_t i = 0; i < NB_SERVOS; i++) { | |||
pwm1.setPWM(i, 0, angleToPWM(0)); | |||
pwm2.setPWM(i, 0, angleToPWM(0)); | |||
} | |||
delay(1000); | |||
} | |||
void loop() { | |||
int posPCA1[] = { -15, 0 }; // PCA9685 #1 | |||
int posPCA2[] = { 0, 15 }; // PCA9685 #2 | |||
for (uint8_t p = 0; p < 2; p++) { | |||
// 15 servos du PCA9685 #1 | |||
for (uint8_t i = 0; i < NB_SERVOS; i++) { | |||
pwm1.setPWM(i, 0, angleToPWM(posPCA1[p])); | |||
} | |||
// 15 servos du PCA9685 #2 | |||
for (uint8_t i = 0; i < NB_SERVOS; i++) { | |||
pwm2.setPWM(i, 0, angleToPWM(posPCA2[p])); | |||
} | |||
delay(1500); | |||
} | |||
} | |||
</syntaxhighlight>[[Fichier:Proc.jpg|gauche|sans_cadre]][[Fichier:Processus wh.jpg|sans_cadre]][[Fichier:Videodemonstration.mov|sans_cadre|gauche]][[Fichier:Processwh.jpg|sans_cadre]] | |||
[[Fichier:Finvideowh.mov|sans_cadre]] | |||
Version actuelle datée du 3 février 2026 à 23:04
Formes plastiques envisagées
L'installation se présente comme une structure hybride où la mécanique est renversée pour donner naissance à une forme organique.
Le Cœur Mécanique (Partie inférieure) : L'Unité de Traduction Sensorielle
Cette section constitue le moteur central de l'œuvre, où le code virtuel devient une présence acoustique. Elle se compose d'un mécanisme d'orgue de barbarie (Music Box) de 30 notes, piloté par un Arduino Mega et deux modules PCA9685 gérant 30 servomoteurs.
Processus de traduction MIDI en mouvement : L'unité centrale interprète les données d'un fichier MIDI en temps réel. Chaque note musicale du fichier est extraite et convertie en une instruction numérique précise. Cette instruction est ensuite transmise aux servomoteurs qui agissent comme des "doigts mécaniques". Ce passage du binaire au mécanique illustre une véritable traduction de la pensée informatique vers une action physique.
Mécanisme de percussion à 30 notes : Chaque servomoteur est équipé d'un levier (une extension) conçu sur mesure pour percuter les lames métalliques de la boîte à musique. Lorsque le fichier MIDI commande une note, le servomoteur correspondant effectue une rotation rapide de 30 degrés pour actionner la note précise sur le peigne de 30 notes. La précision du module PCA9685 permet de respecter scrupuleusement le rythme, la polyphonie (plusieurs notes jouées simultanément) et la nuance de la composition originale.
3. Croquis et visuels préparatoires
Ce volet présente le schéma technique des servomoteurs et l'étude du mouvement :
Programmation du mouvement en 4 étapes : [Repos (0°) → Percussion (+30°) → Retrait (-15°) → Retour (0°)].
Disposition modulaire : L'alignement de 15 servomoteurs sur deux rangées face à face permet d'étudier la gestion des vibrations mécaniques et l'efficacité énergétique, thèmes centraux de la collaboration avec Polytech.
Journal de bord : Atelier Co-création Arts et Sciences
Mardi 27 janvier
Initialement, je souhaitais utiliser du bioplastique pour mon projet. J'ai rencontré Corentin pour tester la faisabilité de mes échantillons. Cependant, après plusieurs essais, nous n'avons pas pu garantir la durabilité du matériau sur toute la durée de l'exposition. J'ai donc décidé d'abandonner cette piste pour pivoter vers un nouveau concept.
Mercredi 28 janvier
Après discussion avec Hugo, j'ai lancé un nouveau projet combinant servomoteurs et boîte à musique. J'ai conçu la plaque de support pour les moteurs à l'aide de la découpeuse laser. En collaboration avec Chaymae, j'ai commencé à étudier le système de pilotage des 30 servomoteurs.
Jeudi 29 janvier
Avec Chaymae, nous avons poursuivi l'assemblage électronique. Nous avons connecté les 30 moteurs à l'Arduino et travaillé sur le code de programmation pour synchroniser les mouvements et permettre l'exécution des fichiers MIDI.
Voici le code utilisé et les résultats obtenus :
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
Adafruit_PWMServoDriver pwm1 = Adafruit_PWMServoDriver(0x40);
Adafruit_PWMServoDriver pwm2 = Adafruit_PWMServoDriver(0x41);
#define NB_SERVOS 15
#define SERVOMIN 110
#define SERVOMAX 500
uint16_t angleToPWM(int angle) {
return map(angle, -30, 30, SERVOMIN, SERVOMAX);
}
void setup() {
Wire.begin();
pwm1.begin();
pwm1.setPWMFreq(50);
pwm2.begin();
pwm2.setPWMFreq(50);
// ÉTAT INITIAL : tous les servos à 0°
for (uint8_t i = 0; i < NB_SERVOS; i++) {
pwm1.setPWM(i, 0, angleToPWM(0));
pwm2.setPWM(i, 0, angleToPWM(0));
}
delay(1000);
}
void loop() {
int posPCA1[] = { -15, 0 }; // PCA9685 #1
int posPCA2[] = { 0, 15 }; // PCA9685 #2
for (uint8_t p = 0; p < 2; p++) {
// 15 servos du PCA9685 #1
for (uint8_t i = 0; i < NB_SERVOS; i++) {
pwm1.setPWM(i, 0, angleToPWM(posPCA1[p]));
}
// 15 servos du PCA9685 #2
for (uint8_t i = 0; i < NB_SERVOS; i++) {
pwm2.setPWM(i, 0, angleToPWM(posPCA2[p]));
}
delay(1500);
}
}