- Copyright: (c) Wear It Berlin - Foto-Credit: (c) Wear It Berlin / Michael Wittig, Berlin The fashionhackday took place at the Fablab Berlin. |
- Copyright: (c) Wear It Berlin - Foto-Credit: (c) Wear It Berlin / Michael Wittig, Berlin Me (Nadja Kutz) talking at Fashionhackday. |
In the video the basic features are shown and briefly explained. In order to set-up something similar you need, apart from the conductive fabrics and yarns, the following components: A Bluefruit Feather 32x4 or a Feather MO and for the capacitive sensing MPR121 breakoutboards. The general hook-up for the Feathers and the MPR121 is exactly as described in the Adafruit tutorials. The Arduino MasterFile for the set-up is Keymaster.ino. In addition you also need the BluefruitConfig.h from Adafruit. The Feather can accomodate up to 4 MPR121 boards that means it is able to digest up to 48 fabric patches. Each MPR121 sends 12 bits for the 12 patches, which are hooked to it. In Keymaster.ino currently only the first 12 bits are used for letters.
This document documents the current status of the project.
This page here documents what we tried. If you want to build something similar feel free to do so but we can not be made responsible for any damage, failure to deliver the expected performace or whatever. The file Keymaster.ino is merging and supplementing two Adafruit softwares, which are referenced in the file. The merger was written by Tim Hoffmann. it has a MIT/BSD Licence (see files).
The Julia File and the table file (see below) were also written by Tim Hoffman (MIT Licence).Being able to change the assignment of MPR121 bits to letters fastly (i.e. the assignment of letters to fabric patches) is important for testing out different usability approaches. Doing this by hand in keymaster.ino would easily become messy so this is done via an assignment table. The concrete assignment is described in the following.
The assignment of letters to patches (or to pins if you want) was very much inspired by a precursor project which was just a simple keyboard-3x5-grid cuff:
It seems easier to remember letter assignments on such a grid then like via a long row. So the assignment of letters to the 12 MPR121 bits is made similarily - that is the 12 bits of the MPR121 are partitioned into 4 blocks with 3 bits each and then the 3 bits are used for encoding a 4 digit word with base 4, that is a 3 bit block is
encoded as:
000 means 0
001 means 1
010 means 2
100 means 3
if more than 1 bit is set then the highest bit only counts, so 011 is the same as 010. As an example: The 12 digit base 2 number: 001 010 001 111 becomes then the 4 digit base 4 number: 1 2 1 3.
The modifier ctrl, shift, alt and cmd are currently the first 4 bits of the second MPR121.
To make life easier the 4 digit base 4 number and the modifiers can be hooked to letters via the table in km.cfg.
The Julia program compileConfig.jl translates the table into a C-Headerfile which is the file km.h. That is if you change the letter-to-bit-assignments you would need to rerun the Julia program or edit the header file.