Haptic Workshop Notes

Tyson Moll

This week’s task: try out three different experiments based on our class outline for haptics and record our findings.

Experiment 1: Hello Vibe Motors

In this experiment we were tasked with testing out the basic functionality of LRA (linear resonance actuator) vibrating motors  with Arduino sample code.

With the basic digital “Blink” code, we saw the motors performing at high intensity. Switching to an Analog output allowed us to change the intensity of the vibration and adjust the intensity over time. Decreasing the delay between vibrations seemed to make the motors feel less intense but made the on/off pattern more distinct. The “Fading” example code allowed us to play with the intensity of the vibrations with analog output.

The vibration felt vaguely uncomfortable on more sensitive regions of skin, such as the back of my hands and around the lips. The intensity felt similar on my fingerpads, albeit not uncomfortably so. Testing out the vibrations on less sensitive areas such as cloth-covered legs and regions of my arms made the vibrations feel less noticeable and bothersome.

The difference threshold for me was an analog output value of about 40 (out of 255); I had to close my eyes and concentrate on the motor to detect its action, which reminded me of some meditation teachings that my cognitive science professor once showed us… focusing on an element of the body  Any lower and it became difficult for me to determine whether I felt anything besides my own pulse.

Experiment 2: Motor Arrays

For this experiment we used several motors in order to note any differences from single-motor sensations and see if we could detect any haptic illusions.

With two and three motors vibrating in .2 second cycles, it created a pulsating effect that felt as if a single force was pushing against my thumb in a discrete direction.

Using the “fading example” made the rising/fading effect overall more noticeable. I tried having two motors fade with opposite values (e.g. 12% and 88%) and it made the vibration seem to move. Interestingly, it seemed as if this motion was more noticeable when the motors were positioned horizontally relative to my body than vertically; positioning the motors on my fingers across or along its length also had a different effect (especially when the motors were placed on separate pads of my fingers), but it didn’t seem as discrete as changing their relative position to my chest. Maybe I am misinterpreting this feeling but it could have some sort of connection with the body’s ability to sense the relative position of body parts.

Increasing the speed of this pattern created a pinching effect whenever they changed from increasing to decreasing vibrations. My guess is that this is caused by the hands detecting a sudden shift or delay in the pattern of vibration. The apparent back and forth movement was also more apparent.

I also created another version of the ‘fading’ code with three different offset values for each vibration motor, but the results were vague and difficult to interpret when in contact with several body parts.

Without a physical bonding apparatus we found testing out the motors easiest when we squeezed them between our fingers securely. I later tried out masking tape as a securing apparatus. Attaching the motors to my desk surface made an effect that resonated not unlike vibrating cellphones on classroom desks: the effect carried across the surface, although the patterned action was less noticeable. I also tried attaching two of the motors to the back of my shoulder and triggered two successive, slightly fading ‘pokes’ using relatively strong pulses.

Experiment 3: Haptic Motor Drivers

For the final experiment we had the opportunity to try out Adafruit’s haptic motor drivers (HMD). In preparation, we downloaded the relevant library through Arduino’s library manager and opened up a basic example code that cycled through all of the drive modes on the HMD’s chip. Some were gentle, some sharp, some subtle. I’m not certain I can say I have a favorite effect or that any of them are of particular interest but being able to readily access this variety of options via a chip seems convenient. I did find the transitions between the hums and other similar behaviours very streamlined, however; the idea of being able to smoothly chain these behaviors in sequence seems like its most useful trait.

The last task we were assigned was to represent how our day went yesterday as a series of haptic buzzes, paired with some sort of sensor. Instead of developing such an arbitrary representation, I wired up the vibration driver with the ultrasonic sensor I covered in the previous experiment and added a few additional thresholds, resulting in a device that increases or decreases its rate of pulsing based on how close an object is to the sensor. It reminded me of the use of rumble in Nintendo Gamecube controllers, especially in ‘hot / cold’ scenarios where approaching items of interest would increase the rate of vibration. I suppose this could be handy as a means of navigating while blind; it could even be translated into some sort of maze-navigating game.

In conclusion, haptics provide an underused means of sensory communication in a world dominated by visual and audio cues and haptic illusions are quite exciting in their ability to convey information through simple repeated movement.


Playing with Fabrics: The Eeonyx Strech Sensing Textile and star pad

For this workshop I played and experimented the Eeonyx stretch sensing fabric to send messages to processing and activate certain commands. I  wanted to create switch operations when the fabric was stretched out or not.

Figure 2. Setup.
Figure 2. Setup.
Figure 1. Eeonyx Stretch Sensor.
Figure 1. Eeonyx Stretch Sensor.

Originally, I was going to experiment with the Eeonyx StaTex Conductive Fibre and create a visualization of rain. When the conductive fabric was squeezed the rain would appear in the sketch. Holding something grey and soft like fibre reminded me of a rain cloud so I thought I’d try this idea. However I lacked materials and time so I went with the stretchy fabric route and would attempt the former later.

Here’s my workshop notes on a couple of the fabrics change of resistance I got to explore:

Figure 3. Workshop 2 notes.
Figure 4. Workshop 2 notes.

I used the AnalogOutSerial code from Arduino to get the values from the stretchy fabric. Whenever I stretched the fabric its resistance would change by one number. I wanted to translate this data to a processing sketch and change the background when the number changes.

Unfortunately this idea was much more difficult to execute then I realized. The sensor was really finicky and caused the background to flash when I stretched my sensor.



I tried this again with the touch pad sensor. The values were much more responsive when I touched it but I got the same finicky problem in Processing.

I also notice the change of resistance value would never be the same number when I closed the processing sketch.  Sometimes it would go below or jump to a high number so my if statements would not work and I would have to change the numbers.


Wether I had used the wrong code or was not filtering the data properly to get an on/of digital affect with analog data, I wish to explore the resistance of change with fabrics further and possibly create other scenarios and prototypes.


Reminder String with Bracelet

Experiment by: April De Zen


The purpose of this assignment is to create an ambient reminder, taking that into consideration I thought it would be neat to update the old string on your finger trick for reminders. The new twist would be having the string change colours on your finger to remind you. Since this will need some battery power, I added a bracelet to the design so the ring wouldn’t become bulky.

Materials & Tools
Thermochromic pigment
1 roll of conductive thread
1 roll of resistive thread
1 roll of regular thread
1 roll of yarn
1 piece of sheet felt
3x 3V round battery
Sewing needles
2 Alligator clips
DIY French knitting kit

Workshop and experiments
In class we experimented with Thermochromic pigments. We dyed fabrics and threads and blended the pigments with white paint as well. We tested how resistive thread can be used to send a low current through the pigment in the fabrics to change the colour.

Creating the wearable
After formulating my idea, I started making it. First using a DIY French knitting tool (link to instructions) I created the base of the bracelet and left extra yarn on each side to create a ring. My 1st bead was to use the resistive thread and use my friendship bracelet making skills to weave the thread into the yarn (link to friendship bracelet instructions). Once the thread was incorporated into the yarn I could start testing to see if the colour would change to white and how much voltage I would need — at least that was the plan.

screen-shot-2019-02-14-at-10-40-06-am screen-shot-2019-02-14-at-10-36-06-am

1st Failed Attempt
Turns out, the pigment on the thread brushed off if you handle it to much so as I was weaving the tread the pigments change right off and there was no colour left on the thread. I still ran a line of conductive thread for the resistive thread through the bracelet because I was convinced I would find a way to fix the colour issue.


2nd Failed Attempt
Disclaimer: DO NOT DO THIS.
I had a thought that I would try painting the pigment on and for some reason I thought I would use the conductive thread instead of the resistive thread. I thought it would work better…
I wove the conductive thread to the yarn and painted the pigment on. When I tried to test it, it sparked immediately and blew out my batteries. Bad idea.


3rd Failed Attempt
Back at the studio, I got my hands on some more pigment mixed in water do I could try dying the 1st attempt to bring the colour back. I thought this worked, it was bright blue and looking amazing. When I tested it, the thread turned white just like it should but when it was disconnected it didn’t go back to blue. It stayed white. Another fail.


4th Attempt (not ideal)
Out of complete desperation, I another took a test piece of yarn and 5 strands of resistive thread and quickly knotted the yarn with the thread. Then I painted it to see if this would work. Maybe I could still save my original prototype by painting instead of dying the thread. Upon testing, it looked like it would work so I have it a go.


Next Steps
I really don’t like these pigment, I don’t know if I even want to take this any further. Not sure if it’s just a bad batch of pigments or if I missed an important step to setting the colour but I really didn’t enjoy this medium.

Activity Nudger

The concept:

The Activity Nudger light is a desktop companion that notifies a person working at their desk when they have been sitting for more than an hour, gently nudging them to get up for a few minutes. The device works with an on-off switch mechanism that controls the two states a person can be in. i.e Stationary Mode and Mobile Mode. While in Stationary Mode the device lights up white with a yellow ring and when in Mobile Mode, it glows ambiently in a greyscale color scheme slowly changing colors from black to white.

The design / Worksheet:


  • Display info that is important but not critical:

Activity nudge shows the user time information in a visual manner. It informs them that they’ve been working for at least an hour and are due a break. The info is not critical in that, if the user feels like they are not ready for a break yet, they can simply reset the Stationary mode by pressing the button to toggle the state. Ignoring the device, does not result in any critical side-effects.

  • Can move from the periphery to the focus of attention and back again.

When the device is in Stationary mode, it is in the periphery as no animations are happening, allowing the user to focus on their task at hand. When it switches into mobile mode, the ambient nudge, gently notifies the user and becomes the focus of attention. However, the user can with the click of a button, switch back to stationary mode thus shifting the device back to the periphery.

  • Focus on the tangible; representations in the environment

It is also a small, portable device that sits atop one’s desk and blends into the study/work environment non-intrusively. When it is off, it still blends into the desk environment as it looks like a small book.

  • Provide subtle changes to reflect updates in information ( should not be distracting)

The Activity Nudger stays white in stationary mode and when in mobile mode it lerps through a greyscale color scheme that it not distracting to the eye as it gradually changes going from white to greys to black with the yellow ring turning white as an additional indication of state.

  • Aesthetically pleasing and environmentally appropriate

The book theme fits into the office/study environment. Additionally, I would like the glass for the book to be frosted so that the ambient lights are even more muted and less distracting.

Low-fidelity Prototype:

Parts list:

  • Arduino Genuino Micro
  • 1 concave pushbutton
  • 1 single LED light
  • Jumper cables
  • Breadboard
  • 220 Ohms resistor
  • 10k Ohms resistor

screenshot-2019-02-14-004120Circuit diagram created on circuit.io web app.


Arduino code:

The Arduino code for the device monitors signals from the push button and passes data to a Processing sketch over serial communication. Using an if condition, I toggle between the Stationary & Mobile state whenever the button is pressed.




Processing code:

The Processing code alerts a user to get active by creating an ambient nudge notification that tells them they have been stationary or working on something for at-least an hour. During testing, time was sped up to switch the state from stationary to nudge for mobile after a minute. When designing your own activity nudge use the time values you desire. I user 60 steps for 60 seconds a min and 60 min and hour, I user 1000 to represent 1 second. For an hour change this to 3,600,000  in the millis() check.

When msg is received over serial communication in serialEvent(), the string is split into an array and then depending on the state i.e 1 = = Stationary and 2 == Mobile, the isMobile boolean value is then set. This is what the draw loop determines to which animation to draw.

In my draw loop I use the millis function to run at set time intervals and change the background from black to grey in the Mobile state. In the Stationary state, the millis() check is used to figure out when to trigger the ambient nudge notification if a user has been in the Stationary state for atleast an hour or when testing atleast a minute.






When you need to run algorithms that happen over time – it is better and more efficient to use the millis() function. I had attempted to use a for loop and count down from a specific number to determine what color to make the ambient background, however this didn’t work because the loop still ran too fast and i couldn’t get the gradual change in colors and millis() gives a much cleaner solution.

Found a nice circuit diagram creation web app: Circuit.io


Github link to code: here

Performing an action every x-seconds : here


Keep Walking!

Slow Technology Activities

During class workshop we worked on preparing thermochromic items; we dyed thermochromatic fabrics and resistive threads, painted fabric with acrylic mixed thermochromic pigments, and made our own screenprinting templates. Later, we sewed thermochromic threads to dyed and painted fabrics to test slow technology when actuated by heat.

We studied Pulse Width Modulation that is used to vary the output power between 0 and 255. Then, we experimented this feature with an LED light using Arduino “fading” sketch to make it fade in and out and then we tested making it fade faster and slower by modifying the increment value. We tested PMW again with for a slow vibration motor using vibration_PWM.ino sketch.

 Class workshop documentation:







Ambient Device Concept


I want to design an ambient notification device that aim to improve daily walking activities. This can be achieved by making a smart carpet with embedded resistive pressure sensors to detect our gaits. When someone walks across the carpet, the sensors actuate notifications.  The slow technology I’m proposing will use weaved Shape Memory Alloys, looks like a wire mesh textile, to create a wall sized ambient display that gives info about people walking activity via 3D volumetric morphology. This informative art piece is best to be hanged on the wall of the main living room of the house.

Because I don’t have shape memory alloy available, I tested gradual actuation using thermochromic fabric and threads for ambient  notification. The same logic and programming code applies for gradual actuations in shape memory alloys. Below are some resources for researches done by others, in addition to inspirational images that explain the trajectory of my design intentions.

SMA Smocking

Functional textiles driven by transforming NiTi wires

Inspirational images of wire mesh sculptural art by Eric Boyer and Bonnie Shanas



Thermo‐responsive shape memory alloys are able to adopt a temporary configuration and return to their programmed physical shape when heated to a determined activation temperature.

SMAs are treated to memorize their shape at considerably high temperatures (450 C – 550 C).  To get to an aesthetically sculptural form, the woven wires can be fixed to a cast and then placed in the furnace for 15 minutes in order to memorize its artistic volumetric form.

This informative art is displayed whenever family members are walking around in  the house. When people are inactive, the sculptures will look flat and dull. When the art piece looks dull, then it’s a reminder to get up and have a small walk to bring back its beauty. Technically, when there’s no electric current, the corners of the art piece will be pulled away slowly through a pulley mechanism to flatten the sculpture. And when the sensors are activated by people walking on the smart carpet, this will actuate the SMAs to gradually shrink back to their memorized sculptural form. The shrinking force must be greater than the pulling force.  With this slow ambient notification device household members are encouraged to keep walking in order to maintain the aesthetics of the 3D wall art.

Circuit schematics:


Arduino Code:



Next steps:

This project explores ways to make wall art and sculptures alive, interactive and functional. I aim to make a higher fidelity prototype to be tested at all different stages. first stage is weaving the SMA nitinol wires, then try training them to give them a 3D cultural form. I also want to explore options and mechanisms for flattening the sculptures when they’re not actuated. Wiring and connections should be well studied and hidden in order to enhance the aesthetic visuals.

Wake Up Curtains

Timer Curtains
Workshop #4 Notes
Olivia Prior

Demo of the wakeup curtain pattern.
Demo of the wakeup curtain pattern.

Timer Curtains are curtains that use thermochromic paint to allow light into a room by gradually removing the colour from the pigment on the patterns of the fabric by using electrical voltage.  The heat from the voltage turns the painted pattern to white which allows for more light to enter the room. The curtains are activated by a timer or an alarm that allows the user to set either a time to wake up or to set a time that they would like to get up and take a break. The patterns gradually remove themselves one by one, so the transition from patterned curtain to white is an ambient experience. This allows for either a slow wake-up or slow reminder to that a break is coming up.

With this project, I wanted to create a product that used patterns as a form of time telling. Upon exploring the thermochromic paints I was curious as to what would happen if you made multiple tiny patterns and could control them individually. I had painted dots onto a sheet and it reminded me of the UI/UX pattern of “loading ellipses” you often see on websites. I wondered how you would be able to use this known UI/UX pattern into the physical world as a notion of timekeeping, but also keeping the connotations of a moment “loading”. I wanted to see if it was possible to gradually remove the dots over time to create a white sheet, to explore the applications of this method, and to see if it was an effective use of a clock.

Workshop notes & ideation write up
Workshop notes & ideation write up

Process & Explorations
I started off by painting patterns using two colours of thermochromic paint. I initially wanted to test how far the heat from the voltage could spread along one colour before bleeding into the adjacent colour pattern.

The patterns painted with thermochromatic pigment.
The patterns painted with thermochromic pigment.

I created multiple different patterns on many sheets of white fabric, and once dry sewed some resistive thread through the different colours.

Resistive thread stitched along the length of one of the pigment colours.
Resistive thread stitched along the length of one of the pigment colours.

I attempted to run 5V power from my Arduino to the sewn thread using alligator clips that were simply connected to power and ground. At first, I saw no change. After seeking some advice, I realized that the distance of the sewn circuit was a big factor in the amount of heat that would be dispersed through the thread. The longer the circuit with a lower voltage, such as 5V, would only be seen if the circuit itself was small.

I adjusted the placement of the alligator clips to the first few stitches and immediately saw a difference.

Demo of heat from the circuit changing the pigment on one small part of the circuit.
Demo of heat from the circuit changing the pigment on one small part of the circuit.
Back view, showing the alligator clips attached to the resistive thread. The heat from the current has changed the colour of the pigment form the back.
Back view, showing the alligator clips attached to the resistive thread. The heat from the current has changed the colour of the pigment from the back.

I tested to see if I could make the thermochromic paint fade in an out be connecting the power to a digital output pin on the Arduino. Then I made the delay twenty seconds between turning the power on and off on the pin. In the video below you can see a slight change in the pigment.

Video if thermochromic pigment changing from the heat of the circuit. 

With this knowledge and the set of tools that I had, I assessed the pieces that I painted. I saw that the dots each had a small surface area and came across the idea of slowly fading out the dots individually as a form of an ambient technology. The dots could be used as a timer: the user could set an amount of time, and the dots would slowly fade out. The dots once “vanished”, would indicate that the time is up without interrupting any thought. In terms of installment, I envisioned this pattern on windows curtains. As the dots turned white, they may gradually let in more light into the room and giving the illusion that the person who set the timer should go outside for a break. If the changing of pigment let more light into the room, the curtains would extend the act of ambient notification from simple pattern change to a lighting change in the space.

Envisioning the dots on a full length curtain. There are currently around 60 dots on the curtain, to symbolize minutes.
Envisioning the dots on a full-length curtain. There are currently around 60 dots on the curtain, to symbolize minutes.

I sewed small stitches along the length of each dot to start. I then clipped an alligator clip onto the power and ground of each dot. I made sure that the dangling threads did not touch each other as I was aware of the small working space I had created for myself. Reflecting upon the soft circuits project, I did not want to have a clean workspace.

Close up detail of the resistive thread sewn into the dots.
Close up detail of the resistive thread sewn into the dots.

I then moved each of the pins into the Arduino digital pins and ground. I made my code turn on a new pin every five seconds. The change of the pigment was gradual but effective. Nearly the entire dot had disappeared.

The dots changing colour from the circuit.
The dots changing colour from the heat of the circuit.
Screenshot of simple code used mock up the dots fading in sequential time.
Screenshot of simple code used mock up the dots fading in sequential time.

Diagramming for future iterations
I started to consider how I would be able to expand this project further and to place emphasis on the concept of a clock. I sketched out some process ideas of how this could operate and look:

Envisioning the dots on a full length curtain. There are currently around 60 dots on the curtain, to symbolize minutes.
Envisioning the dots on a full length curtain. There are currently around 60 dots on the curtain, to symbolize minutes.
Envisioning the dot curtain in action. The dots slowly disappear in correlation to the time that was set for them.
Envisioning the dot curtain in action. The dots slowly disappear in correlation to the time that was set for them.
As the timer nears the end, the dots have nearly all faded.
As the timer nears the end, the dots have nearly all faded.
Once the timer finished, the dots would all be completely faded.
Once the timer finished, the dots would all be completely faded.
This pattern envisions the dots in a clock like formation, to very physically represent time.
This pattern envisions the dots in a clock like formation, to very physically represent time.
This curtain envisions what "would happen if the curtain was entirely covered in pigment?" The curtain is striped and the thread would be sewn down the patterns to slowly fade out the stripes.
This curtain envisions what “would happen if the curtain was entirely covered in pigment?” The curtain is striped and the thread would be sewn down the patterns to slowly fade out the stripes.

In these images, I had included two colours of pigment on each dot. Aesthetically speaking, I really enjoy the complimenting colour contrast of both pigments. In my first trial (the “rainbow” pattern), the bleed of the heat from the voltage did not breach onto the second colour due to the width of the brush stroke. Having different colours fade in and out at different times could be used as different types of timers or indicators.

Other use cases for the combination of thermochromic pigment and curtains.

  • Inspired by Harry Potter, the curtains could be used as a “remembrall”. The remembrall is a device that changes state when the owner needs to be reminded of an item of importance. 

Scene snippet of character Neville Longbottom using a “Remembrall”

  • Wake up curtains. The curtains could be given a time and aid in an ambient wake up, similar to the Philip’s Hue Lights wake up on alarm function.
Two images of the Philip's Hue Lights interface for the wake up and go to bed "routines"
Two images of the Philip’s Hue Lights interface for the wake-up and go to bed “routines”
Two images of the Philip's Hue Lights interface for the wake up and go to bed "routines"
Two images of the Philip’s Hue Lights interface for the wake-up and go to bed “routines”
  • Stopwatch: the opposite of a timer. Once set, the pattern could fade in rather than fade out. The pattern could reflect time passing, rather than counting down.
  • The different colours could reflect different weather outside. If the temperature is hotter, the blue could fade away, or vice versa with the pink hues.

Questions to consider for future iterations

  • How would one interface with the curtains? Would there be a web app that they could use to indicate the timer? A button, potentiometer, and LCD screen combination for changing the time, or starting, and stopping the process?
  • How dense does the pattern need to be to affect the light in the space? If the curtains do not affect the lighting of the space, does the fabric need to be hung like a curtain, or could it be a wall hanging?
  • How could the wiring be improved for the patterns? The length of the connections affects the heat generated from the circuit, which would ultimately affect the fading of the pattern. Would using conductive thread and having short connections to multiple power sources be the most effective?  
  • Would having the curtains alter the user’s position in the room? What if their work station was turned away

 The thermochromic pigment is a very accessible and enjoyable technology to explore within soft electronics. The resistive fabric when connected to a circuit has a very similar behaviour to a switch, which when connected to either bespoke interfaces or APIs allows for endless possibilities of applications. Through exploring the concept of time and curtains as an ambient technology I discovered that power management and circuit management are the most concerning factors in setting up a viable product. These mini-experiments are explorations into looking at the possibilities of how one could add thermochromic pigment as apart of their electronics toolkit. Overall the pigment is a useful tool that has lots of applications for creating bespoke experiences embedded in everyday environments.

References and research 

Kobo Kant write up on thermochromic paint

Example of using thermochromic paint and resistive thread on “soft’ materials in a circuit 


Philip’s hue lights ambient wake up tutorial

The Invisible Motivator

By Veda Adnani

The workspace can be very stressful for most, and often we need messages of security and reassurance to keep us going. These inspirational messages usually form part of our ambient environment in the form of postcards, or cut outs. But I believe that the experience of motivating oneself, is more intimate and private and it can be awkward to have strangers at your desk space analysing and staring at your personal messages, often asking questions that can make the user uncomfortable. The Invisible motivator aims to resolve this issue, with an ambient system that only displays messages to its user on the user’s demand at the push of a button, else camouflages with their environment. It blends into other artefacts that the user collects and displays in their personal desk space.

483aec30-c7fc-4315-8e9a-234f1e4b11bbFigure 1: Completed prototype

38921bf3-c69b-4f17-87c1-cdaf514ec2caFigure 2: Closeup of invisible message patch

4a8d027b-fca1-4acb-af1f-163e575ed097Figure3: In class worksheet

In class

We learnt how to work with multiple forms of thermocromic pigments in class, which was an insightful process. We learnt how to make dye, paint and screen print with the medium. This helped us with using the pigment in a versatile manner. I found that these pigments are extremely useful when dealing with temperature sensitive projects, especially wearables. They can also be used alongside other devices like heat pads, as a feedback indicator.

After class I, conducted research on different projects with thermocromic inks to better understand how the medium works and what it can do.


After class I proceeded to test some of the patches we had made with two different stimuli, the first was a hairdryer, and the second was our e-textile tester with 3 batteries of 3v each, which is 9v of total power. I found that the material reacts to the extreme heat of the hairdryer much more instanteously and effectively as compared to that of the e-textile controller.

39977dd3-c0f6-4f62-83d9-d28532081835be82c854-7b46-4312-9665-e79a709c8b71Figure 4 and 5: Testing patches at home with the e-textile tester


For my prototype I used the following materials

– Thermocromic ink in blue

– Acrylic paints both white and blue

– A paintbrush

– A patch of cloth

– Resistive thread

– Basic sowing supplies

– Arduino Micro

– Push Button

– Alligator clips

– Diode

– Modfset

– E-textile tester with 3 batteries of 3V or battery pack


I began my fabrication process by mixing the blue thermorcromic ink with white acrylic paint, and making a mixture of blue and white acrylic paint in the same colour. Once both the mixtures were ready I painted the purely acrylic mixture onto a patch of cloth and let it dry. This part of the prototype is the non-reactive one.

Thereafter I took the mixture with the thermocromic ink and painted a motivational word onto the patch that I had painted previously, and tried my best to ensure that it camouflages into the base. I painted 2 coats of the paint to make sure that it is reactive enough.

Once this mixture was dry, I ran a running stitch of resistive thread across the word. I ensured that it was equally distributed and aesthetically pleasing.

094d9c1a-6b04-428e-a534-43dd7ebb6299Figure 6: Mixing and matching paints (both thermocromic and regular)


ec6abac5-d6b8-46d1-bae1-b59134747b15   59edc86b-39d2-4bf9-b143-e6243efc735d

Figure 7, 8, 9: Painting the base patch, painting the thermocromic message, stitching the resistive thread onto the patch.


I built a circuit with a push button, since I only wanted the message to activate on the user’s demand (or auto display it at fixed intervals of time in the next version of this prototype). For the circuit I took inspiration from a project on instructables.com by uzarate (link in citations)

Prior to building the circuit with the painted patch, I ran a test at home with a regular patch to see if it works.

f1a20593-21f7-47c3-9a65-6cc72d61e383Figure 10: Cirtuit

4d2aea68-5d26-42a0-b463-29ead0d2faccFigure 11: Testing the circuit at home with a regular patch

(Circuit reference by uzarate on instructables.com)

The only difference between this circuit and mine is that I used the e-textile tester as the second power source with 3 batteries of 3v each within it.


For the coding process, I used a simple I/O code for Arduino. Screenshot below.



While the circuit did work, and the e-textile controller lit up, I feel like the power supple was insufficient, as the ink reacted perfectly to heat from hands and a hair dryer but took sufficiently longer and was slower with this circuit. I am to fix this in the next version of this prototype.

90352083-4375-4257-87b3-875fa82cbe49Figure 13: Cold patch

9047da0e-d986-4ae3-97ce-6946353b2ff5Figure 14: Activated patch


This patch can be placed inside a simple photo frame , even be developed further into a camouflaging patch on their desk wall to minimise notciability for non-users. wWith a push button hidden under the user’s desk at a convenient distance, I envision the user using this prototype as a stress buster during a hectic work day.



Instructables, Uzarate







Snack-time describes a speculative ambient body-centric design project in which people can use it as a reminder.  I am again doing this project for people with diabetes. I know they sometimes forget their snack time in their fast-paced working/ studying environment.  The purposes of this project I imagined working with shape-memory alloys) that highlights when it is time for a snack.

Why this project:

  • We can set alarm on our phone, but lots of people got bored of getting another digital note. Who wants to see another alarm?
  • This product allows them to get some creative input into own treatment.
  • This note- Snack– can vary, and be customized.

attachment-1Above you can see a sketch of my concept.

I have learnt how to shape a shape- memory alloys. You have to give it shape and heat at a high temperature. When it gets colder you can change its shape, When the system works again, the wire gets warmer because it is also a resistor, and gets its original shape again.

Below you can see the low-fidelity prototype of my concept.

I discovered “Fritzing” software. It was my first time using it and found it very useful because I did not have some of the components for the circuit. I

In the image below you can see the sketch of the circuit. The red spring is representing the flexinol (shape-memory alloy).


  • Spreadsheet Data: You can find  here:
  • Hardware: Circuit and Arduino-UNO
  • Software: Arduino
  • Breadboard 
  • Shape Memory Alloy (Flexinol)
  • Batteries (I used a 9V. Don’t forget you need a way to connect it to your breadboard)
  • 1 Voltage Regulator 
  • 1 Rectifier Diode 
  • 1 Resistor
  • Connector Wires (I use alligator clips and jumper wires)




  • Heating code ( here to download): I used it to apply heat on the alloy. I tried to customize it with the code below

int springPin = A1;

void setup()

pinMode(springPin, OUTPUT); // Set the mode of springPin to output.


void loop()

digitalWrite(springPin, HIGH); // Turns on spring.


  • Timer (here to download): I also tried to customize the code by this DTime.ino code. The code itself did not work. I tried to fix it and apply it onto the heating code as well.  I also tried the codes that I found at the library as Arduino-timer, ArduinoThreads, LightDimmer.


  • Learned about how we shape memory-alloy and how it works.
  • Alloy gets its shape by higher heat and voltage.
  • Learned about and used Fritzing for the first time.
  • My knowledge in using Arduino, and reaching the sources still give me a disadvantage.

Information sources:

  • http://fritzing.org/home/
  • https://io.adafruit.com/

Next step:

  • I could not make LEDs, memory alloy work (together) with Arduino. Still, I have to work on coding. I am investigating Adafruit, GitHub etc.

Ambient LED

  • Strategy:  


Excessive use of eyes leads to a variety of eye problems, which not only affects our health, but also reduces our work efficiency. You need to take a few seconds blinking eyes or looking out of window in very 30 minutes using computer. I want to expand and contribute to a project I did this semester and make an ambient device for the body.

ComputerMate is a smart computer chair cushion that help you developing a healthy lifestyle. There is a push button (weight sensor) inside the cushion, so it can detect if user is sitting on the chair or not. All you need to do is to plug smart computer chair cushion in the power supply. A popup window will send you notifications and play relaxed music, eye, exercise video, or stretching exercise video every 30 minutes. If you close the window, computer send you another notification in (every) 5 minutes.

I’d like to add a new function to the seat cushion. The display light functions as a timer to remind users that they should take a break when using the computer for a long time without disturbing people. It use pre-attentive processing to display information. There is a circle of LED lights around the seat cushion. When the user sits on the seat cushion, the function is turned on:Every minute user sit on the cushion, one LED will light up, and so on. If someone is constantly sitting on a cushion for 30 minutes, all 30 LEDs around the seat cushion will be lit one by one. People can glance at the light when they are using the computer and sitting on the computer chair. Those LEDs are not only work as a timer telling you how long it will be before taking a break, but also work as reminder at a glance.


  • Previous function:

A popup window will send you notifications and play relaxed music, eye, exercise video, or stretching exercise video every 30 minutes. (Arduino > p5)

  • New function (ambient device):

Every minute user sit on the cushion, one LED will light up, and so on. If someone is constantly sitting on a cushion for 30 minutes, all 30 leds around the seat cushion will be lit one by one. (Arduino)

Workshop #4 Worksheet

Use Pousman et al’s[1] design guidelines for ambient information systems to design an ambient device

1) Display information that is important but not critical.
One function this device has is telling you how long it will be before taking a break, which is an important but not critical information displaying by 30 LEDs.
2) Can move from the periphery to the focus of attention and back again.
3) Focus on the tangible; representations in the environment.
LED light display glanceable information. Human eyes is sensitive to light change. We can notice the change of color and brightness of light at a glance. Use light as representations in the environment is very common.
4) Provide subtle changes to reflect updates in information (should not be distracting)
This device provides constantly change to users to reflect constantly updates in real time. Every minute user sit on the cushion, one LED will light up, and so on. If someone is constantly sitting on a cushion for 30 minutes, all 30 leds around the seat cushion will be lit one by one.  
5) Aesthetically pleasing and environmentally appropriate.
LED lights enhance the user experience, many people often use LED lights to decorate the bedroom. The pattern and color of the light is aesthetically pleasing. The cushion is placed in computer chair in bedroom, so it is environmentally appropriate.

[1] Pousman, Z. and Stasko, J. 2006. A taxonomy of ambient information systems: four patterns of design. Proceedings of the working conference on Advanced visual interfaces. (2006), 67–74.


  • Documentation:


  • Adafruit Feather board
  • Addressable led stip

These LEDs have an IC built right into the LED. This allows a communication via a one-wire interface. This means that you can control lots of LEDs using just one digital pin of your Arduino.

  • Jumper wires
  • Usb charger
  • Usb cable


(addressable led stip)

Step1: Circuit Diagram.


(circuit diagram)

There are four pins on the addressable led stip. One for GND(ground), one for power(5v), one for data, and one for timer. Since there are many different type of addressable led strip out there. I took a while to figure out how to connect those pins to Arduino board.

Addressable led strip has two ends, so you can plug in jumper wires in either direction. You can connect those two ends to the Arduino board with jumper wires in a positive or negative direction. If you choose the wrong direction, it won’t work. The strip has arrows in the direction that you’re flowing through.


(close look of arrows on addressable led strip)

The red wire connect to 5v, the yellow on connect to ground. The white one connect to digital pin and the black one also connect to ground.


(close look of addressable led strip wires)


(set up wiring)

Step2: code.

I was looking for the right library and example for addressable led stip. There are many of them online. See details in reference. I want to find on that can control the brightness and the color of each LED individually, which allows me to produce amazing and complex effects in a simple way.

  1. Installing the FastLED library!
  2. After installing the needed library, upload the following code to your Arduino board (this is an example sketch provided in the library examples folder). Go to File > Examples > FastLED > ColorPalette

Then i made few change of the example code and accomplish my goal. I changed the delay time to 1 minute, so for every one minute pass, one more led light up.

Test video:

For demonstration, I changed the delay time to 10 seconds, so for every one minute pass, one more led light up.

Step3: Fabrication.


(make holders for LED strip)


(stick pressure sensor on the back of cushion)


  • Insights:
  1. There are a lot of addressable led at creatron. Notice that what we can use is 5v addressable led strip. 9v and 12v are not for arduino.
  2. Voltage Feather board can provide is 3v. It is still working to this type of addressable led.
  3. Addressable led stip has two ends, so you can plug in jumper wires in either direction. You can connect those two ends to the Arduino board with jumper wires in a positive or negative direction. If you choose the wrong direction, it won’t work. The strip has arrows in the direction that you’re flowing through.
  4. There are four pins at each end of the strip. The red wire connect to 5v, the yellow on connect to ground. The white one connect to digital pin and the black one also connect to ground.
  • Information sources:


  • Next Steps: How would you improve upon what you made?
  1. digital fabrication
  2. test the code with push button
  3. try different color and pattern



You Are the Nature

Github link: https://github.com/Omid-Ettehadi/YouAreTheNature

You are the Nature is the first step towards connecting yourself to nature. The project monitors your heart rate and controls the speed of the flow of water for your office table’s fountain. The faster your heart beat, the higher the flow of water, the more natural sound and the more relaxing your environment. The device helps you to lower your heart rate without taking much for your attention and time.


My goal was to develop a system that helps us monitor our body’s status without requiring much processing from the user. Being that I have always been fascinated with human’s heart rate and how much data there is, I wanted to build something that does the monitoring for us in the background and shows us the result without giving us any numbers.

But when I got into designing the product, I realized the bigger goal in knowing our heart rate at any time is to monitor,  and I thought wouldn’t it be much better if the design could actually do the monitoring in the background for us without getting us involved in the whole process.

I found that our body’s heart rate is hugely impacted by the sound in our environment. But finding a sound that is always playing without annoying the user is really hard, so I thought how about natural sounds. I decided to build a small table fountain that creates more water noise when the heart rate is hard so that it would automatically lower the user’s heart rate by relaxing them.



I did not have a table fountain nor a water pump, so to get started I replaced the pump with a DC Motor as the pump is simply a DC motor underneath and tried designing the circuit that can control the speed of the motor.

I did not have the heart sensor anymore, so I used a potentiometer as the input that controls the speed of the motor.

The DC Motor requires a higher voltage and current than what the Arduino board can offer with its pins, so I needed to design a circuit that would allow me to use a 9V battery to run the DC Motor and control the voltage using Arduino.

I was able to do that by using a TIP120 Transitorthat was controlled by sending a PWM signal to its base and completing the rest of the DC Motor circuit by passing it through the collector and the emitter legs of the circuit. The base signal basically acted as a switch connect the other two legs together at the rate of the PWM signal.

Part List:

  • Breadboard
  • Jumper wires
  • Arduino Micro
  • DC motor
  • TIP120 transistor
  • Rectifier Diode
  • 220 Ohms Resistor
  • 10K Potentiometer
  • 9V Battery


I talk more about the challenges that I faced in the “Insights” section. What I was able to achieve was to control the speed of the dc motor using the potentiometer.



I initially tried using the feather ESP32 for the project so that the connection of the heart rate values would be much easier using the wifi, but after a deep dive into the coding I realized that I needed to use the PWM of the board, and because of the weird story going on with the PWM of the Feather I decided to use the Arduino Micro instead.

The hardest part of the project was designing a circuit that would allow an external 9V source to power up the DC Motor. I was able to find similar examples to it online, but all of the examples did not work. When I was trying to control the speed of the motor, I was only able to turn it off or on.

I tried writing my own PWM code using digital wite and delay and giving different timings for the delay base on the heart rate value, but the process just seemed too complicated and even after that I was still not able to fully control the speed of the motor.

After a bit of calculation, I found that the resistor value that I was initially using was too high (1K Ohm) and did not allow much current to flow into the transistor’s base. To get more current into the base, I changed the resistor to a smaller one (220 Ohm).  That did the trick, and I was finally able to fully control the speed of the DC Motor.

I can use the same circuit to run any other device that requires higher voltage and current than what the Arduino can offer.

Information sources:

How to build your own Fountain:



How to control a DC Motor Speed using PWM:


Next Steps:

The next step would be to purchase a 12V Liquid Pump and test the code with the pump itself. After that, I need to join this experience with the previous one, that measure the user’s heart rate so that I can replace the potentiometer with real data from a heart rate sensor. The final step would be to find the ideal body for the project that would also look nice on my desk.