Réalisé par Thomas Guillemet et Charlotte Marabelle
Projet en cours… Réalisation d’une matrice réactive à la pression/flexion sur tissu
Principe intuitif:
– On démarre la matrice en touchant intuitivement le tissu.
– Des lumières et le son apparaissent de manière plus où moins aléatoire en fonction de l’interaction avec le tissu
– On joue avec des variations de sons et de lumières.
FLEXOMATRIX from Studio Objet Augmente on Vimeo.
Concept/Schématisation/Code
CONCEPT

Box matrice
Réalisation d’une matrice en 12 leds. Déclinaisons des champs de possibles ;
Typographies, Animations, Motifs, etc.

Box flexo
Réalisation d’une boite capteur de présence sur la surface en utilisant un flexomètre. + Interactions des deux boites
PRESSION>SON>LUMIÈRE
FLEXO>SPEAKER>MATRICE LEDS
MONTAGE
Pour ce projet nous avons utilisé :
1x Arduino Uno
12 x Leds de couleur ou blanche
1x Speaker
12 x Résistances de 220 Ohm
1 x Résistance de 10 kOhm
1 x Flexomètre
1 x Tissu
1 x Du fil (il est possible de récupérer du fil dans les cables ethernet)
2 x Boite en bois et une feuille de calque
SCHÉMATISATION
• Montage des leds en matrice, 12 leds sur les sorties PWM. avec leurs résistances
• Branchement du flexo sur l’analogue avec une résistance de 10k
• Le speaker sur le 5 volt et le tout relié à la masse
fichier_fritzing
SCHÉMA RAPIDE

CODE
Objectif: Faire interagir la matrice et le son selon la valeur captée puis mapée du flexomètre…
FLEXOMATRIX_evolution_3_CODE_ok




// Objectif faire varier le signale sonore et la matrice (à 12 leds) // en fonction de la valeur du flexometre
//Faire varier un signal sonore en fonction d'un flexomètre
//Faire varier la matrice en fonction d'un flexomètre (matrice=12leds)
#include <Tone.h> //libraries
Tone note; //utiliser la librairie TONE
//Déclare les variables int flexoValeur; int flexoValeurMap;
//Déclare les pins int flexo = A0; int speaker = 13;
//la matrice int led1 = 1; int led2 = 2; int led3 = 3; int led4 = 4; //definition des variables int led5 = 5; int led6 = 6; int led7 = 7; int led8 = 8; int led9 = 9; int led10 = 10; int led11 = 11; int led12 = 12;
//Espace entre les mots int espaceLettre=100; int finMot=1000;
void setup() {
note.begin(13); // captation de l'information par le flexo pinMode (flexo,INPUT);
//Déclare l'état des pins pinMode(speaker, OUTPUT);
pinMode(led1, OUTPUT); pinMode(led2, OUTPUT); pinMode(led3, OUTPUT); pinMode(led4, OUTPUT); pinMode(led5, OUTPUT); pinMode(led6, OUTPUT); pinMode(led7, OUTPUT); pinMode(led8, OUTPUT); pinMode(led9, OUTPUT); pinMode(led10, OUTPUT); pinMode(led11, OUTPUT); pinMode(led12, OUTPUT);
//Déclare le mode de comunication Serial.begin(9600); }
void loop() {
//Lit la valeur analogue du capteur
flexoValeur = analogRead(flexo);
//Map la valeur du flexomètre pour l'appliquer au speaker flexoValeurMap = map(flexoValeur, 0, 1024, 0, 255);
//Affiche les valeurs dans le serial moniteur
Serial.print("flexoValeur =");
Serial.print(flexoValeur);
Serial.print("\t");
Serial.print("flexoValeurMap =");
Serial.println(flexoValeurMap);
//TOUT
if (flexoValeurMap<133 || flexoValeurMap>104) {
debut();
}
////lettre A
if (flexoValeurMap<110 && flexoValeurMap>105) {
debut();
pression1();
}
//lettre B
if (flexoValeurMap<115 && flexoValeurMap>110) {
debut();
pression2();
}
//lettre C
if (flexoValeurMap<120 && flexoValeurMap>115) {
debut();
pression3();
}
//lettre Smile
if (flexoValeurMap<125 && flexoValeurMap>120) {
debut();
pression4();
}
//lettre Smile normale
if (flexoValeurMap<130 && flexoValeurMap>125) {
debut();
pression5();
}
//lettre Smile BAD
if (flexoValeurMap<132 && flexoValeurMap>130) {
debut();
pression6();
}
}
void debut(){
note.stop();
digitalWrite(led1, LOW);// éteindre matrice "tout"
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
digitalWrite(led5, LOW);
digitalWrite(led6, LOW);
digitalWrite(led7, LOW);
digitalWrite(led8, LOW);
digitalWrite(led9, LOW);
digitalWrite(led10, LOW);
digitalWrite(led11, LOW);
digitalWrite(led12, LOW);
}
void pression1() {
digitalWrite(led1, HIGH); // allume matrice "A"
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led7, HIGH);
digitalWrite(led9, HIGH);
digitalWrite(led10, HIGH);
digitalWrite(led11, HIGH);
digitalWrite(led12, HIGH);
note.play(NOTE_C4);
}
void pression2() {
digitalWrite(led2, HIGH); // allume matrice "B"
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led8, HIGH);
digitalWrite(led9, HIGH);
digitalWrite(led12, HIGH);
note.play(NOTE_C5);
}
void pression3() {
digitalWrite(led1, HIGH); // allume matrice "C"
digitalWrite(led2, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led9, HIGH);
digitalWrite(led10, HIGH);
digitalWrite(led11, HIGH);
note.play(NOTE_A4);
}
void pression4() {
digitalWrite(led1, HIGH); // allume matrice "smile sourire"
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led10, HIGH);
digitalWrite(led12, HIGH);
note.play(NOTE_F4);
}
void pression5() {
digitalWrite(led4, HIGH); // allume matrice "smile langue"
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led10, HIGH);
digitalWrite(led12, HIGH);
digitalWrite(led1, HIGH);
digitalWrite(led2, HIGH);
note.play(NOTE_G4);
}
void pression6() {
digitalWrite(led1, HIGH); // allume matrice "smile BAD"
digitalWrite(led3, HIGH);
digitalWrite(led4, HIGH);
digitalWrite(led5, HIGH);
digitalWrite(led6, HIGH);
digitalWrite(led10, HIGH);
digitalWrite(led12, HIGH);
note.play(NOTE_F4);
}
void pression() {
}
ps* les possibilités de variations pour la matrice sont infinies et la video n’est qu’un exemple arbitraire









