capteur textile

inspiration : http://etextile-summercamp.org/swatch-exchange/haptic-crochet/

Ce capteur textile permet d’envoyer des données sur processing, pour créer des images.

matériel :
fil conducteur, matériau textile – ici le fil conducteur est tissé dans une maille
résistance 10M, pince croco & un arduino

branchement :
brancher la résitance sur les pin 2 et 4 (digital) de l’arduino, puis branchez la pince croco, reliée au textile et au fil conducteur, sur la résistance (côté pin 2)

codes :
il faut en premier lancer le code arduino, puis le code processing

// -----------------------------------------------------------------
//                         code arduino

// librairie pour le sensor
#include <CapacitiveSensor.h>
// librairie pour envoyer vers processing
#include <Firmata.h>

CapacitiveSensor   cs_4_2 = CapacitiveSensor(4, 2);       // 10M resistor between pins 4 & 2, pin 2 is sensor pin

void setup() {
  cs_4_2.set_CS_AutocaL_Millis(0xFFFFFFFF);
  Firmata.begin(57600);
}

void loop() {

  long total1 =  cs_4_2.capacitiveSensor(30);

  // envoyer la valeur à processing
  // le premier chiffre < 15
  Firmata.sendAnalog(8, total1);

  delay(10);
}
// -----------------------------------------------------------------
//                         code processing 

// déclarer arduino
import processing.serial.*;
import cc.arduino.*;
Arduino arduino;

// déclarer les variables
int total1;
float totalmap;
float totalmap2;

int a = 1; // coordonnée
int x = 0; // exemple pour if
int c = 0; // couleur

float count = 0;
float speed = 0.05;

void setup() {
  size(1000, 1000);
  background(255, 255, 255);
  noFill();
  //  frameRate(10);
  //  récupérer l'arduino
  arduino = new Arduino(this, Arduino.list()[0], 57600);
}

void draw() {
  // lire la valeur d'arduino avec firmata + print + map
  // avoir la même valeur que dans le code arduino - ici 8
  total1=arduino.analogRead(8) ;
  println(total1);
  totalmap = map(total1, -6, 4000, 0, width);

  // dessiner des ellipses
  if (x < 2) { 
    stroke (c);
    ellipse(a, totalmap, totalmap2, totalmap2);
    a = a + 1;
    totalmap2 = map(total1, 0, 4000, 1, 8); 
    if (a > width) {  
      c = c + 50;
      a = 0;
    }
  } else {
    ellipse(a, width/2, 5, 5);
  }
}