Affiche Tactile

Porteur du projet : Camille Cornec, Manon Ménard, Anaëlle Couëllan, Aygul Razyapova, Maïwenn Renault, Tanguy Vanlaeys, Flora Wierzbicki

Date : du mardi 10 novembre au vendredi 11 décembre 2015

Contexte : Médiation graphique d'œuvres artistiques présentées dans le cadre de l'exposition Histoires Parallèles.

Anne-Valérie GASC / Bouquet Final

Tour Genêt, Tour Hortensia, Tour Iris (série Bouquet Final) 2011 Sérigraphie à la poudre de béton de la Tour Genêt démolie à l’explosif le 26 juin 2011 à Meaux, 70 x 100 cm 8 tirages + 2 épreuves d’artiste, Les Éditions du Tingre, Marseille, 2011

Description & Problématique

Nous avons choisis de faire la médiation de Bouquet Final de Anne-Valérie GASC. Il s’agit d’un triptyque de sérigraphie imprimé à base de la poudre de béton des trois immeubles représentés : La tour Iris, la tour Genêt, la tour Hortensia, toutes détruites à Meaux à l’explosif le 26 juin 2011.

L’éphémère, la destruction créative, et la trace sont des notions qui nous semblaient intéressantes d’investir dans notre production.

En écho au propos d’Anne Valérie GASC, nous avons voulu travailler sur l’actualité, et mettre en évidence la fréquence des démolitions d’immeubles en France. De fait, nous avons produit une affiche tactile reliée à un haut parleur et à une imprimante thermique.

Sur l’affiche sont représentés des fragments d’immeubles détruits ou allant être détruits cette année. Au toucher, le visiteur déclenche l’impression de son ticket témoin.
Cette impression est accompagnée d’un son de démolition si l’immeuble est détruit, ou de bruits quotidiens si la démolition est en cours.

Le visiteur est invité à emporter le ticket avec lui : il représente l’unique trace de la démolition.
L’imprimante thermique renvoie aux imprimantes de tickets de caisse, et évoque ainsi la politique du tout jetable. L’impression thermique est quant à elle destinée à disparaître.

Technique

D’un point de vue technique, cette production a été possible grâce à un circuit en cuivre au dos de l’affiche relié à la carte arduino (circuit imprimé + micro-contrôleur sur lequel un programme est enregistré). Un module son a été fixée à celle-ci pour pouvoir y stocker les sons.
Le passage du courant s’effectue quant à lui grâce à des capteurs capacitifs, sur l’affiche (boutons tactiles en cuivre).

Matériaux

Carte Arduino

Imprimante thermique

Scotch de Cuivre

Papiers

Papiers thermiques

Boite-caisson

Câbles jumpers

Module capacitif (MPR121QR2)

Enceintes

Alimentation 9V

Breadboard

Module son (DFPlayer Mini)

8 pinces croco

Projet

Restitution des démarches

Organisation du groupe:
Semaine 1: Recherches créatives
Semaines 2: Recherches encre thermosensible : grossiste, coût, contraintes
Semaines 3: Changement d'avis : volonté d'utiliser une imprimante thermique. Recherches d'un programme permettant une automatisation d'impression.
Semaine 4: Division du groupe. Flora, Maïwenn, Anaëlle, et Tanguy collectent des informations relatives aux différentes destructions (textes, photos). Aygul, Manon, Camille s'occupent de la partie technique : circuit, tests du code avec l'équipe de Réso-nance
Semaine 5: Flora, Manon, Camille et Aygul continuent la collecte des informations. Maïwenn et Anaëlle s'occupent de la réalisation du meuble et de son emplacement dans l'espace d'exposition. Tanguy s'occupe de la réalisation graphique de l'affiche.
Semaine 6: Peaufinage du code, impression et réalisation du circuit en cuivre de l'affiche et assemblage du meuble.

Cahier des charges
Techniques et problèmes rencontrés:
Difficulté à trouver quel software utiliser pour permettre une automatisation d'impression en série via l'imprimante thermique. Premières pistes trouvées auprès de Guillaume Bertrand, graphiste-ingénieur dans le collectif 3615 senor, à Besançon. Programmation sur OpenFrameworks : niveau de programmation trop élevé pour notre niveau.
Marion Estavoyer du LFO, FabLab de la Friche, nous informe qu'elle a déjà utilisé le logiciel OS X “Automator” pour de l'automatisation d'impression en série via une imprimante basique. L'imprimante thermique marche seulement lorsqu'elle est branchée sur une carte type Arduino : elle ne peux pas se brancher directement à un ordinateur.
Grâce à des échanges avec l'équipe de Réso-nance Numérique, automatisation d'impression envisageable avec Processing.

Solutions choisies:
L'obligation d'utiliser la carte Arduino dans le circuit avec l'imprimante rendait le circuit plus simple en programmant l'automatisation via le sofware Arduino directement.

Problèmes rencontrés:
Dans un premier temps, nous voulions utiliser un circuit en graphite au dos de l'affiche pour pouvoir retrouver l'esthétique brute des logements sociaux. Il s'est avéré que ce type de circuit n'était pas totalement stable car la répartition du graphite dans la colle est non uniforme.
Mauvaise isolation du circuit en cuivre car peinture du meuble pas tout à fait sèche.
Instabilité du module capacitif car mal isolé (effet antenne malvenu). Besoin d'avoir accès à la prise du courant pour pouvoir rebooter l'Arduino en cas de bug lors de l'installation.

Programme & circuit

Circuit

Avant de commencer le circuit, voici quelques informations sur ses différents composants :

L'imprimante thermique imprime grâce à une source d'alimentation (ici, 9V). Un signal électrique est alors envoyé la tête d’impression, elle-même constituée d’un ensemble de micro résistances, qui provoquent un point de chaleur. La chaleur noircit le papier thermique : on obtient ainsi l'impression. Les informations à imprimer sont communiquées à l'imprimante via l'Arduino, branchée à l'imprimante par des câbles jumper.
Notice pour imprimante thermique Raspberry :
http://tronixstuff.com/2011/07/08/tutorial-arduino-and-a-thermal-printer/
http://www.gotronic.fr/pj-1134.pdf

Le DFPlayer Mini (module son) est un petit module MP3 peu coûteux avec une sortie simplifiée haut-parleur. Il peut prendre en charge jusqu'à 100 dossiers, chaque dossier pouvant contenir jusqu'à 255 chansons.
Pour ajouter des sons, il suffit de les enregistrer dans un dossier sur la carte SD amovible qui est fixée sur ce dernier. Il faudra ensuite les appeler depuis le programme pour les actionner.
Plus d'informations :
http://www.dfrobot.com/wiki/index.php/DFPlayer_Mini_SKU:DFR0299

Le module capacitif MPR121QR2 est un contrôleur de capteur tactile capacitif qui rend très facile l'intégration de la détection tactile dans un projet. Il communique par l'intermédiaire d'un I2C, et fonctionne en mesurant la capacité de douze points de l'électrode. Quand un objet est près du connecteur d'électrode, les capacités mesurées changent : cela indique que quelque chose a touché le “bouton”.
Plus d'informations :
https://learn.adafruit.com/adafruit-mpr121-12-key-capacitive-touch-sensor-breakout-tutorial/overview
https://learn.sparkfun.com/tutorials/mpr121-hookup-guide

Se munir de l'affiche préalablement imprimée ainsi que d'un support rigide A2.
Ensuite, trouer l'affiche aux endroits souhaités : ces trous feront office de “boutons”.

Il s'agit dans un premier temps de téléverser le programme sur la carte Arduino, dans l'IDE (Interface de développement) d'Arduino. Le programme associe à chaque touche un son et un texte qui sera imprimé.
Ensuite, effectuer les branchements en branchant tous les composants sur une breadboard.

Connecter ensuite l'imprimante à la carte Arduino elle-même reliée à la breadbord sur laquelle est disposé le module son (DFPlayer Mini SKU:DFR0299) ainsi que le module capacitif (MPR121QR2). Faire partir 8 câbles jumper du module. Brancher 8 pinces crocos sur chaque câble jumper.

Sur la surface rigide, disposer des bandes de scotchs de cuivre là ou seront situés les trous l'affiche.
Relier les bandes de cuivres aux pinces crocos : le module capacitif va permettre d'actionner les sons et l'impression lors du simple touché du doigt.

Présentation du programme
Algorithmes:

Lorsque un bouton est touché, le programme va associer le numéro du bouton à un son et à une classe d'impression.
Le programme va chercher le son dans la carte SD fixée sur le module son et l'envoyer à l'enceinte depuis ce dernier.
Le programme va chercher l'impression dans la classe relative à la touche : texte et mise en page y sont détaillés
Chaque contact sur les boutons tactiles vont être mis en attente si l'action en cours n'est pas terminée.

Tutoriel

Télécharger Arduino
Tuto arduino : http://eskimon.fr/ebook-tutoriel-arduino

Code Arduino

// CONNECTIONS CAPACITIF mrp 121 : a5>scl A4>sda 3.3V GND
// CONNECTIONS MP3 (coté droit en regardant le module vu de dessus carte sd en bas): 1:5V 2:1Kohm>D1 3:1Kohm>D0 6:speaker- 7:GND 8:SPEAKER+
// CONNECTIONS IMPRIMANTE THERMIQUE : D2,D3...
// la documentation sur l'imprimante thermale est disponible sur : http://www.gotronic.fr/pj-1134.pdf
// toutes les options de mises en forme (surligné, gras, sousligné, etc...) y sont disponibles
// le tutoriel arduino sur l'imprimante thermique: http://tronixstuff.com/2011/07/08/tutorial-arduino-and-a-thermal-printer/
// LIB MP3 - gestion de la carte son
#include <SoftwareSerial.h> // appel de la librairie permettant la communication en série
#include <DFPlayer_Mini_Mp3.h> // appel du module son
// LIB PRINT - gestion de l'imprimate thermique
// gestion du code barre
SoftwareSerial Thermal(2, 3); //création de l'instance de la classe “Thermal” pour permettre l'impression thermique
int zero=0; //variable zero = 0
int heatTime = 80; //variable heatTime = 0
int heatInterval = 255; //variable heatInterval = 255
char printDensity = 15; //densité de l'impression des caractères
char printBreakTime = 15; //pause de l'impression des caractères
const char barCode[]={ '9','2','3','0','5','6','4','8','9','8','4','4'}; //constante du caractère code barre
const char barCodeauvergne[]={ 'A','U','V','E','R','G','N','E'}; //constante du caractère code barre d'Auverge
const char barCodebarredm[]={ 'B','A','R','R','E','D','M','A','R','R','E'}; //constante du caractère code barre de Marre
const char barCodebordeaux[]={ 'B','O','R','D','E','A','U','X','7','0','M','E','T','R','E','S'}; //constante du caractère code barre de Bordeaux
const char barCodecroix[]={'C','R','O','I','X'}; //constante du caractère code barre de Croix
const char barCodeelbeuf[]={'E','L','B','E','U','F'}; //constante du caractère code barre de Elbeuf
const char barCodelyon[]{'I','M','M','E','U','B','L','E','B','1','0','L','Y','0','N'}; //constante du caractère code barre de Lyon
const char barCodemeru[]={'M','E','R','U'}; //constante du caractère code barre de Meru
const char barCodenanterre[]={'N','A','N','T','E','R','R','E'}; //constante du caractère code barre de Nanterre
// MRP121 - Gestion du module capacitif composée de 12 "boutons" tactiles
// voir : https://learn.adafruit.com/adafruit-mpr121-12-key-capacitive-touch-sensor-breakout-tutorial/wiring
// protocole de transfert I2C entre la carte ARduino et la carte tactile: https://fr.wikipedia.org/wiki/I2C
#include <Wire.h> //appel d'une librairie permettant de communiquer avec les périphériques TWI I2C
#include "Adafruit_MPR121.h"//appel de du module capacitif
Adafruit_MPR121 cap = Adafruit_MPR121(); // cap : objet de la classe Adafruit_MPR121 instancié par le constructeur Adafruit_MPR121()
// assure le suivi des derniers boutons touchés
uint16_t lasttouched = 0; // numéro du dernier bouton touché
uint16_t :unsingned short contant de 0 à 65,535
uint16_t currtouched = 0; // numéro du bouton touché actuellement
int touched=0; // variable permettant de savoir si un bouton est touché
int led = 13;
// SETUP ////////////////////////////////////////////////////////////////
void setup() { //fonction qui commence
// PRINT
Thermal.begin(19200); //appel instanciation imprimante thermique
initPrinter();
// MP3
mp3_set_serial (Serial); //appel son stocké dans le dossier “serial” dans le DFPlayer-mini mp3 module
mp3_set_volume (15); //volume à 15
while (!Serial); // boucle
Serial.begin(9600); // Transmission des données en séries en bits (9600)
//Serial.println("Adafruit MPR121 Capacitive Touch sensor test");
// Default address is 0x5A, if tied to 3.3V its 0x5B
// If tied to SDA its 0x5C and if SCL then 0x5D
if (!cap.begin(0x5A)) {
//Serial.println("MPR121 not found, check wiring?");
while (1);
}
//Serial.println("MPR121 found!");
pinMode(led, OUTPUT);
}
// LOOP ////////////////////////////////////////////////////////////////
void loop() { //fonction boucle à partir des boutons touchés
currtouched = cap.touched(); // récupération du numéro du bouton touché
// voir https://github.com/adafruit/Adafruit_MPR121_Library/blob/master/Adafruit_MPR121.h
// conditions :
for (uint8_t i=0; i<12; i++) {
// s'il a été touché et qu'il ne l'est plus, arrêter
if ((currtouched & _BV(i)) && !(lasttouched & _BV(i)) ) {
//Serial.print(i); Serial.println(" touched");
if (i==1){digitalWrite(led,HIGH); mp3_play (5);meru();}; // si le bouton correspond à 1, appel classe meru + son mp3 1
if (i==2){digitalWrite(led,HIGH); mp3_play (2);elbeuf();}; // si le bouton correspond à 2, appel classe elbeuf + son mp3 2
if (i==3){digitalWrite(led,HIGH); mp3_play (3);barredm();}; // si le bouton correspond à 3, appel classe barredm + son mp3 3
if (i==4){digitalWrite(led,HIGH); mp3_play (4);auvergne();}; // si le bouton correspond à 4, appel classe auverge + son mp3 4
if (i==5){digitalWrite(led,HIGH); mp3_play (1);lyon();}; // si le bouton correspond à 5, appel classe lyon + son mp3 5
if (i==6){digitalWrite(led,HIGH); mp3_play (6);nanterre();}; // si le bouton correspond à 6, appel classe nanterre + son mp3 6
if (i==7){digitalWrite(led,HIGH); mp3_play (7);bordeaux();}; // si le bouton correspond à 7, appel classe bordeaux + son mp3 7
if (i==8){digitalWrite(led,HIGH); mp3_play (8);croix();}; si le bouton correspond à 8, appel classe elbeuf + son mp3 8
}
// s'il a été touché et qu'il ne l'est plus, arrêter
if (!(currtouched & _BV(i)) && (lasttouched & _BV(i)) ) {
//Serial.print(i); Serial.println(" released");
if (i==5){digitalWrite(led,LOW);};
}
}
// reset our state
lasttouched = currtouched;
///////////////////////////////////////////////////////////////// MRP121 debug....
// // débugger le module capacitif
// return;
//
// // debugging info, what
// Serial.print("\t\t\t\t\t\t\t\t\t\t\t\t\t 0x"); Serial.println(cap.touched(), HEX);
// Serial.print("Filt: ");
// for (uint8_t i=0; i<12; i++) {
// Serial.print(cap.filteredData(i)); Serial.print("\t");
// }
// Serial.println();
// Serial.print("Base: ");
// for (uint8_t i=0; i<12; i++) {
// Serial.print(cap.baselineData(i)); Serial.print("\t");
// }
// Serial.println();
//////////////////////////////////////////////////////////////////
// mettre en attente de façon à ne pas surcharger
delay(100);
}
/// Méthodes personelles
// PRINTER VOID
void initPrinter()
{
//Modifier la rapidité d'impression et la chaleur
Thermal.write(27);
Thermal.write(55);
Thermal.write(7); //Default 64 dots = 8*('7'+1)
Thermal.write(heatTime); //Default 80 or 800us
Thermal.write(heatInterval); //Default 2 or 20us
//Modifier la densité et le temps de pause
Thermal.write(18);
Thermal.write(35);
int printSetting = (printDensity<<4) | printBreakTime;
Thermal.write(printSetting); //Combination de printDensity et printBreakTime
Serial.println();
//Serial.println("Printer ready");
}
void printBarcode(const char zz[])
{ /// voir p22 de la documentation http://www.gotronic.fr/pj-1134.pdf
// les 3 lignes suivantes définissent les symboles utilisés par l'imprimante pour dessiner le code barre
Thermal.write(29); //GS
Thermal.write(107); //k
Thermal.write(zero); //m = 0
for (int z=0; z<12; z++){
Thermal.write(zz[z]);
}
Thermal.write(zero);
delay(3000); // necessary delay
Thermal.write(10);
Thermal.write(10);
Thermal.write(10);
}

Code immeuble

Code immeuble B10

void lyon () {// nom de la fonction a appelé dans le code initial pour imprimer le ticket correspondant
// mise en page du texte
Thermal.println("________________________________");
Thermal.write(29);Thermal.write(66);Thermal.write(1); // surligné
Thermal.println("IMMEUBLE B10");
Thermal.write(29);Thermal.write(66);Thermal.write(zero);//non surligné
Thermal.println("19,20 Place Charles Beraudier");
Thermal.println("LYON");
Thermal.println("25m");
Thermal.println();
Thermal.println("GPS :");
Thermal.println("N.45 45'37.741");
Thermal.println("E 4 51'31.779");
Thermal.println();
Thermal.println("Nombre d'habitants :");
Thermal.println("165");
Thermal.println();
Thermal.println("Date de destruction :");
Thermal.println("22/11/2015");
Thermal.println();
Thermal.println("Cause de destruction :");
Thermal.write(27);Thermal.write(45);Thermal.write(2); // sousligné
Thermal.println("Amiante - Reamenagement de la place Charles Beraudier");
Thermal.write(27);Thermal.write(45);Thermal.write(zero); // non sousligné
Thermal.println();
Thermal.println("Ticket temoin a conserver");
Thermal.println();
printBarcode(barCode);
Thermal.write(27);Thermal.write(45);Thermal.write(zero); // non sousligné
Thermal.println("________________________________");
}

Code IMMEUBLE AUVERGNE ET ARTOIS

void auvergne () { // nom de la fonction a appelé dans le code initial pour imprimer le ticket correspondant
// pour tous les format d'affichage voir : http://www.gotronic.fr/pj-1134.pdf
// mise en page du texte
Thermal.println("________________________________");
Thermal.write(29);Thermal.write(66);Thermal.write(1); // surligné et écriture en gras (voir : http://www.gotronic.fr/pj-1134.pdf : écrire séparément 29, 66 et n avec n= 1 : activer le mode surligner en gras et n=0: désactiver le mode)
Thermal.println("IMMEUBLE AUVERGNE ET ARTOIS");
Thermal.write(29);Thermal.write(66);Thermal.write(zero);//non surligné et écriture en gras
Thermal.println("Rue Abelard");
Thermal.println("MEAUX");
Thermal.println("50m");
Thermal.println();
Thermal.println("GPS :");
Thermal.println("N.48 57'10.4478");
Thermal.println("E 2 54'35.504");
Thermal.println();
Thermal.println("Nombre d'habitants :");
Thermal.println("211");
Thermal.println();
Thermal.println("Date de destruction :");
Thermal.println("22/11/2015");
Thermal.println();
Thermal.println("Cause de destruction :");
Thermal.write(27);Thermal.write(45);Thermal.write(2); // sousligné. (voir : http://www.gotronic.fr/pj-1134.pdf : écrire séparément 27, 45 et n avec n vallant 0, 1 ou 2 points)
Thermal.println("Projet de reconstruction de logements sociaux taille humaine");
Thermal.write(27);Thermal.write(45);Thermal.write(zero); // non sousligné (voir : http://www.gotronic.fr/pj-1134.pdf : écrire séparément 27, 45 et n avec n vallant 0, 1 ou 2 points)
// ATTENTION: ici, zero = 0 est considéré comme un caractère ascii (https://fr.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange) dont la valeur est 30 en hexadécimal.
Thermal.println();
Thermal.println("Ticket temoin a conserver");
Thermal.println();
printBarcode(barCodeauvergne);
Thermal.write(27);Thermal.write(45);Thermal.write(zero); // non sousligné
Thermal.println("________________________________");
}

Code immeuble Barre des Mille

void barredm () { // nom de la fonction a appelé dans le code initial pour imprimer le ticket correspondant
// mise en page du texte
Thermal.println("________________________________");
Thermal.write(29);Thermal.write(66);Thermal.write(1); // surligné
Thermal.println("IMMEUBLE BARRE DES MILLE BAT 230");
Thermal.write(29);Thermal.write(66);Thermal.write(zero);//non surligné
Thermal.println("Boulevard de la Duchre");
Thermal.println("LYON");
Thermal.println("54m");
Thermal.println();
Thermal.println("GPS :");
Thermal.println("N.48 51'23.81");
Thermal.println("E 2 21'7.998");
Thermal.println();
Thermal.println("Nombre d'habitants :");
Thermal.println("78");
Thermal.println();
Thermal.println("Date de destruction :");
Thermal.println("02/07/2015");
Thermal.println();
Thermal.println("Cause de destruction :");
Thermal.write(27);Thermal.write(45);Thermal.write(2); // sousligné
Thermal.println("Construction du premier ecoquartier de France");
Thermal.write(27);Thermal.write(45);Thermal.write(zero); // non sousligné
Thermal.println();
Thermal.println("Ticket temoin a conserver");
Thermal.println();
printBarcode(barCodebarredm);
Thermal.write(27);Thermal.write(45);Thermal.write(zero); // non sousligné
Thermal.println("________________________________");
}

Code immeuble Elbeuf

void elbeuf () { // nom de la fonction a appelé dans le code initial pour imprimer le ticket correspondant
// mise en page du texte
Thermal.println("________________________________");
Thermal.write(29);Thermal.write(66);Thermal.write(1); // surligné
Thermal.println("IMMEUBLE CREA ELBEUF");
Thermal.write(29);Thermal.write(66);Thermal.write(zero);//non surligné
Thermal.println("16 Jean-Jaurs");
Thermal.println("ELBEUF");
Thermal.println("18,73m");
Thermal.println();
Thermal.println("GPS :");
Thermal.println("N.49 17'26.78");
Thermal.println("E 1 0'34.756");
Thermal.println();
Thermal.println("Nombre d'habitants :");
Thermal.println("198");
Thermal.println();
Thermal.println("Date de destruction :");
Thermal.println("du 17/08/2015 au ...");
Thermal.println();
Thermal.println("Cause de destruction :");
Thermal.write(27);Thermal.write(45);Thermal.write(2); // sousligné
Thermal.println("Amiante - Etat de degradation irremediable");
Thermal.write(27);Thermal.write(45);Thermal.write(zero); // non sousligné
Thermal.println();
Thermal.println("Ticket temoin a conserver");
Thermal.println();
printBarcode(barCodeelbeuf);
Thermal.write(27);Thermal.write(45);Thermal.write(zero); // non sousligné
Thermal.println("________________________________");
}

Code immeuble Méru

void meru () { // nom de la fonction a appelé dans le code initial pour imprimer le ticket correspondant
// mise en page du texte
Thermal.println("________________________________");
Thermal.write(29);Thermal.write(66);Thermal.write(1); // surligné
Thermal.println("TOUR DU QUARTIER DE LA NACRE");
Thermal.write(29);Thermal.write(66);Thermal.write(zero);//non surligné
Thermal.println("Rue Jean Moulin");
Thermal.println("MERU");
Thermal.println("28m");
Thermal.println();
Thermal.println("GPS :");
Thermal.println("N.45 45'37.741");
Thermal.println("E 4 51'31.779");
Thermal.println();
Thermal.println("Nombre d'habitants :");
Thermal.println("247");
Thermal.println();
Thermal.println("Date de destruction :");
Thermal.println("08/09/2015");
Thermal.println();
Thermal.println("Cause de destruction :");
Thermal.write(27);Thermal.write(45);Thermal.write(2); // sousligné
Thermal.println("Operation de renovation urbaine");
Thermal.write(27);Thermal.write(45);Thermal.write(zero); // non sousligné
Thermal.println();
Thermal.println("Ticket temoin a conserver");
Thermal.println();
printBarcode(barCodemeru);
Thermal.write(27);Thermal.write(45);Thermal.write(zero); // non sousligné
Thermal.println("________________________________");
}

Code immeuble Bordeaux

void bordeaux () { // nom de la fonction a appelé dans le code initial pour imprimer le ticket correspondant
// mise en page du texte
Thermal.println("________________________________");
Thermal.write(29);Thermal.write(66);Thermal.write(1); // surligné
Thermal.println("IMMEUBLE LA CROIX DU MAIL");
Thermal.write(29);Thermal.write(66);Thermal.write(zero);//non surligné
Thermal.println("Quartier Meriadeck, 1 Place Tartas");
Thermal.println("Bordeaux");
Thermal.println("70m");
Thermal.println();
Thermal.println("GPS :");
Thermal.println("N.35 55'27.88");
Thermal.println("E 1 28'9.328");
Thermal.println();
Thermal.println("Nombre d'habitants :");
Thermal.println("347");
Thermal.println();
Thermal.println("Date de destruction :");
Thermal.println("18/04/2015");
Thermal.println();
Thermal.println("Cause de destruction :");
Thermal.write(27);Thermal.write(45);Thermal.write(2); // sousligné
Thermal.println("Reconstruction de la cite municipale");
Thermal.write(27);Thermal.write(45);Thermal.write(zero); // non sousligné
Thermal.println();
Thermal.println("Ticket temoin a conserver");
Thermal.println();
printBarcode(barCodebordeaux);
Thermal.write(27);Thermal.write(45);Thermal.write(zero); // non sousligné
Thermal.println("________________________________");
}

Code TOUR DU QUARTIER DE LA NACRE

void meru () { // nom de la fonction a appelé dans le code initial pour imprimer le ticket correspondant
// mise en page du texte
Thermal.println("________________________________");
Thermal.write(29);Thermal.write(66);Thermal.write(1); // surligné
Thermal.println("TOUR DU QUARTIER DE LA NACRE");
Thermal.write(29);Thermal.write(66);Thermal.write(zero);//non surligné
Thermal.println("Rue Jean Moulin");
Thermal.println("MERU");
Thermal.println("28m");
Thermal.println();
Thermal.println("GPS :");
Thermal.println("N.45 45'37.741");
Thermal.println("E 4 51'31.779");
Thermal.println();
Thermal.println("Nombre d'habitants :");
Thermal.println("247");
Thermal.println();
Thermal.println("Date de destruction :");
Thermal.println("08/09/2015");
Thermal.println();
Thermal.println("Cause de destruction :");
Thermal.write(27);Thermal.write(45);Thermal.write(2); // sousligné
Thermal.println("Operation de renovation urbaine");
Thermal.write(27);Thermal.write(45);Thermal.write(zero); // non sousligné
Thermal.println();
Thermal.println("Ticket temoin a conserver");
Thermal.println();
printBarcode(barCodemeru);
Thermal.write(27);Thermal.write(45);Thermal.write(zero); // non sousligné
Thermal.println("________________________________");
}

Code IMMEUBLE LE BATEAU

void nanterre () { // nom de la fonction a appelé dans le code initial pour imprimer le ticket correspondant
// mise en page du texte
Thermal.println("________________________________");
Thermal.write(29);Thermal.write(66);Thermal.write(1); // surligné
Thermal.println("IMMEUBLE LE BATEAU");
Thermal.write(29);Thermal.write(66);Thermal.write(zero);//non surligné
Thermal.println("Rue Jean Jaures");
Thermal.println("NANTERRE");
Thermal.println("200m");
Thermal.println();
Thermal.println("GPS :");
Thermal.println("N.48 53'25.901");
Thermal.println("E 2 11'21.465");
Thermal.println();
Thermal.println("Nombre d'habitants :");
Thermal.println("235");
Thermal.println();
Thermal.println("Date de destruction :");
Thermal.println("31/03/2015");
Thermal.println();
Thermal.println("Cause de destruction :");
Thermal.write(27);Thermal.write(45);Thermal.write(2); // sousligné
Thermal.println("Reconstruction de 250 logements sociaux");
Thermal.write(27);Thermal.write(45);Thermal.write(zero); // non sousligné
Thermal.println();
Thermal.println("Ticket temoin a conserver");
Thermal.println();
printBarcode(barCodenanterre);
Thermal.write(27);Thermal.write(45);Thermal.write(zero); // non sousligné
Thermal.println("________________________________");
}

Réalisation finale

Vidéo

Étapes de réalisation, installation finale et vernissage.

Vidéo par Rémi Bargier

Échanges

AVG :Aujourd'hui même il y a une démolition à Meaux : http://www.meaux-habitat.fr/Actualites/Dimanche-22-novembre-2015-a-13h00-aura-lieu-la-demolition-des-residences-Auvergne-et-Artois Peut-être est ce encore plus intéressant de travailler cette actualité à votre manière et comme suite à mon propre travail ?

ACC:À propos d'affiches rétroéclairées, ce travail de Thomas Huot-Marchand, utilisant le rétroéclairage urbain des sucettes Decaux pour révéler différentes informations imprimées au recto de l'affiche papier et invisibles le jour : http://www.thomashuotmarchand.com/new/safari-fourier/

> la page réalisée par les médiatrices du FRAC sur cette œuvre :anne-vale_rie_gasc.docx

AA: Voici le lien sur un projet de l'artiste Daniel Purroy qui a travaillé sur la destructions de barres d'immeubles à Paris : http://www.kisskissbankbank.com/fr/projects/la-cite-balzac-a-paris--2 AA+SP: On adore l'idée de l'encre thermotactile. Point de vu budget, il faut voir les besoins financiers des autres groupes. Un pot est envisageable.

AA: L'imprimante et les rouleaux ont bien été livré au FRAC. Je ne suis pas à mon bureau demain mais vous pouvez passer les récupérer. Le carton est sur mon bureau au 2 bis. A mardi

Contact

Anne-Catherine Céard, enseignant DSAA d'Art Graphique

06 83 77 85 19

ac.ceard@gmail.com

Thomas Ricordeau, enseignant DSAA de Design Graphique

06 09 04 88 19

thomas.ricordeau@gmail.com

Reso-nance Numérique

contact@reso-nance.org

Annabelle Arnaud, responsable projets milieu scolaire et formation

04 91 90 28 72

annabelle.arnaud@fracpaca.org

Stéphanie Putaggio, projets milieu scolaire

04 91 90 28 72

stephanie.putaggio@fracpaca.org