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