— ENSCI – FabLab/FabFlex

Archive
Présentation

 

Read More

 

Du design au FabLab

Le FabLab est un lieu de partage de connaissances mais aussi un laboratoire d’innovations technologiques. Il a donc été pour nous un lieu d’expérimentations pour comprendre l’électronique et surtout une opportunité pour apporter notre vision de designer dans un domaine où le design n’est pas considéré comme primordial.

Le FabLab nous a permis de démystifier la fabrication d’objets électroniques souvent conçus comme des « boîtes noires ». En ce sens, nous avons voulu faire projet autour de cette thématique. Comment concevoir un objet électronique de manière à le rendre accessible à tous, autant dans sa lisibilité que sa fabrication ? Dans un souci lié au cycle de vie de l’objet, nous nous sommes aussi intéressées à la matière papier pour limiter son impact sur l’environnement.

 

Nouveau regard sur le papier

Potentialité est une enceinte audio dont l’enveloppe et le variateur de volume sont en papier. Pour ce composant, nous avons utilisé le papier CansonÒ mi- teinte noir car, composé de carbone, il conduit l’électricité. Un large terrain d’innovations s’ouvre alors pour le papier, ici, ce matériau accessible et simple à travailler devient un réel capteur. Ce papier reste conducteur une fois imprimé, ceci ouvre différentes possibilités esthétiques. Cela peut se traduire par un nouveau regard sur les métiers d’art traditionnels autour du travail ornemental.

Par notre regard de designer, nous avons voulu porter une attention sur le confort d’usage de cet objet, le papier devient agréable au toucher par la réalisation de textures selon des méthodes simples comme le ponçage. La manipulation de l’objet devient intuitive grâce à sa surface sensible.

 

Rendre accessible

Une notice permet d’expliquer étape par étape la fabrication du composant en papier. Mais celui-ci reste libre à interpréter, pouvant servir d’interrupteur, de capteur…Les moules pour l’enceinte sont des formes développables ce qui permet de les réaliser en patronage sur du Polypropylène.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Code Arduino pour le variateur de volume :

 

#define BUTTON 0
#define TOTAL_BUTTONS 12
#define COMMUN_A 2
#define COMMUN_B 3
#define SENSITIVITY 6 // filtrage de signal, if > sensitivity = 1
#define LED_VOLUME 6
#define CS 4
#define SDI 5
#define CLK 6
 
 
byte buttonsPressed[TOTAL_BUTTONS];
byte buttonsReleased[TOTAL_BUTTONS];
 
byte *mapBouton[TOTAL_BUTTONS];
 
int vol = 0;
 
void setup() {
 
  Serial.begin(9600);
  Serial.println("started...");
 
  mapBouton[0] = &buttonsPressed[1];
  mapBouton[1] = &buttonsPressed[0];
  mapBouton[2] = &buttonsPressed[4];
  mapBouton[3] = &buttonsPressed[2];
  mapBouton[4] = &buttonsPressed[5];
  mapBouton[5] = &buttonsPressed[3];
  mapBouton[6] = &buttonsPressed[9];
  mapBouton[7] = &buttonsPressed[11];
  mapBouton[8] = &buttonsPressed[8];
  mapBouton[9] = &buttonsPressed[9];
  mapBouton[10] = &buttonsPressed[6];
  mapBouton[11] = &buttonsPressed[7];
 
  pinMode(CS, OUTPUT);
  pinMode(SDI, OUTPUT);
  pinMode(CLK, OUTPUT);
 
 
 
}
 
 
void loop() {
  boutonEvent();
  analogWrite(LED_VOLUME, vol);
 
 
}
 
void keyPressed() {
  //Serial.println("keyPressed");
 
 
 
  int volume = 0;
  for (int i=0; i<TOTAL_BUTTONS; i++) {
    //Serial.print(*mapBouton[i], DEC);
    //Serial.print(" ");
    if (*mapBouton[i]==1){
      volume = i;
      break;
    }
 
  }
  int v =  map(volume, 0,11, 0,255);
  vol = v;
 
 
  ///AD8400 digital potentiometer
  digitalWrite(SDI, LOW);
  digitalWrite(CLK, LOW);
  digitalWrite(CS, LOW);
 
 
  /// MESSAGE TO BE SENT
  //A0
  digitalWrite(CLK, HIGH);
  digitalWrite(CLK, LOW);
  //A1
  digitalWrite(CLK, HIGH);
  digitalWrite(CLK, LOW);
 
  shiftOut(SDI, CLK, MSBFIRST, vol);
  ///
 
  digitalWrite(CS, HIGH);
 
 
  //  analogWrite(LED_VOLUME, v);
  // Serial.println(v);
 
}
 
void keyReleased() {
 
 
 
}
 
 
void boutonEvent() {
 
  static boolean etat[TOTAL_BUTTONS];
  static int buff[TOTAL_BUTTONS];
  /// BUTTON
  boolean pressed = false;
  boolean released = false;
 
  pinMode(COMMUN_A, OUTPUT);
  digitalWrite(COMMUN_A, HIGH);
  buttonsPressed[0] = (analogRead(0) > SENSITIVITY) ? 1 : 0;
  buttonsPressed[1] = (analogRead(1) > SENSITIVITY) ? 1 : 0;
  buttonsPressed[2] = (analogRead(2) > SENSITIVITY) ? 1 : 0;
  buttonsPressed[3] = (analogRead(3) > SENSITIVITY) ? 1 : 0;
  buttonsPressed[4] = (analogRead(4) > SENSITIVITY) ? 1 : 0;
  buttonsPressed[5] = (analogRead(5) > SENSITIVITY) ? 1 : 0;
  digitalWrite(COMMUN_A, LOW);
  digitalWrite(COMMUN_A, INPUT);
 
  pinMode(COMMUN_B, OUTPUT);
  digitalWrite(COMMUN_B, HIGH);
  buttonsPressed[6] =  (analogRead(0) > SENSITIVITY) ? 1 : 0;
  buttonsPressed[7] =  (analogRead(1) > SENSITIVITY) ? 1 : 0;
  buttonsPressed[8] =  (analogRead(2) > SENSITIVITY) ? 1 : 0;
  buttonsPressed[9] =  (analogRead(3) > SENSITIVITY) ? 1 : 0;
  buttonsPressed[10] = (analogRead(4) > SENSITIVITY) ? 1 : 0;
  buttonsPressed[11] = (analogRead(5) > SENSITIVITY) ? 1 : 0;
  digitalWrite(COMMUN_B, LOW);
  digitalWrite(COMMUN_B, INPUT);
 
 
 
  /// desactivate multitouch
  int total = 0;
  for (int i=0; i<TOTAL_BUTTONS; i++) if(buttonsPressed[i] == 1) total++;
 
  if (total>1) for (int i=0; i<TOTAL_BUTTONS; i++) buttonsPressed[i] = 0;
  ////
 
 
  for (int i=0; i<TOTAL_BUTTONS; i++) {
 
    if (buttonsPressed[i]==1)  {
      pressed = true;
      // keyPressed();
    } 
    int val = buttonsPressed[i];
 
    if (buff[i]!=val) {
      if (val==1) etat[i] = true;
      if ((etat[i]==true) && (val==0)) {
        // Serial.println("click");
        etat[i] = false;
        /// WHEN RELEASE DO SOMETHING
        buttonsReleased[i] = 1;
        released = true;
        // keyReleased();
        ///
      }
      else {
        buttonsReleased[i] = 0;
      }
 
    }
    buff[i] = val;
  }
 
 
  if (pressed) keyPressed();
  if (released) keyReleased();
  /*
  for (int i=0; i<TOTAL_BUTTONS; i++)
   buttonsReleased[i] = 0;
   */
 
  ////// BUTTON RELEASE CODE
 
}
Read More