Table de Mixage pour images

Porteur(s) du projet : Léa Hermann (DSAA DG2), Damien MUTI (Prof. de Numérique)

Date : 06/2021

Contexte : Macro-Projet

Fichiers :

Liens :

Capteurs/Actionneurs :

5 potentiomètres

1 carte Arduino Uno

Intentions : explication du projet et objectifs

L'objectif est de construire une table de mixage avec des boutons qui permettent à l’observateur de faire des réglages sur l’image comme pourrait le faire un logiciel de retouche (photoshop). Ainsi, le spectateur peut se rendre compte que les réglages ont une incidence sur la perception et le sens de l’image. Chaque bouton permet de modifier les contrastes, les couleurs ou encore la luminosité...

Algorithme

La carte Arduino mesure la valeur donnée par chacun des 5 potentiomètres. Elle envoie ensuite chacune des valeurs via le port série vers le programme Processing qui gère le visuel. Le programme Processing récupère les 5 valeurs envoyées par la carte et les considère chacune comme 5 paramètres permettant de faire varier : rouge, vert, bleu, saturation, le paramètre d’un filtre de l’image.

Montage Arduino

Câblage

Le montage comportant 5 potentiomètres est le suivant :

le fichier Fritzing correspondant est le suivant : montage_5_potentiometres.fzz.zip

Programmes Arduino

Le code permettant de mesurer les valeurs sur les 5 potentiomètres et de les envoyer via le port série est le suivant :

tablemixagearduino.zip

int Sensor [ ] = {0, 0, 0, 0, 0};
byte N = 5;
int inByte = 0; // incoming serial byte
boolean debug = false;
void setup() {
// création du tableau Sensor
// Sensor = malloc(N*sizeof(int));
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
establishContact(); // send a byte to establish contact until receiver responds
}
void loop() {
for (int i = 0; i < N; i++) {
//lire la valeur du capteur
Sensor [i] = map(analogRead(i), 0, 1023, 0, 255);
//envoyer la valeur
if (debug) {
Serial.print("Sensor[");
Serial.print(i);
Serial.print("]=");
Serial.print(Sensor[i]);
Serial.print(" ");
}
else {
Serial.write(Sensor[i]);
}
}
if (debug) {
Serial.println("");
}
}
void establishContact() {
while (Serial.available() <= 0) {
Serial.print('A'); // send a capital A
delay(300);
}
}

Programme Processing

Réalisation de la maquette et visuels

Références :

La documentation sur les filtres d'images Processing est la suivante :

PImage > filter