— ENSCI – FabLab/FabFlex

Article très intéressant sur la rematérialisation du contenu numérique grâce aux objets connectés.

extrait:

« Imaginez à présent un internet où les contenus finiraient par s’incarner dans leur enveloppe originelle ? Plus précisément, imaginez que les supports digitaux auxquels nous nous sommes finalement habitués, les applications, les icones, les dossiers, les fichiers, les boutons, les formulaires prennent forme physique, deviennent réellement palpables et s’altèrent avec le temps… Imaginez un univers numérique reconstruit dans le monde physique, et des objets ressemblants aux interfaces virtuelles que nous utilisons désormais quotidiennement… »

Read More

 

Radio 3.0

 

Le Fablab de l’ensci, un terrain d’expérimentation

Radio 3.0 est un objet qui permet de sélectionner, d’écouter et de partager des données liées à des flux musicaux numériques. Mélangeant usages d’hier et pratiques d’aujourd’hui il est un support de recherche sur de nouvelles interactions possibles entre les hommes, les objets et le réseau. Revendiquant une conception libre, reproductible et reprogrammable aisément, RADIO 3.0 est un patchwork fait d’éléments de la grande industrie et de pièces sur mesures. Ayant largement recours à des technologies opensource comme Arduino,RADIO 3.0 fut une opportunité d’aborder l’ensemble des dimensions d’un projet de design de l’intention de départ au prototype fonctionnel. Ce fut l’occasion de tester directement l’interface de l’objet à travers ses différents capteurs et leur programmation.

ainsi qu’un puissant outil de production

Le Fablab de l’ENSCI m’a permis d’expérimenter la conception d’un objet complexe intégrant à la fois des savoirs-faires traditionnels comme celui du bois à de l’électronique de pointe. Cela a été l’occasion de générer de nombreux ponts entre les différents ateliers de l’école que j’ai pu utiliser pendant ces quelques mois comme un outil de prototypage et de production poussé.

 

Plans:

 

Liste des éléments composant la radio:

1x afficheur Sure Electronics matrice led rouge 32×8

1x airport express apple

1x ampli mono velleman 7w

1x hauts parleurs VISATON FRWS5 2watts

1x Arduino Uno

1x Arduino Ethernet Shield

1x Potentiomètre linéaire simple

1x Rotary encoder

1x Inverseur électronique

 

code arduino (provisoire)

#include <avr/pgmspace.h>

enum PinAssignments {  encoderPinA = 2,  encoderPinB = 3,};
// chris config#define CS1 13 #define CLK 10 // WR clock#define RD 5 #define DAT 7///*// uros config #define CS1 13  #define CLK 4 // WR clock #define RD 5  #define DAT 7*/#define RC_MASTER_MODE 0b100000110000#define SYS_DIS 0b100000000000#define SYS_EN 0b100000000010#define LED_OFF 0b100000000100#define LED_ON 0b100000000110#define N_MOS_COM8 0b100001000000#define PWM_16 0b100101011110#define PWM_1 0b100101000000#define CS_ON digitalWrite(CS1, LOW)#define CS_OFF digitalWrite(CS1, HIGH)#define CLK_ON digitalWrite(CLK, HIGH)#define CLK_OFF digitalWrite(CLK, LOW)#define DAT_ON digitalWrite(DAT, HIGH)#define DAT_OFF digitalWrite(DAT, LOW)
#define WORLD 0#define LOCAL 1
#define RESISTOR 0
#define TWEET 9
#define SWITCH 8

#define W_MATRIX 32#define H_MATRIX 8

byte image[32];byte p_image[32];boolean refreshImg = true;
boolean etat = false;int count = 0;
///encodeur
volatile unsigned int encoderPos = 0;unsigned int lastReportedPos = 1;
boolean A_set = false;boolean B_set = false;
long timerEnc = 0;int encoder = 0;
///end encodeur

boolean uglySwitch = false; // bug correction, change this auful thing
byte ser = 0;
long timer = 0;
boolean lock = false;
char* phrases[] = {

« Eclectik – Pierric Bailly », « La Tete au Carre – Les comites d’ethique », « PLACE DE LA TOILE 01.05.2011 », « Rencontre des Ateliers – Gilles Rougon », « Le Mouv – Le Post Politik 13.06.2011 », //  « CHIC – Le Freak », « Frederic Chopin – Minute Waltz », « Herbie Hancock – Cantaloupe Island »}; /// world 5-7

int local = 5;int world = 0;

String incoming = «  »;

const byte ascii[][6] PROGMEM = { // put this into the flash memory  0x00, 0x00, 0x00, 0x00, 0x00, 0x00,      // 32 (space)
0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,      // 33 !
0x00, 0x07, 0x00, 0x07, 0x00, 0x00,      // 34  »
0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,      // 35 #
0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,      // 36 0x
0x23, 0x13, 0x08, 0x64, 0x62, 0x00,      // 37 %
0x36, 0x49, 0x56, 0x20, 0x50, 0x00,      // 38 &
0x00, 0x08, 0x07, 0x03, 0x00, 0x00,      // 39 ‘
0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,      // 40 (
0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,      // 41 )
0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,      // 42 *
0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,      // 43 +
0x00, 0x80, 0x70, 0x30, 0x00, 0x00,      // 44 ,
0x08, 0x08, 0x08, 0x08, 0x08, 0x00,      // 45 –
0x00, 0x00, 0x60, 0x60, 0x00, 0x00,      // 46 .
0x20, 0x10, 0x08, 0x04, 0x02, 0x00,      // 47 /
0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,      // 48 0
0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,      // 49 1
0x72, 0x49, 0x49, 0x49, 0x46, 0x00,      // 50 2
0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,      // 51 3
0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,      // 52 4
0x27, 0x45, 0x45, 0x45, 0x39, 0x00,      // 53 5
0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,      // 54 6
0x41, 0x21, 0x11, 0x09, 0x07, 0x00,      // 55 7
0x36, 0x49, 0x49, 0x49, 0x36, 0x00,      // 56 8
0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,      // 57 9
0x00, 0x00, 0x14, 0x00, 0x00, 0x00,      // 58 :
0x00, 0x40, 0x34, 0x00, 0x00, 0x00,      // 59 ;
0x00, 0x08, 0x14, 0x22, 0x41, 0x00,      // 60 <
0x14, 0x14, 0x14, 0x14, 0x14, 0x00,      // 61 =
0x00, 0x41, 0x22, 0x14, 0x08, 0x00,      // 62 >
0x02, 0x01, 0x59, 0x09, 0x06, 0x00,      // 63 ?
0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,      // 64 @
0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,      // 65 A
0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,      // 66 B
0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,      // 67 C
0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,      // 68 D
0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,      // 69 E
0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,      // 70 F
0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,      // 71 G
0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,      // 72 H
0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,      // 73 I
0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,      // 74 J
0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,      // 75 K
0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,      // 76 L
0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,      // 77 M
0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,      // 78 N
0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,      // 79 O
0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,      // 80 P
0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,      // 81 Q
0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,      // 82 R
0x26, 0x49, 0x49, 0x49, 0x32, 0x00,      // 83 S
0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,      // 84 T
0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,      // 85 U
0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,      // 86 V
0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,      // 87 W
0x63, 0x14, 0x08, 0x14, 0x63, 0x00,      // 88 X
0x03, 0x04, 0x78, 0x04, 0x03, 0x00,      // 89 Y
0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,      // 90 Z
0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,      // 91
0x02, 0x04, 0x08, 0x10, 0x20, 0x00,      // 92
0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,      // 93
0x04, 0x02, 0x01, 0x02, 0x04, 0x00,      // 94
0x40, 0x40, 0x40, 0x40, 0x40, 0x00,      // 95
0x00, 0x03, 0x07, 0x08, 0x00, 0x00,      // 96
0x20, 0x54, 0x54, 0x78, 0x40, 0x00,      // 97 a
0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,      // 98 b
0x38, 0x44, 0x44, 0x44, 0x28, 0x00,      // 99 c
0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,      // 100 d
0x38, 0x54, 0x54, 0x54, 0x18, 0x00,      // 101 e
0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,      // 102 f
0x18, 0xA4, 0xA4, 0x9C, 0x78, 0x00,      // 103 g
0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,      // 104 h
0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,      // 105 i
0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,      // 106 j
0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,      // 107 k
0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,      // 108 l
0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,      // 109 m
0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,      // 110 n
0x38, 0x44, 0x44, 0x44, 0x38, 0x00,      // 111 o
0xFC, 0x18, 0x24, 0x24, 0x18, 0x00,      // 112 p
0x18, 0x24, 0x24, 0x18, 0xFC, 0x00,      // 113 q
0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,      // 114 r
0x48, 0x54, 0x54, 0x54, 0x24, 0x00,      // 115 s
0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,      // 116 t
0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,      // 117 u
0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,      // 118 v
0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,      // 119 w
0x44, 0x28, 0x10, 0x28, 0x44, 0x00,      // 120 x
0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00,      // 121 y
0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,      // 122 z
0x00, 0x08, 0x36, 0x41, 0x00, 0x00,      // 123
0x00, 0x00, 0x77, 0x00, 0x00, 0x00,      // 124
0x00, 0x41, 0x36, 0x08, 0x00, 0x00,      // 125
0x02, 0x01, 0x02, 0x04, 0x02, 0x00,      // 126
0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00 };    // 127
void setup() {
pinMode(CS1, OUTPUT);  pinMode(CLK, OUTPUT);  pinMode(RD, OUTPUT);  pinMode(DAT, OUTPUT);
commandWrite(SYS_EN);  commandWrite(LED_ON);  commandWrite(RC_MASTER_MODE);  commandWrite(N_MOS_COM8);  commandWrite(PWM_16);
initImage();  for (int i=0; i<32; i++) p_image[i] = 0;

///  Serial.begin(9600);

/// SWITCH  pinMode(SWITCH, INPUT);  digitalWrite(SWITCH, HIGH); // pull down
pinMode(TWEET, INPUT);
timer = millis();
//for (int i=0; i<5; i++) Serial.println(getLength(phrases[i]));

if (getWorldLocalSwitch() == WORLD) {    Serial.println(world);  }   else {    Serial.println(local);  }
///encodeur  pinMode(encoderPinA, INPUT);   pinMode(encoderPinB, INPUT);
digitalWrite(encoderPinA, HIGH);  // turn on pullup resistor  digitalWrite(encoderPinB, HIGH);  // turn on pullup resistor

// encoder pin on interrupt 0 (pin 2)  attachInterrupt(0, doEncoderA, CHANGE);  // encoder pin on interrupt 1 (pin 3)  attachInterrupt(1, doEncoderB, CHANGE);

////

}

void loop() { // this is main loop for drawing
events();
/*  Serial.print(world);   Serial.print( » « );   Serial.println(local);   */

if (millis()>timer + 70){    ////    makeScene();    draw();    ////    timer = millis();  }

}

void makeScene() {  background(0);  // phrase scrolling  count–;
if (getWorldLocalSwitch() == WORLD) {    // Serial.println(getLength(phrases[world]));
if (count==-(getLength(phrases[world])*6))       count = W_MATRIX;
drawPhrase(phrases[world],count,0);
}   else {
if (count==-(getLength(phrases[local])*6))       count = W_MATRIX;
drawPhrase(phrases[local],count,0);  }

}

void draw() { // don’t touch here
CS_ON;  addressWrite(0x00);  for (int i=0; i<32; i++) {    byteOut(image[i]);  }  CS_OFF;
}
int getLength(String s) {  return s.length();}

void events() {
///SWITCH  static int lastWorldChange = 0;  int wlc = getWorldLocalSwitch();  if (lastWorldChange != wlc) {    worldLocalChange();    uglySwitch = false;  }
lastWorldChange = wlc;  ///END SWITCH
//// encodeur
if (lastReportedPos != encoderPos) {
/*    Serial.print(« Index: »);     Serial.print(encoderPos, DEC);     Serial.println();          */
if (millis() > timerEnc+600) {
if (lastReportedPos>encoderPos) {        encoder = 1;         listChange();      }      else {        encoder = 2;        listChange();      }
}
timerEnc = millis();
lastReportedPos = encoderPos;  }  /// end encodeur

///TWITTER   static int lastTweet = 0;  int tt = getTweet();  if (lastTweet != tt) tweet();  lastTweet = tt;  ///END TWITTER
}
void tweet() {  background(0);  drawPhrase(« share », 0,0);  Serial.println(8);  draw();  delay(1500);  count = W_MATRIX;}

void worldLocalChange() {
background(0);
if (getWorldLocalSwitch() == WORLD) {
drawPhrase(« local », 0,0);    draw();    Serial.println(9); // 8- stop    delay(1500);    count = W_MATRIX;    Serial.println(world);
}   else { //// WORLD
drawPhrase(« world », 0,0);    draw();    Serial.println(9); // 8- stop    delay(1500);    count = W_MATRIX;    Serial.println(local);  }

}
void listChange() {
switch(encoder) {  case 1: /// turn UP
if (getWorldLocalSwitch() == WORLD) {
if (world<4)        world++;       else world = 0;      uglySwitch = true;      scrollUpPhrase(phrases[world]);      Serial.println(world);
}     else {
if (uglySwitch == false) {        if (local<7)          local++;         else local = 5;      }      scrollUpPhrase(phrases[local]);      Serial.println(local);    }    break;

case 2: /// turn DOWN
if (getWorldLocalSwitch() == WORLD) {

if (world>0)        world–;       else world = 4;      scrollDownPhrase(phrases[world]);      Serial.println(world);    }     else {
if (local>5)        local–;       else local = 7;      scrollDownPhrase(phrases[local]);      Serial.println(local);    }
break;  }
delay(1500);  count = 0;
/*  Serial.print(world);   Serial.print( » « );   Serial.println(local);   */

}

int getWorldLocalSwitch() {  return digitalRead(SWITCH); }

int getTweet() {  return digitalRead(TWEET);}

void invert() {  for (int i=0; i<32; i++) {    image[i] = image[i] ^ 255;  }}
/*void drawImage(byte *img, int x, int y, int w, int h) {  if ( ((y+h)>0) && (y<H_MATRIX) ) { // define y on screen if ( ((x+w)>0) && (x<W_MATRIX) ) { // define x on screen  byte imgA[W_MATRIX]; for (int i=0; i<W_MATRIX; i++) imgA[i] = 0; //x for (int i=0; i<w-x; i++)  imgA[x+i] = img[i];   //y for (int i=0; i<W_MATRIX; i++) { imgA[i] = (y>0) ? imgA[i]<<y : imgA[i]>>y; image[i] = imgA[i]; } } }   } */
void scrollDownPhrase(char *p2) {
byte imgA[W_MATRIX];  for (int j=0; j<W_MATRIX; j++) imgA[j] = image[j];
for (int i=0;i<=H_MATRIX;i++) {
//y    for (int j=0; j<W_MATRIX; j++)       image[j] = imgA[j]<<i;

drawPhrase(p2, 0, H_MATRIX-i);    draw();    delay(100);  }}
void scrollUpPhrase(char *p2) {
byte imgA[W_MATRIX];  for (int j=0; j<W_MATRIX; j++) imgA[j] = image[j];
for (int i=0;i<=H_MATRIX;i++) {
//y    for (int j=0; j<W_MATRIX; j++)       image[j] = imgA[j]>>i;

drawPhrase(p2, 0, i-8);    draw();    delay(100);  }}
void drawPhrase(String phrase, int x, int y) {
int pos = x;  for (int i=0; i<phrase.length(); i++) {    if (pos<W_MATRIX) {      drawLetterAt(phrase.charAt(i), pos, y);    }     else {      break;    }    pos+=6;  }
}
void drawLetterAt(char letter, int x, int y) {
if ((x<W_MATRIX) && (x>-6)) {
if ((letter>=32) && (letter<=127)) letter-=32;
byte ll[6];    ll[0] = pgm_read_byte(&(ascii[letter][0]));     ll[1] = pgm_read_byte(&(ascii[letter][1]));     ll[2] = pgm_read_byte(&(ascii[letter][2]));     ll[3] = pgm_read_byte(&(ascii[letter][3]));     ll[4] = pgm_read_byte(&(ascii[letter][4]));     ll[5] = pgm_read_byte(&(ascii[letter][5]));     byte *let = &ll[0];
if (x<0) { // left offscreen
////drawing on the beginning of the screen      let+=abs(x); // put on the new first position      for (int i=0; i<x+6; i++) { // only draw in visible area from 0 till something (x+6)        if ((i+6)<W_MATRIX)  {/// don’t draw in offscreen, break out
byte buff = *let++;          if (y<0) {            buff = buff << abs(y);          }           else {            buff = buff >> y;
}
image[x+i] = image[x+i] | buff;
}        else break;      }

}     else {      /// drawing anywhere on the screen      for (int i=0; i<6; i++) {         if ((i+6)<W_MATRIX)  {/// don’t draw in offscreen break out
byte buff = *let++;          if (y<0) {            buff = buff << abs(y);
}           else {            buff = buff >> abs(y);
}
image[x+i] = image[x+i] | buff;
}        else break;      }
}  }

}
void background(int a) { // enter 1 or 0  for (int i=0; i<32; i++) {    image[i] = (a>0) ? 255 : 0;  }}
void initImage() { /// first image in the array// blank array  for (int i=0; i<32; i++) {    image[i] = 0;  }}/* this function don’t use PROGMEM flash memory char *getLetter(char l) { return ascii[l-32]; } */

// Interrupt on A changing statevoid doEncoderA(){  // Test transition  A_set = digitalRead(encoderPinA) == HIGH;  // and adjust counter + if A leads B  encoderPos += (A_set != B_set) ? +1 : -1;}
// Interrupt on B changing statevoid doEncoderB(){  // Test transition  B_set = digitalRead(encoderPinB) == HIGH;  // and adjust counter + if B follows A  encoderPos += (A_set == B_set) ? +1 : -1;}

void byteOut(byte a) {  shiftOut(DAT,CLK,LSBFIRST,a);}

void commandWrite(unsigned int command) {
unsigned char i;  unsigned int j;  command = command & 0x0fff; //12-bit command word, upper four bits masked  CS_OFF;  CS_ON;
for (i=0; i<12; i++) {    CLK_OFF;
j = command & 0x0800; // return MSB    command = command << 1; //Move the control character to the left one    j = j >> 11;    digitalWrite(DAT, j);    CLK_ON;  }
CS_OFF;
}
void addressWrite(unsigned char address) {  unsigned char i,temp;   address = address & 0x7f;   CLK_OFF;  DAT_ON;  CLK_ON;   CLK_OFF;   DAT_OFF;  CLK_ON;   CLK_OFF;   DAT_ON;  CLK_ON;   for(int i=0; i<7; i++) {    CLK_OFF;     temp = address & 0x40;     address = address << 1;     temp = temp >> 6;     digitalWrite(DAT,temp);     CLK_ON;   }  CLK_OFF;}

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

manifeste d’un nouveau modèle social de création et d’innovation économique

> Depuis près de 30 ans, l’ENSCI fonctionne autour d’un FabLab : « Les Ateliers »

Depuis sa création en 1982, l’Ecole nationale supérieure de création industrielle (ENSCI) prône et met en œuvre une manière renouvelée de faire du design, au croisement et dans le prolongement de traditions européennes bien établies.

Dépassant les dialectiques entre art et artisanat, entre art et Industrie, entre art et design, entre tradition et modernité, et les englobant, l’ENSCI a été conçue pour répondre à des enjeux cruciaux : créer par la pratique une culture de l’objet industriel et en penser les processus de conception, sous les angles esthétiques et fonctionnels, économiques et sociaux.

Depuis son origine, cette école est donc un espace de pratique, mais aussi un espace de pensée. Et cet aménagement particulier lui a donné son nom : « Les Ateliers ».

> Nos enjeux

Le FabLab « Les Ateliers » poursuit depuis son origine des objectifs de natures et d’enjeux différents et complémentaires :

  • valoriser de façon harmonieuse les intelligences pratiques et théoriques,
  • mettre la pratique et la démarche expérimentale au cœur de l’apprentissage,
  • faire de la pratique manuelle une démarche de dignité, d’estime de soi, d’émancipation,
  • valoriser le prototype et la maquette comme outil de conception,
  • faire des technologies un élément d’émancipation et de libération plutôt que d’aliénation,
  • construire des espaces innovants relevant du bien commun et du « vivre ensemble ».

Ce dernier point a été prolongé par : créer les conditions de l’autonomie et de l’indépendance des territoires (recherches, inventions, innovations, productions spécifiques, réparations, etc.)

> « Faites le vous – même »

Le FabLab contemporain, ouvert au plus grand nombre, professionnels et amateurs, trouve une de ses origines dans l’accessibilité de technologies, au premier rang desquelles l’informatique, notamment les logiciels libres. Le potentiel  accru de fabrications personnelles est d’abord lié aux progrès et à la « démocratisation » des logiciels 3D, de l’open source, du numérique, des machines de prototypage rapide. Le développement des cartes électroniques programmables, de prototypage informatique, élargit le champs d’intervention aux nouvelles formes d’interactions (les objets – interfaces).

> Le FabLab du Nouveau monde industriel (1)

Les dimensions économiques, sociales, technologiques du FabLab  sont un point d’intérêt majeur pour l’ENSCI. Il convoque les réflexions sur les nouveaux schémas de « conception / production / distribution » personnelle et artisanale et/ou néo-industrielle. Le mariage de techniques rapides et participatives permet d’investir l’espace entre les technologies et les innovateurs agiles (2) et les usages, pour faire exister les idées et les projets partagés. Cet espace s’inscrit également dans l’histoire du design et de l’architecture non standard. Il reprend ainsi les échanges ayant parcouru le Bauhaus sur les conditions de production, les débats entre industrie et artisanat ; il les prolonge et les dépasse.

> Le FabLab tel que nous le concevons à l’ENSCI – Les Ateliers

La pensée et la pratique de Jean Prouvé, parrain de l’ENSCI, ont montré l’importance de la fabrication et des ateliers dans les processus de création et d’apprentissage. Dans la continuité des enseignements de cet ingénieur et concepteur français, le FabLab est autant un espace d’invention que de production, augmenté d’une dimension innovation sociale.

Le FabLab, ou « laboratoire de fabrication », est l’occasion pour chaque designer, élève, enseignant, designer en post-diplôme, d’envisager la pratique du design industriel dans un contexte où il est directement acteur de la chaîne de fabrication.

L’objectif du FabLab « Les Ateliers » est d’inscrire la fabrication au cœur même du processus de création afin qu’elle soit partie intégrante du temps de la projection et de la création, et non pas seulement l’étape finale de la concrétisation matérielle. Dans cette convergence entre conception et production, le FabLab se propose comme espace d’expérimentation de nouveaux processus de création d’objets.

Ici, l’expérimentation, le faire, associés à la transversalité des connaissances et des expériences, sont au cœur du projet. Il ne s’agit pas de s’en tenir à des hypothèses mais bien d’élaborer et rendre fonctionnelle la chaîne de conception / production et d’aller jusqu’à la réalisation des objets finis, ainsi que leur diffusion. Il faut, pour cela, investir les machines disponibles à l’école (outils de CAO, imprimante 3D, fraiseuse numérique, machines traditionnelles des ateliers bois, métal, plastique, outils numériques de programmation et de fabrication du studio digital, etc.), non pas comme des outils d’exécution de maquettes mais  comme des outils de création, de conception et de production d’objets et de prototypes.

> Les « objets » du FabLab de l’ENSCI

« Les Ateliers », made in ENSCI, débordent la production d’objets connus et s’attèle à inventer et proposer les nouveaux objets du XXIème siècle, les néo-objets : objets programmables, objets interfaces, objets vivants, objets à terminer, objets téléchargeables (3), spimes (4), etc..

Le FabLab, façon ENSCI – Les Ateliers, a en effet pour objectif  d’explorer plus particulièrement les nouvelles typologies d’objets, leurs usages et les conditions de leur production ainsi que les méthodes et processus pour parvenir à leur réalisation.

Des questions surgissent alors qui font encore débat et fournissent des thématiques de recherche à l’ENSCI :

  • quels types d’objets avec quelle esthétique pouvons-nous imaginer et proposer à partir de ces nouveaux procédés ?
  • quelles seront demain la place et la valeur de la création industrielle dans cette figure de conception et de production aujourd’hui diffusée ?

> « Les Ateliers » s’exposent et exposent.

Le FabLab de l’ENSCI est l’espace collectif de l’imaginaire et des possibles, dans lequel on peut voir les processus en train de se faire, un lieu où l’on apprend et on échange, un lieu ou l’on écoute et on contribue. Et on sait que mettre en lumière les choses en train de se faire favorise les vocations, les transformations, les échanges et les propositions.

Rêver, proposer, faire, transformer, avancer, représenter et partager sont les objectifs majeurs de nos projets.

Dans notre monde en saturation, où il est difficile de construire des offres adéquates sans désencombrer notre hyper-connaissance, il faut « faire place » (5).

 

« Les Ateliers » du XXIème siècle sont un espace de propositions transdisciplinaires s’appuyant sur des fondamentaux de notre humanité.

L’Atelier s’est déroulé sur 3 semestres. Les outils, objets, usages des Ateliers de conception (FabLab) et de fabrication ont été dirigé par:
François Brument, Simon Dhenin, Jean-Louis Frechin, Uros Petrevski

(1) Ce concept a été proposé par le philosophe Bernard Stiegler. « Les entretiens du nouveau monde industriel » est une manifestation annuelle co-organisée par le Centre Pompidou / I.R.I., le pôle de compétitivité Cap Digital et l’ENSCI. Sa prochaine édition (19, 20 et 21 décembre 2011 à Beaubourg) aura pour thème « Les technologies de la confiance ».

(2) Méthode de conduite de projet, initiée au début des années 90 aux Etats-Unis, qui valorise des méthodes rapides de développement informatique et met en avant l’être humain et les usages.

(3) Projets traités à l’ENSCI – Les Ateliers.

(4) Selon Bruce Sterling, un « spime » est un objet issu d’un ordinateur, repérable dans l’espace, qui possède une mémoire de son histoire.

(5) Pierre-Damien Huyghe, Faire place, Editions Mix, 2009.

 

Read More

Une école « Ateliers » qui en a pris le nom

La fondation de l’Ecole nationale supérieure de création industrielle (ENSCI) en 1982 est une tentative de modification de l’approche française centrée sur la pensée abstraite et rationnelle où « l’objet rarement nommé, jamais touché semble être défini comme l’ultime aboutissement d’une démarche linéaire nécessaire, procède de la seule rationalité déductive qui va de la loi scientifique à ses applications ». (1)

Au-delà du simple rapport entre Art et Industrie, notre école qui se nomme « ENSCI-Les Ateliers » a été imaginée pour répondre à ces enjeux : créer une culture de l’objet industriel et en penser les processus fonctionnels, esthétiques et sociaux.

L’école, qui fêtera bientôt ses trente ans, est donc un espace de pratique, mais aussi un espace de pensée, de conversation et de démonstration. Elle renoue avec une tradition française, celle de l’atelier, du salon et du cabinet d’objets.  Cet aménagement particulier lui a donné son nom : « Les Ateliers »

L’ENSCI-Les Ateliers répond à un double objectif: d’une part, valoriser la culture générale, scientifique et technique pour proposer des « objets industriels » esthétiques, singuliers, adéquats, désirables et durables ; et d’autre part, modifier les modèles culturels de création et de production de ces objets par une formation et une éducation nouvelle orientées vers les enjeux de société.

Les créateurs industriels que nous formons possèdent des profils de capteurs, de médiateurs, et de révélateurs d’un monde en constante mutation.

L’ingénieur Jean Prouvé, parrain de l’école, à la fois entrepreneur, constructeur, théoricien, praticien et parrain de l’école, a inspiré ces multiples approches.

L’ENSCI, dans son organisation, ses missions, son histoire et ses projets est un atelier de pensée et de pratique qui s’inscrit, participe et contribue à l’histoire du design et à la dynamique des FabLabs, dont elle possède une solide expérience.

L’« atelier » comme nouveau « salon »
Un lieu où naissent et se développent les projets

A l’ENSCI, les ateliers sont des lieux de fabrication et de prototypage, mais également des espaces de conception, de création et d’échanges.

La fabrication, désormais assistée par le numérique, a fait apparaître de nouveaux processus de production intégrant des outils logiciels, des imprimantes 3D et autres machines de prototypage rapide qui ont transformé les pratiques du prototype, du travail à façon et de l’industrie.
Les nouveaux outils assistés par le numérique élargissent et changent l’équipement, mais aussi les objectifs des ateliers tels que nous les connaissions au XIXème et XXème siècles.

La diffusion et les progrès de ces technologies permettent désormais une utilisation démocratique de ces outils par des acteurs connus (designers, architectes, ingénieurs, artisans), par de nouvelles entreprises, mais aussi par de nouveaux acteurs issus de la société actuelle (amateurs, hackers, bricoleurs, et développeurs informatiques). Dans la boucle, les destinataires de ces objets peuvent également contribuer aux propositions qui leur sont faites.

Cet être ensemble, en réseau, forme les acteurs de ce que Bernard Stiegler nomme le « Nouveau monde industriel ». (2)

Le numérique, moteur d’un changement d’âge économique, philosophique et social bouleverse l’objet, le sujet et la nature de ce qu’il est possible de produire dans « Les ateliers ». Le matériau numérique investit désormais les ateliers du XXI siècle.
C’est pour cette raison que les nouvelles matières, les nouveaux processus et procédés, mais aussi l’électronique, l’informatique, la chimie et la biologie font partie intégrante de ces ateliers, autant comme moyens que comme objectifs de projets.

L’objectif de ces nouveaux ateliers et des démarches de création industrielle, consiste à s’éloigner de la production d’objets connus pour s’atteler à inventer des nouvelles situations et les nouveaux objets/services du XXIe siècle : les NéoObjets (objet programmable,  objet imprimable / téléchargeable, spime (3), objet à terminer, objet transformable, objet durable, etc.).

« Les Ateliers » constitue un lieu de projet et de prototype, en cela il est aussi un lieu des pensées émergentes sociales, esthétiques, scientifiques et techniques qui incarnent des situations nouvelles dans des objets, systèmes, services, logiciels et médias.

Il tire sa richesse de la diversité des êtres qui le fréquentent et le pratiquent, plutôt que des machines qui l’équipent.

C’est donc une fabrique de pensée où l’on conçoit, crée, dialogue avec des expertises pluridisciplinaires, mais également un lieu dans lequel on représente, forme et propose. Il ne sépare pas le pourquoi du comment, la conception de l’exécution. L’atelier s’éloigne de la fiction et de la communication spéculative, en cela il est dans le réel.

« Les Ateliers », à l’ENSCI, est bien un lieu d’échanges, de création, d’expérimentation, de reconstruction, de modélisation tant théorique que pratique. L’endroit où naissent les « propositions » et les « choses ».

Le « salon » comme nouvel « atelier »
Un lieu où naissent les idées


« Les Ateliers » du XXIème siècle est une proposition de réponse aux défis qui s’annoncent. C’est un véritable changement d’âge : ère numérique, économie de la connaissance et crises successives (politiques, économiques, sociales, morales, éducatives). En cela, ils s’inscrivent dans la figure de la renaissance et des salons des lumières. Il propose pour une nouvelle forme de production d’intelligence nécessaire à l’équilibre de notre culture.

Ce « salon-atelier » est un espace physique collectif de rencontres, d’échanges, de propositions et de convergences avec la recherche, la science, le design, l’art, l’ingénierie, les sciences de gestion, les sciences humaines et sociales… Il élargit et redéfinit l’univers du laboratoire en l’ouvrant à d’autres modèles et à l’innovation. Il est organisé autour du progrès social, des nouveaux modes de production et des économies locales. Il s’agit d’un mode d’organisation ouvert, agile (4), ascendant, modifiant l’organisation hiérarchique d’hier et libérant la créativité de tout un chacun. Ce modèle accélère les processus de propositions, fait émerger les talents et les énergies.

C’est un lieu de pensée et d’action qui interpelle les conditions de production des connaissances (universités, laboratoires, écoles, entreprises, collectivités territoriales) comme les rapports sociaux.

« Les Ateliers » met la pratique et la démarche expérimentale, utilisées par le design, au cœur de l’apprentissage et de la production de connaissance et d’innovations.

« Les Ateliers » propose un nouvel espace de projet pour le XXIème siècle qui conjugue connaissance, savoir, processus, savoir-faire dans un mode pratique. Le prototype et le démonstrateur sont ses moyens d’expression.

Ses acteurs possèdent des profils variés permettant des approches pluridisciplinaires et relevant de la culture de la sérendipidité et des découvertes (amateur, bricoleur, ou apprenant).

Ce lieu, où l’on pense et où l’on fait, rééquilibre les caractéristiques abstraites de notre culture, de notre système éducatif et de notre société. Le « salon ateliers » réunit les antagonismes ou les dialectiques de l’art et de l’industrie, de la science et du progrès, de la technique et de l’anthropologie, de la conception et de la fabrication qui, dans un monde complexe, ne devraient plus être opposés, mais cohabiter dans un même espace d’invention collective.

Le design est au centre de cette pensée active et expérimentale. Il introduit les pratiques, inductive et intégrative, des savoirs faire techniques et artistiques et des concepts théoriques et scientifiques.
La forme des dispositifs et des productions est un enjeu majeur et central pour proposer des représentations, formes, symboles, usages, adoptions et désirs, intelligence et esthétique.

« Les Ateliers », par son modèle, permet d’élargir la culture de l’analyse et de la synthèse cartésienne à l’approche d’analyse sensible et de synthèse créative du design.
Savoir penser – savoir-faire – savoir faire faire – savoir-faire ensemble – et  faire pour comprendre  sont les points clés de la démarche du design que nous pouvons apporter à ces nouveaux salons ateliers. Ils sont une opportunité pour « enfin » intégrer le potentiel du design dans « la culture française ».

Un « cabinet d’objets », ouvert et participatif
Un lieu où se fabrique la transdisciplinarité

« Les Ateliers » s’expose et expose. C’est l’espace collectif de l’imaginaire et des possibles, dans lequel on peut voir les processus en train de se faire, un lieu où l’on apprend et on échange, un lieu ou l’on écoute et on contribue. Et on sait que mettre en lumière les choses en train de se faire favorise les vocations, les transformations, les échanges et les propositions.

Les dimensions intégrative, politique, éducative, innovante, économique, sociale, technologique et scientifique de l’atelier en sont l’enjeu principal.
Rêver, proposer, faire, transformer, avancer, représenter et partager sont les objectifs majeurs de nos projets.

Dans notre monde abstrait où il est difficile de construire des offres adéquates et de désencombrer notre hyperconnaissance, il faut « faire place ».

« Les Ateliers » du XXIème siècle est un espace de propositions transdisciplinaires s’appuyant sur les fondamentaux de notre humanité.

Jean-Louis Frechin.


(1) Jean-Louis Monzat de Saint-Julien, premier directeur de l’ENSCI – Les Ateliers
(2) « Les entretiens du nouveau monde industriel » est une manifestation annuelle co-organisée par le Centre Pompidou / I.R.I., le pôle de compétitivité Cap Digital et l’ENSCI. Sa prochaine édition (19, 20 et 21 décembre 2011 à Beaubourg) aura pour thème « Les technologies de la confiance ».
(3) Selon Bruce Sterling, un « spime » est un objet qui est issu d’un ordinateur, est repérable dans l’espace et possède une mémoire de son histoire
(4) Méthode de conduite de projet, initiée au début des années 90 aux Etats-Unis, qui valorise des méthodes rapides de développement informatique et met en avant l’être humain et les usages.

Read More

essai placage

Read More

test défilement

Test d’affichage d’un défilement d’une phrase de 32 caractères.

 

Read More

SMS slingshot

Projet très intéressant d’interaction physique sur du contenu numérique.

Read More

test test

Premier test d’affichage sur l’afficheur via arduino.

Cet afficheur à la particularité d’être pré-monté et d’intégrer un puce facilitant sa programmation

en centralisant l’ensemble des commandes.

Néanmoins il à été nécessaire de ré-interpréter entièrement le code fournit pour qu’il soit compréhensible par arduino.

Malgré cette étape un peu délicate, ce composant facilite grandement le montage (seulement 5 fils sont nécessaire pour le relier à Arduino) et la manutention de l’ensemble.

Il est possible d’afficher des images BITMAP un fois transformées en code via un petit logiciel processing.

>>> La prochaine étape sera de gérer des animations verticales et horizontales de textes afin de pouvoir naviguer dans les menu de la radio.

Fabricant de l’afficheur:

http://www.sureelectronics.net/goods.php?id=1119

Read More

dirty prototyping for AD8400

///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);

vol is byte value 0-255

Read More