Group 2 – Vincent

Cecile Gay 4éme année textile (website)
Caroline Grout 2éme année vêtement
Martin De Bie étudiant-chercheur ensadlab DCIP (website)
VINCENT
Vincent is a chair. A chair who refused to treated like a static and unfeeling. Vincent is not a regular chair, you can stay close from him but not sit on. Vincent is chair with who you can communicate, speak during hours.
The Vincent project is an experimental research of interaction between man and object. We have trying to express emotions across a chair, to create a real connivance. We have thinking about different interaction with the object (tactile, oral…) thanks to differents sensors. We have trying to create his own language with littles motors or vibrators, using the acoustic of the wood or the little piece of metal to find different kind of speach (friendly, formal, unhappy…).
Video: Presentation of Vincent
++++++++++++++ BRAINSTORMING ++++++++++++++
After we find the idea, the most important what to determinate the best place on the chair for the interaction.
++++++++++++++ EXPERIMENTATION ++++++++++++++
We have experiment a lot of different system to make some noise, sound with motors, vibrators, sometimes by using a makerbot to print some piece, like a screw.
++++++++++++++ BUILDING OF THE CHAIR ++++++++++++++
Video: Vincent say hello world
++++++++++++++ BUILDING OF THE CUSHION ++++++++++++++
We have use a red fabric to screen printing on it black thermochromic ink. The system use to heat the ink is a pattern sew with conductive thread, which when we put electricity inside is resistive so the thread heat up and let the pattern appears on the cushion. The idea for the cushion was to imagine it as a part of vincent so when you want pull it out is like undressed vincent so the cushion start to blushing.
Video: Try thermochromic ink on cushion
++++++++++++++ CODE ++++++++++++++
++++++++++++++ DEBUG (a lot) ++++++++++++++
++++++++++++++ FINAL PRESENTATION ++++++++++++++
++++++++++++++ TECHNICAL PART ++++++++++++++
For sensors, we have use capacity sensor, perfect for feel different move and caresse with.
++++++++++++++ ELECTRONIC CIRCUIT ++++++++++++++
++++++++++++++ ARDUINO CODE ++++++++++++++
////////////////////////////////////////////////
///////////////////VINCENT///////////////////
////////Final code from Dileck//12/01/2012/////
////////////////////////////////////////////////
//Libraries
#include <Servo.h>
#include <CapSense.h>
//////////////////////////VARIABLE////////////////////////
//Variable motorOrchestra
int PlayHeadOrchestra=0;
int motorPins[]= {11,10,9,8,7 };
int motorOrchestra[26][5] = {
{ 0,0,0,0,0 },
{ 255,0,0,0,0 },
{ 0,255,0,0,0 },
{ 0,0,255,0,0 },
{ 0,0,0,255,0 },
{ 0,0,0,0,255 },
{ 255,255,0,0,0 },
{ 0,255,255,0,0 },
{ 0,0,255,255,0 },
{ 0,0,0,255,255 },
{ 255,0,255,0,0 },
{ 0,255,0,255,0 },
{ 0,0,255,0,255 },
{ 255,0,0,255,0 },
{ 0,255,0,0,255 },
{ 255,255,255,0,0 },
{ 0,255,255,255,0 },
{ 0,0,255,255,255 },
{ 255,0,0,255,255 },
{ 255,255,0,0,255 },
{ 255,255,255,255,0 },
{ 0,255,255,255,255 },
{ 255,0,255,255,255,},
{ 255,255,0,255,255 },
{ 255,255,255,0,255 },
{ 255,255,255,255,255 },
};
//Variable motor
int motorCaress1 = 13;
int motorCaress2 = 12;
int helice = 6;
int heliceValue;
int motorCaress1Value;
int motorCaress2Value;
//Variable servoServo myservo;
int servoPos = 0;
//Variable Tilt
int tiltState=0;
const int Tilt= 5;
boolean cut = false;
boolean lastCut = false;
//Variable capSense
CapSense cs_30_31 = CapSense(30,31);
CapSense cs_32_33 = CapSense(32,33);
CapSense cs_42_43 = CapSense(42,43);
CapSense cs_48_49 = CapSense(48,49);
CapSense cs_52_53 = CapSense(52,53);
long total1;
long total2;
long total3;
long total4;
long total5;
//////////////////////////SETUP////////////////////////
void setup(){
//Autocalibrate cap sense
cs_30_31.set_CS_AutocaL_Millis(0xFFFFFFFF);
cs_32_33.set_CS_AutocaL_Millis(0xFFFFFFFF);
cs_42_43.set_CS_AutocaL_Millis(0xFFFFFFFF);
cs_48_49.set_CS_AutocaL_Millis(0xFFFFFFFF);
cs_52_53.set_CS_AutocaL_Millis(0xFFFFFFFF);
//Attach servo on pin 4
myservo.attach(4);
//pinMode
pinMode (motorCaress1,OUTPUT);
pinMode (motorCaress2,OUTPUT);
pinMode (helice,OUTPUT);
Serial.begin(9600);
}
//////////////////////////LOOP////////////////////////
void loop(){
tiltState = digitalRead(5);
//Serial.println(“tilt: “);
//Serial.println(tiltState);
//Serial.println(“cut: “);
//Serial.println(cut);
if(tiltState == HIGH) {
if (cut == true) {
delay(3000);
servo();
cut = false;
}
capsense();
}
else if (tiltState == LOW) {
cut = true;
}
delay(10);}
//////////////////////////FUNCTION////////////////////////
//Servo move when chair tilt
void servo(){
for(servoPos = 50; servoPos < 180; servoPos += 1) {
myservo.write(servoPos);
delay(15);
}
for(servoPos = 180; servoPos>=1; servoPos-=10)
{
myservo.write(servoPos);
delay(15);
}
}
//Capacity sensor use to activate vibration motor
void capsense(){
long start = millis();
long total1 = cs_30_31.capSense(30);
long total2 = cs_32_33.capSense(30);
long total3 = cs_42_43.capSense(30);
long total4 = cs_48_49.capSense(30);
long total5 = cs_52_53.capSense(30);
motorCaress1Value = map( total1, 0, 10000, 20, 255);
analogWrite(motorCaress1, motorCaress1Value);
motorCaress2Value = map( total2, 0, 10000, 20, 255);
analogWrite(motorCaress2, motorCaress2Value);
heliceValue = map( total3, 30, 10000, 0, 255);
analogWrite(helice, heliceValue);
//Serial.print(“helice: ”);
//Serial.println(heliceValue);
//Serial.print(“total1: ”);
//Serial.println(total1);
//Serial.print(“total2: ”);
//Serial.println(total2);
//Serial.print(“total3: ”);
//Serial.println(total3);
//Serial.print(“total4: ”);
//Serial.println(total4);
//Serial.print(“total5: ”);
//Serial.println(total5);
if(total4>=500)orchestra();
if(total5>=500)orchestra();
delay(100);
//Serial.print(millis() – start);
}
//Launch the orchestra motor
void orchestra(){
Serial.print(“ORCHESTRA”);
for (int motorCount = 0; motorCount <=4; motorCount++) {
analogWrite(motorPins[motorCount], motorOrchestra[PlayHeadOrchestra][motorCount]);
}
PlayHeadOrchestra++;
delay(random (1000,5000));
if (PlayHeadOrchestra>=4) PlayHeadOrchestra=0;
}























