Example Projects
Workshops
Announcements
Actuators
Connections
Power
Sensors
Traces

Circuits and Code Wireless

Meet the Materials
Conductive Materials
Non-Conductive Materials
Tools
Techniques
Thinking Out Loud
Sensors
  • 3D Printed Sensors
  • Adjustable Slider
  • Analog Pin Stroke Sensor
  • Balloon Sensor
  • Beaded Sway Sensor
  • Beaded Tilt Sensor Swatch
  • Bonded Bend Sensor
  • Button Buttons
  • Button Switch
  • Capacitive Fabric Slider/Wheels
  • Cast Pressure Sensor
  • Circular Knit Inflation Sensor
  • Circular Knit Stretch Sensors
  • Conductive Pompom
  • Constructed Stretch Sensors
  • Copper Pompom
  • Crochet Button
  • Crochet Conductive Bead
  • crochet crotch lemon
  • Crochet finger Sensor
  • crochet pressure sensor
  • Crochet Tilt Potentiometer
  • Crochet/Knit Pressure Sensors
  • Crochet/Knit Squeeze Sensors
  • dangle data gloves
  • Danish Krown Slide-Switch
  • Dataglove Flex Sensor Rig
  • Donut Pot
  • Resistive Sensors Overview
  • Elastic Button Fabric
  • Embroidered Potentiometers
  • extreme knobbly knee sensor
  • Fabric Button
  • Fabric Potentiometer
  • Fabric Stretch Sensors
  • felted crochet pressure sensor
  • Felted Pompom Pressure Sensor
  • Finger Sensor
  • Fingertip Contact Switch
  • Fish Scale Sensor
  • Fleckerlteppich Pressure Sensor
  • Position Sensing on the Body
  • interested sensor #2
  • interested sensor #1
  • JoyButton
  • Kinesiology Tape bend sensor
  • Knit Ball Sensors
  • Knit Contact Switch
  • Knit Stroke Sensors
  • Knit Touchpad
  • Knit Wrist Sensors
  • Knit Accelerometer
  • Knit Stretch Sensors
  • Light Touch Pressure Sensor
  • Magnetic Pincushion Sensor
  • Matrix: Anti-Static Foam
  • Matrix: Kapton + Copper
  • Matrix: Neoprene
  • Matrix: Simple (by hand)
  • Matrix: Simple (by machine)
  • Matrix: Soft Fabric
  • Matrix: Stretchy Touchpad
  • Matrix: Woven (non-stretch)
  • Matrix: Woven (stretchy)
  • Needle Felt Squeeze Sensor
  • Neoprene Bend Sensor
  • Neoprene Pressure Sensor
  • Neoprene Stroke Bracelet
  • painted stretch sensor
  • Paper + Aluminum foil pressure sensor
  • Paper + Aluminum foil contact switch
  • Piezoresistive Fabric Touchpad
  • Pin Pot
  • Pin Stroke Gauntlet
  • Pompom Tilt Sensor
  • Pressure Button
  • Sheath Bend Sensor
  • Simple Fabric Pressure Sensors
  • DON'T TOUCH, MOVE
  • Skin Sensor
  • Sole Sensing
  • Spikey Stroke Sensors
  • Spinning Sensor Yarn
  • Stickytape Sensors
  • Stocking Skin Stretch Sensor
  • Stroke Sensor
  • Textile Sensor Demos for Summer School
  • Tilt Potentiometer
  • Tilt Potentiometer II
  • Tilt Sensor
  • VOLTAGE DIVIDER worksheet
  • Voodoo Sensor
  • Wimper Switch
  • Woven Pressure sensors
  • Wrist-Flick-Sensor
  • Zebra Fabric Stroke Sensors
  • Zipper Slider
  • Zipper Switch
  • Support the creation of content on this website through PATREON!
  • About
  • E-Textile Events
  • E-Textile Spaces
  • Newsletter
  • Print & Publications
  • E-Textile Shopping

  • SEARCH
    Content by Mika Satomi and Hannah Perner-Wilson
    E-Textile Tailor Shop by KOBAKANT
    The following institutions have funded our research and supported our work:

    Since 2020, Hannah is guest professor of the Spiel&&Objekt Master's program at the University of Performing Arts Ernst Busch in Berlin

    From 2013-2015 Mika was a guest professor at the eLab at Kunsthochschule Berlin-Weissensee

    From July - December 2013 Hannah was a researcher at the UdK's Design Research Lab

    From 2010-2012 Mika was a guest researcher in the Smart Textiles Design Lab at The Swedish School of Textiles

    From 2009 - 2011 Hannah was a graduate student in the MIT Media Lab's High-Low Tech research group led by Leah Buechley


    In 2009 Hannah and Mika were both research fellows at the Distance Lab


    Between 2003 - 2009 Hannah and Mika were both students at Interface Cultures
    We support the Open Source Hardware movement. All our own designs published on this website are released under the Free Cultural Works definition
    Sensors

    Matrix: Kapton + Copper

    A simple pressure sensor matrix made from two Kapton film sheets with 7×7 copper tape traces and a piece of Velostat or Eeonyx piezoresistive material in between.

    Flickr set >> https://www.flickr.com/photos/plusea/albums/72157704662279354

    Type-pad pressure matrix


    MAKING OF:

    Type-pad matrix

    Type-pad pressure matrix

    Type-pad pressure matrix

    Type-pad pressure matrix

    Type-pad matrix

    Type-pad pressure matrix

    Type-pad pressure matrix

    Type-pad pressure matrix

    Type-pad pressure matrix

    Type-pad pressure matrix

    Type-pad pressure matrix


    CIRCUIT & CODE:

    Teensy LC pinout:

    ARDUINO CODE:

    /*
    Matrix: Kapton + Copper
    A simple pressure sensor matrix made from two Kapton film sheets with
    7×7 copper tape traces and a piece of Velostat or Eeonyx piezoresistive
    material in between.
    parsing through this grid by switching individual rows/columns to be
    HIGH, LOW or INPUT (high impedance) to detect location and pressure.
    >> http://howtogetwhatyouwant.at/
    */

    #define numRows 7
    #define numCols 7
    #define sensorPoints numRows*numCols

    int rows[] = {A0, A1, A2, A3, A4, A5, A6};
    int cols[] = {11,10,9,8,7,6,5};
    int incomingValues[sensorPoints] = {};

    void setup() {
    // set all rows and columns to INPUT (high impedance):
    for (int i = 0; i < numRows; i++) { pinMode(rows[i], INPUT_PULLUP); } for (int i = 0; i < numCols; i++) { pinMode(cols[i], INPUT); } Serial.begin(9600); } void loop() { for (int colCount = 0; colCount < numCols; colCount++) { pinMode(cols[colCount], OUTPUT); // set as OUTPUT digitalWrite(cols[colCount], LOW); // set LOW for (int rowCount = 0; rowCount < numRows; rowCount++) { incomingValues[colCount * numRows + rowCount] = analogRead(rows[rowCount]); // read INPUT }// end rowCount pinMode(cols[colCount], INPUT); // set back to INPUT! }// end colCount // Print the incoming values of the grid: for (int i = 0; i < sensorPoints; i++) { Serial.print(incomingValues[i]); if (i < sensorPoints - 1) Serial.print("\t"); } Serial.println(); delay(10); }

    PROCESSING CODE:

    /*
    Code based on Tom Igoe’s Serial Graphing Sketch
    >> http://wiki.processing.org/w/Tom_Igoe_Interview

    Reads X analog inputs and visualizes them by drawing a grid
    using grayscale shading of each square to represent sensor value.
    >>
    */

    import processing.serial.*;

    Serial myPort; // The serial port
    int maxNumberOfSensors = 49;
    float[] sensorValue = new float[maxNumberOfSensors]; // global variable for storing mapped sensor values
    float[] previousValue = new float[maxNumberOfSensors]; // array of previous values
    int rectSize = 0;
    int rectY;
    void setup () {
    size(600, 600); // set up the window to whatever size you want
    rectSize = width/7;

    println(Serial.list()); // List all the available serial ports
    String portName = Serial.list()[2];
    myPort = new Serial(this, portName, 9600);
    myPort.clear();
    myPort.bufferUntil(‘\n’); // don’t generate a serialEvent() until you get a newline (\n) byte
    background(255); // set inital background
    smooth(); // turn on antialiasing
    rectMode(CORNER);
    }

    void draw () {
    for (int i = 0; i < maxNumberOfSensors; i++) { fill(sensorValue[i]); rect(rectSize * (i%7), rectY, rectSize, rectSize); //top left if((i+1) % 7 == 0) rectY += rectSize; println(rectY); } rectY=0; } void serialEvent (Serial myPort) { String inString = myPort.readStringUntil('\n'); // get the ASCII string if (inString != null) { // if it's not empty inString = trim(inString); // trim off any whitespace int incomingValues[] = int(split(inString, "\t")); // convert to an array of ints if (incomingValues.length <= maxNumberOfSensors && incomingValues.length > 0) {
    for (int i = 0; i < incomingValues.length; i++) { // map the incoming values (0 to 1023) to an appropriate gray-scale range (0-255): sensorValue[i] = map(incomingValues[i], 0, 1023, 0, 255); //println(sensorValue[i]); } } } }



    Leave a comment