Outils pour utilisateurs

Outils du site


wiki:projets:boite-a-gestes:boite-a-gestes

LA BOITE A GESTES

Didascalies augmentées pour l'atelier de théâtre

Présentation

Didascalie:

  • dans l'Antiquité, en Grèce, indication manuscrite adressée par l'auteur aux interprètes de sa pièce
  • dans un texte de pièce de théâtre ou un scénario, notice définissant le comportement que doit adopter l'acteur

———————————————————–

La Boîte à Gestes est un projet qui vise à montrer l’importance des gestes que nous faisons lors d’une prise de parole. En effet, notre communication est basée sur notre langage oral mais aussi sur notre langage corporel. Ces différents gestes complètent ou renforcent le discours oral en apportant des informations complémentaires.

La Boîte à Gestes est donc pensée comme un outil permettant de donner une matérialité aux différents gestes. Se présentant sous la forme d’un kit, la Boîte à Gestes est un dispositif permettant d’intégrer le geste dans l’espace de l’écriture. Contenant des tampons illustrant différents gestes et autant de modules reprenant ces derniers qui permettent de déclencher, par l’intermédiaire d’une carte Arduino, une action à l’écran en les insérant dans les orifices percés dans la boîte, la Boîte à Gestes permet d’augmenter le texte. Le geste contenu dans le texte peut être écrit et lu, grâce aux tampons, mais peut aussi être perçu, ressenti par l’émotion qu’il qualifie. En effet, lorsqu’un des modules est inséré dans la boîte, il déclenche une action à l’écran: un son, une image, une vidéo… Par ce moyen, l’intention que véhicule le geste est re-transmise à l’écran.

Pensé principalement pour le domaine du théâtre, le kit, destiné au metteur en scène, permet d’annoter le texte de didascalies augmentées. Ainsi, grâce à la Boîte à Gestes les différents comédiens pourront voir, ressentir l’émotion à faire passer et donc plus facilement s’immerger dans la scène à interpréter.

Grâce à ce kit, il est ainsi question de penser le geste sous une forme écrite par l’intermédiaire des tampons pour que ce dernier puisse conserver une trace sur la durée; mais également sous une forme plus interactive et personnelle, grâce aux modules et au programme informatique, dans la mesure où un geste appelle une émotion qui reste néanmoins propre à chacun de nous. Ainsi, une même phrase pouvant être perçue différemment suivant le geste qui l’accompagne, la Boîte à Gestes permet de choisir, de montrer et d'enrichir celui qui conviendra à la situation suivant les choix du metteur en scène.

Contenu

La boite à gestes contient:

  • 1 notice
  • 6 modules mains
  • 6 tampons
  • 1 encreur rouge
  • Des autocollants
  • 1 nécessaire Arduino (Arduino/breadboard/carte connecteurs/résistances/fils…)
  • Fiches exemples

Montage du circuit Arduino

Codes PROCESSING / ARDUINO

Processing

// Pour la communication Série avec la carte Arduino
import processing.serial.*;
import processing.video.*;
Serial myPort;

// Défini le nombre de Pins entrée, et défini leur état comme "éteinds"
int nbPins = 6;
boolean afficher[] = {false, false, false, false, false, false};

// Ressources qui seront affichées à l'écran
String ressources[] = {
  "1.gif", // Mettre ici le nom du fichier qui sera ouvert lorsque les touches sont touchées
  "2.gif", // ""
  "3.gif", // ""
  "4.mov", // ""
  "5.jpg", // ""
  "6.jpg" // ""
};
PImage images[];
Movie videos[];

void setup() {  // L'ensemble des paramètres qui suivent sont appelés durant toute l'éxécution du programme
  // Initialisation de la fenêtre
  size(800, 600); // Taille de la fenêtre
  background(255); // Couleur de l'arrière-plan
  
  // Liste les ports séries puis écoute le port COMX
  println(Serial.list());
  String portName = Serial.list()[2]; // 0 ou 1, suivant l'ordinateur
  myPort = new Serial(these, portName, 9600);
  
  // Créé les tableaux vides de taille 6
  images = new PImage[6];
  videos = new Movie[6];
  
  // Chargements des ressources
  for (int i = 0, i < nbPins; i++) {
    // Images 
    if (ressources[i].indexOf("gif") != -1 || ressources[i].indexOf("jpg") != -1) {
      images[i] = loadImage(ressources[i]);
    }
    // Vidéos
    else if (ressources[i].indexOf("mov") != -1) {
      videos[i] = new Movie(this, ressources[i]);
      videos[i].noLoop();
    }
  }
}

void draw() { // Le contenu de cette fonction est appelé en boucle.
  // Communication avec l'Arduino
  serialEvent(myPort);
  
  // Affiche qql chose à l'écran si un bouton est touché
  boolean dessine = false;
  for (int i = 0; i < nbPins; i++) {
    if (afficher[i]) {
      // Image
      if (ressources[i].indexOf("gif") != -1 || ressources[i].indexOf("jpg") != -1) {
        image(images[i], 0, 0);
        dessine = true;
      }
      // Vidéo
      else if (ressources[i].indexOf("mov") != -1) {
        image(videos[i]; 0; 0);
        dessine = true;
      }
    }
  }
  if (!dessine)
    background(255);
}

void serialEvent(Serial myPort) { // Communication avec la carte Arduino
  while (myPort.available() > 0) { // Exécute le code de la boucle tant qu'il y a des données reçues non traitées
    int inByte = myPort.read(); // Récupère le prochain octet de donnée provenant du port série
 
    // Si on touche la résistance > Lettres majuscules -> activation
    if (inByte >= 'A' && inByte < 'A' + nbPins) {
      // Change l'état de la forme
      afficher[inByte - 'A'] = true;
      
      // Vidéo
      int i = inByte - 'A';
      
      if (ressources[i].indexOf("mov") != -1) {
        videos[i].stop();
        videos[i].play();
      }
    }
    // Si on ne touche pas la résistance > 0 -> désactivation
    else if (inByte == 0) {
	  // Change l'état de la forme
      for (int i = 0, i < nbPins; i++)
   	    afficher[i] = false;
    }
  }
}

// Mise à jour de la vidéo
void movieEvent(Movie m) {
  m.read();
}

Arduino

// Définitions des Pins entrées
int nbPins = 6;
int etatsPins[] = {0, 0, 0, 0, 0, 0};
int pinsQuiMarchent[] = {3, 4, 5, 7, 9, 12};

// Code d'initialisation: éxécuté 1 fois au lancement du programme
void setup() {
  // Ouvre le port série et fixe le début de communication avec l'ordinateur
  Serial.begin(9600);
  
  // Communication avec les Pins
  for (int i = 0; i < nbPins; i++)
    pinMode(pinsQuiMarchent[i], INPUT);
}

// Si on appuie sur un des Pins déclenche qql chose à l'écran
void reinit(boolean envoi) {
  boolean chgt = false;
  for (int i = 0, i < nbPins, i++) {
    if (etatsPins[pinsQuiMarchent[i]] != 1) {
      etatsPins[pinsQuiMarchent[i]] = 1;
      chgt = true;
    }
  }
  if (chgt && envoi)
  
  // Envoie par le port série l'état de la résistance.
    Serial.write('0');
}

// Boucle sans fin: éxécutée sans fin et en boucle tant que l'Arduino est connectée à l'ordinateur
void loop() {
  boolean touche = false;
  
  // Pour chaque Pins
  for (int i = 0; i < nbPins; i++) {
    int pin = pinQuiMarchent[i];
    
    // Regarde si on appuie (1) ou non (0)
    if (digitalRead(pin) == 1) { // appuie
      touche = true;
      // Si on est pas en train d'appuyer
      if (etatPins[pin] == 0) {
        // Arrete d'appuyer les autres
        reinit(false);
        
        // Envoi à processing et retient
        Serial.write('A' + i);
        etatsPins[pin] = 2;
      }
    }
  }
  // Quand on arrête d'appuyer -> réinitialisation de la page = page blanche
  if (touche)
    reinit(true);
  
  // attends 5ms
  delay(5);
}

Contact

Mélanie Lacroix / 06.05.36.83.94 / lacroix-melanie@hotmail.fr

Espace d'échanges

Ecrivez ici vos remarques et vos questions! =) super!!! :-) acc

wiki/projets/boite-a-gestes/boite-a-gestes.txt · Dernière modification: 2015/07/07 18:13 (modification externe)