Log-in | Site Admin

CREDITS: Hannah Perner-Wilson
DIMENSIONS: 100 x 100 x 5 mm

Their enticing sharpness allows pins to pierce through materials, including our skin. Being made of metal they are able to conduct electricity, and can be used to close a circuit to detect touch. As simple and commonly known tools they are transparent and familiar, and we use them to manipulate our world.
16 pins are poked through ring of highly resistive fabric, making them contact points along a resistive track. The heads of these pins are contained in a space sandwiched between two layers of translucent conductive mesh. These layers of mesh are connected to the only pin that does not contact the resistive track. A metal ball is free to move around inside this cavity, closing the contact between the head of a pin and the conductive mesh. Depending on which pin head the ball contacts, the resistance reading between the pin leads (+/- and signal) will vary. From this information we can infer the position of the ball and thus the angle/direction this dangerous sensor is headed.



For the concept of tilt sensing:

Beaded Tilt Sensor, 2009 by Hannah Perner-Wilson >> http://etextile-summercamp.org/swatch-exchange/beaded-tilt-sensor/

For their use of found/existing/natural materials:

Harvest Weave, 2013 by Melissa Coleman >> http://etextile-summercamp.org/swatch-exchange/harvest-weave/
Crochet Accelerometer, 2013 by Mika Satomi >> http://etextile-summercamp.org/swatch-exchange/crochet-accelerometer/
Water Connector, 2014 by Marta Kisand, Barbro Scholz, Esther Stühmer >> http://etextile-summercamp.org/swatch-exchange/water-connector/

Use of non-woven Eeontex for resistive and piezoresistive sensing:

Matrix, 2012 by Maurin Donneaud & Laurent Malterre >> http://etextile-summercamp.org/swatch-exchange/matrix/
Fish Scale Sensor, 2016 by Mika Satomi >> http://etextile-summercamp.org/swatch-exchange/fish-scale-sensor/



Tailor’s straight pins, Veilshield (very fine Polyester mesh plated in Zinc/Nickel/Copper), Eeontex NW170-PI-20 (Polyester/Nylon non-woven doped in carbon), glass beads, 5mm thick synthetic felt, conductive thread, ball bearing(s)

VeilShield >> https://lessemf.com/fabric3.html#1270
Eeontex non-woven >> http://eeonyx.com/


Cutting or lasercutting, poking pins through materials, layering, sewing



Veilshield circle: 2.5cm diameter
Felt ring: 2cm inner diameter, 3cm outer diameter
Eeontex ring: 3.5cm inner diameter, 5cm outer diameter


Anatomy of a Pin >> http://www.plusea.at/?category_name=anatomy-of-a-pin
First version >> https://www.flickr.com/photos/plusea/sets/72157666744649176

Step-by-Step Instructions

1) trace the pattern pieces to the materials and cut out: the Veilshield circle, the felt ring, the eeontex ring.
2) prep 16 pins with 3 beds each (one pin had different colour beads) and store on a piece of felt.
3) mark 16 positions around the felt and Eeontex rings (20 degree segments).
4) poke the pins through the felt and into the eeontex ring.
5) snip out the segment of Eeontex on the differently coloured beaded pin.
6) wrap a 3mm wide strip of conductive fabric around the felt ring and poke the differently coloured pin through it.
7) thread a needle with conductive thread and sew the Veilshield rings to either side of the felt ring. Before finishing, insert the ball bearing!

Step-by-Step Photos

…coming soon…

Step-by-Step Videos

step1: prepping beaded pins

step2: cutting veilshield circles

step3: marking felt rings

step4: poking pins through felt ring

step5: sewing things together


Arduino Code:

ARDUINO CODE for the Dangerous Tilt Sensor Swatch.
Maps incoming analog sensor value to a range depending on number of pins.
Writes the mapped value to the Serial port.

void setup() {

void loop() {
int sensorVal = analogRead(A0);
sensorVal = int(map(sensorVal, 0, 1023, 0, 18) );

Processing Code:

PROCESSING CODE for the Dangerous Tilt Sensor Swatch.
Receives mapped analog input value from an analog tilt sensor.
Draws circles in a circle and fills the currently active one red.
Based on Serial Graphing Sketch by Tom Igoe.

import processing.serial.*;

int tiltPositions = 18;
int maxNumberOfSensors = 2;
Serial myPort;
int[] sensorValues = new int[maxNumberOfSensors]; // array of previous values
float[] previousValue = new float[maxNumberOfSensors]; // array of previous values

void setup () {
size(1000, 700);
String portName = Serial.list()[1];
myPort = new Serial(this, portName, 9600);

void draw () {

void circle() {
int circleSize = 50;
translate(width/2, height/2);
println(sensorValues[0] + ” mapped: ” + sensorValues[0]);
//sensorValues[0] = int( map(sensorValues[0], 0, 1023, 0, tiltPositions) );
for (int i = 0; i <= tiltPositions; i++) { pushMatrix(); if (sensorValues[0] == i) fill(200, 0, 0); else fill(0); rotate(i*TWO_PI/tiltPositions); ellipse(300, 0, circleSize, circleSize); popMatrix(); } } void serialEvent (Serial myPort) { // get the ASCII string: String inString = myPort.readStringUntil('\n'); // if it's not empty: if (inString != null) { // trim off any whitespace: inString = trim(inString); // convert to an array of ints: int incomingValues[] = int(split(inString, ",")); sensorValues[0] = incomingValues[0]; } }


Calculating the circumference of a circle for spacing the holes evenly:

C = circumference of circle
π = pi
r = radius of circle
diameter = diameter of circle = 2 x r

C = π x d = 2π x r

If r = 2.5cm
C = π x 5 = 7.9cm

7.9cm / 18 pins = 4.4mm intervals/spacing

Leave a Reply