Lab 1: Using a Transistor to Control High Current Loads with an Arduino
Since I had to wipe my palmtop earlier in the week, I had to reinstall the Arduino IDE as well as the Nano 33 IoT board.
I was receiving the following error:
After downloading the drivers and making sure everything I could do was done, I witched to Adafruit Metro and was able to get it to work.
I was able to get the motor up and running successfully along with the use of the potentiometer.
Lab 2: DC Motor Control Using an H-Bridge
That was also successful.
Might explore using a motor in 3rd project depending on what I can figure out and/or find on the floor for free.
Lab 3: Controlling a Stepper Motor With an H-Bridge
I was able to get the stepper motor to work using the code in the example. Unfortunately, my motor’s data sheet does not have a listing for steps per revolution. I believe this caused some issues as the stepping was not consistent and stopped several times.
Todd Whitney and I are working together on this animated short. We decided to tell a story around discarded tech. Our tale follows the rise and fall in popularity of the Walkman, the popular cassette player from the 1980s and 1990s. The goal of this tale is to show how we all have worth, even outdated tech. Through reuse, repair and reinvention, we, as consumers, can follow Walkman’s lead by seeing the value of the stuff we have in our lives. Finding new ways to appreciate those things.
Story:
We meet Walkman at the height of their powers, the 1980’s. They’re the golden child of contemporary technology and the world’s devices adore them. Everywhere Walkman goes they bask in the glory of knowing that they’re top dog of technology. But times change.
Right at Walkman’s apex a Portable CD player bursts in like the Kool-Aid man, shattering Walkman’s world. Walkman goes from certified loverboy to getting no love and attention from the other devices. The other devices are totally enamored with CD player: so thin!! so cool!! And CD player even dates shiny CDs!!
Initially, Walkman is jealous of CD player’s fame & notoriety. Walkman lacks a place in the world and is crestfallen. But there’s hope. Walkman stumbles on their long lost love–Cassette. Their relationship rekindles Walkman’s confidence and Walkman has a change of heart: no more hating, only spread love. So Walkman begins befriending other devices of yesteryear and eventually gains a following like Forrest Gump. All the once-cool devices calm their existential woes by knowing their worth.
This post combines week 8’s project update along with week 9’s final project posting.
For preliminary documentation, please see week 7’s post here.
All the code, both P5 and Arduino, are located here in the P5.js sketch.
As a refresher, the goal of my project was to create a plush game controller utilizing a button and 2 variable resistors. In the last update, I showed the game (P5.js) sketch which was mostly complete. I did fix a few items but it mostly stayed that same; get the ball in the box then a new ball and box appear for you to try again. I next began with testing combinations of steel and sheep’s wool.
Variable Resistor Tests:
I created 5 different versions of the resistor which all had varying results. The first was a combination of cotton and steel wool as I had not yet received the sheep’s wool. This particular combination had very little connectivity when tested. I was not able to felt it properly either which could have had a effect.
The next 4 were all steel and natural wool. Each offered promising qualities but ultimately they did not offer enough of a variable in regards to their resistance. The final two (felted balls) had 0 resistance but they were nicely felted and I do hope use them for something in the future.
Process: hand felted (compacted and worked by hand).
Resistance Range: 0 or 1. Depending on where the alligator clips were placed I received either no resistance or 100% resistance.
Sheep’s wool and steel wool.
Ratio: 4-1 Sheep’s Wool to Steel Wool
Process: hand felted (compacted and worked by hand).
Resistance Range: 0-500
Comments: See video below for resister demo. Since this one was washed, it did rust. This caused the rust to come off as you squeezed it.
Sheep’s wool and steel wool (Flat)
Ratio: 8 thin layers of Sheep’s wool to 7 layers of thin steel wool.
Process: Started with very thin layers of each. Felted each layer to the other to create the shape.
Resistance Range: 0 resistance
Comments: I might try washing/drying this test to see how that might change it.
Sheep’s wool and steel wool. (Loose Ball)
Ratio: 1 to 1 (3 layers of each)
Process: started with ball of steel wool in the middle then added layer of sheep’s wool followed by steel wool, etc. Felting each time.
Resistance Range: 0 resistance
Sheep’s wool and steel wool. (Denser Ball)
Ratio: 2 to 1 Sheep’s to steel wool
Process: started with ball of steel wool in the middle then added layer of sheep’s wool followed by steel wool, etc.
Resistance Range: 0 Resistance
Comments: I used thicker layers of sheep’s wool to steel wool but did a tighter felting.
Here is a video of my second test which did provide the variable resistance but it was not consistent throughout the ball.
Before switching to a different sensor, I was able to test this same wool resister with the P5.js sketch. I found that there was no resistance; x of ball stayed stable but once added resistance the input of the x was extreme.
At the recommendation of ITP Resident August Luhrs, I was able to get some advise from former ITP graduate Hannah Tardie. Hannah offered a wealth of recommendations and resources for creating soft interfaces. I am grateful to both August and Hannah for their help.
After a few more test with the steel and natural wool, I decided to switch to a different material. I decided that this method was the most sustainably in regards to it’s fiber content. In order to cut down on any unnecessary waste, I chose to utilize a recommendation of Hannah, neoprene fabric pressure sensor. The new pressure sensors were based on this tutorial from KOBAKANT. I will find a use for those items at a later date though.
I used scrap fabrics (felt, conductive fabric, neoprene and Velostat) that I had on hand.
I created two versions of these sensors:
1 – Conductive fabric bonded to felt (left over from ITP Camp 2018 workshop), Adafruit medium conductive 3 ply thread and Kelostat. This combination kept getting reading on the Arduino of 1019-1023. (It took me awhile to figure out but these readings were incorrect. There was an error with the construction as well as with the Gemma that effected the readings. In the end I used this set.)
2 – neoprene (bonded to leather), steel thread (confirm exact type) and Velostat. Meter readings from 0-150. This set was successful in combination with the P5 sketch.
Code: Nano to Gemma
Since the Nano 33 IoT needed to be in a breadboard, I chose to switch to one of the Adafruit Gemma MO’s that I had around. August was able to offer assistance figuring out the necessary code changes for setup for Adafruit GemmaMO. In the end all I needed to add was pinMode(buttonPin, INPUT) in order for the Gemma to read the digital pin. In the code for the Nano, this wasn’t needed.
Schematic (Nano 33 IoT and Adafruit Gemmo MO)
INSERT
Schematic of circuit
Nano and Gemma MO
Finish Line:
Once the components were all attached to the glove, it was time to test it with P5.js. The first test resulted in a few errors. There were a few short circuits happening due to the ends of the conductive threads touching in a few spots. Resolving those issues took some time but I finally got them worked out.
How to play:
Goal: Get the ball into the box.
Controls:
Press your pointer finger on the table to control the the ball along the X-axis.
Press your middle finger on the table to control the ball along the Y-axis.
After the ball has disappeared and the box is red, press the button to try again.
Challenge:
The biggest challenge that I had and did not plan on, was figuring out the path tracing for the conductive threads. Since I was not using wires, I needed to make sure that I did not short circuit any of my connections. Unfortunately, this was a problem for a bit but I was able to figure it out eventually.
Reflection:
I would like to fix/upgrade the following when I chose to take this project further:
The game needs to be developed more to include a score keeper as well as a redesign of the look.
I would still like to try creating the plushy variable resistor as originally planned.
If P5 can support this, utilizing Blu-tooth, as well as a compatible micro controller, I would like to be able to have the device be remote.
For our pixel manipulation project, Rajshree Saraf and I decided to make a lenticular art piece. Below is a video demonstrating how to create your own piece by hand.
Rajshree shared this piece by Kerry Rodden which inspired the user interaction we will work to create. In Rodden’s piece, the sketch finds and tracks the user’s eyes in order to create the multicolored eye drawings. The video below is a screen capture of my interaction with Rodden’s piece.
In the above draft, I am not getting the proper opacity for the edges of the siding images. When the mouse is on the right side of the window, the central image is correct but the translucent layers are not what I desire. The opacity of the two images on top of the third image are showing through. When the mouse is on the left side of the window, there are no translucent panels to the image. Both of theses sketches are using the function get(). Since this project is about manipulating pixels, the next step was to utilize the pixel array. Fortunately, that is exactly the piece Rajshree was working with in her sketches.
We went through several drafts figuring out how to get the effect utilizing two images and one video (some drafts utilized the video capture).
Code
Here, we added mouseX to control the opacity of the pixels. As you moved across the canvas, you are able to see the three different pictures. Next we worked to add the use of videoCapture() to control the mouse and change the pictures.
Lastly, here is our final piece! Due to the use of the camera, I am not able to embed the sketch here, but please do check out the following links to view our piece.
Sizing – We had to scale down canvas to 400 by 400 pixels (vs full screen) as the sketch was not able to load when it needed to manipulate so many pixels. Instead, we placed the sketch centered on a red background.
Centering – Ideally, the sketch would be centered both vertically and horizontally on the page. Unfortunately, I had trouble getting that to work. I tried both div.center() and div.position(CENTER) within the p5 sketch.
Please do also check out Rajshree’s fantastic blog of this project.
This week we were tasked with creating two stop motion loops inspired by http://www.gifparanoia.org using Stop Motion Studio.
I began by downloading both the desktop and the mobile versions as I was not sure which would work best for what I wanted to do. There are actually two desktop versions for the mac (Stop Motion Studio and Stop Motion Studio Pro) which do offer slightly different features. I ended up purchasing both versions in order to get the desired results I was looking for.
Ultimately, I ended up using my iPhone as a remote camera while controlling the app through my laptop. Once I had the software figured out, I set out to try my hand at the animation. Please note that the following GIFs were intended to only show the images in the square aspect ration but I have not yet be able to figure out exporting the Animated GIF file while keeping the square aspect ratio. Please forgive any extra hands or props you see on the edges of the GIFs.
I ended up with 3 GIFs; one test and two final pieces. The test was fun and allowed me to figure out what I was looking for in the final pieces.
Final GIFs:
Test GIF:
Reflecting on what I made, I know there are a few areas I need to improve upon; one of which being lighting. Overall, I really enjoyed this project and look forward to exploring more with stop motion animation.