Le projet :
Faire interagir les visiteurs de la mac+ sur un projet alliant le physique et le virtuel.
L’objectif etant d’obtenir un moirage graphique par le deplacement aleatoire de zone de pixel sur une image.
Comment intervient l’utilisateur dans le processus: une assise avec des capteurs permet de transformer une image prise en capture d’écran lors d’une video prise en live à l’aide d’une webcam. A tout moment l’individu peut prendre en photo et enregistrer l’image pour la figer dans l’etat et l’imprimer.
les Outils :
Logiciel processing Carte Arduino Uno, Un coussin connecté (contenant un capteur de pression) sur le quel l’utilisateur vient s’assoir et se mouvoir.
Le résultat :
Une chaine physique et virtuel pour produite un autoportrait numerique.
Le code:
import cc.arduino.*;
import processing.serial.*;
import processing.video.*;
PImage reference;
;
boolean capture = false;
boolean display = false;
Capture cam;
int i=0;
Arduino monArduinoEstLeMeilleur;
float valeurPotentiometre;
float valeurPotentiometreMap;
int a = int(random(0, 1280));
int b = int(random(0, 700));
int c = int(random(0, valeurPotentiometreMap));
int d = int(random(0, valeurPotentiometreMap));
int w = int(random(0, 1280));
int x = int(random(0, 700));
int y = int(random(0, valeurPotentiometreMap));
int z = int(random(0, valeurPotentiometreMap));
void setup() {
size(1280, 700);
frameRate(1000);
String[] cameras = Capture.list();
if (cameras.length == 0) {
println(« There are no cameras available for capture. »);
exit();
} else {
println(« Available cameras: »);
for (int i = 0; i < cameras.length; i++) {
println(cameras[i]);
}
// The camera can be initialized directly using an
// element from the array returned by list():
cam = new Capture(this, cameras[0]);
cam.start();
}
println(Arduino.list());
monArduinoEstLeMeilleur = new Arduino(this, Arduino.list()[7], 57600);
}
void draw() {
// récupération de la valeur du coussin
valeurPotentiometre = monArduinoEstLeMeilleur.analogRead(0);
valeurPotentiometreMap = map(valeurPotentiometre, 955, 815, 0, 50);
println(valeurPotentiometreMap);
if (cam.available() == true) {
cam.read();
}
if (capture==true && display == false) {
image(reference, 0, 0);
display = true;
}
if (capture==true && display == true) {
copy(a, b, c, d, w, x, y, z);
a = int(random(0, 1280));
b = int(random(0, 700));
c = int(random(0, valeurPotentiometreMap));
d = int(random(0, valeurPotentiometreMap));
w = int(random(0, 1280));
x = int(random(0, 700));
y = int(random(0, valeurPotentiometreMap));
z = int(random(0, valeurPotentiometreMap));
} else {
image(cam, 0, 0);
}
}
void keyPressed() {
if (key == ‘c’ || key == ‘C’){
capture = !capture;
saveFrame(« data/portrait.jpg »);
reference = loadImage(« data/portrait.jpg »);
image(reference, 0, 0);
}
if (key == ‘s’ || key == ‘S’){
save(i+ »portrait.jpg »);
i++;
delay(100);
}
}