Category Archives: Lateral Thinking with Withered Technology

Bright Lights

Hi All,

This was by far one of the most frustrating things that I have ever done.  I was a situation of knowing what the computer had to do in English, but completely over complicating it and forgetting simple stuff when coding. (Ex. “Serial.begin(9600)”) Dumb. Not having power plugged in.  Dumb.  In the end, with a serious amount of help from Scott, it worked.

There are a whole bunch of next steps.  I think the visual feedback is really important as a guide. Like the glove I made, the LED tells you which scale you a playing.  Creating a trellis like board that would support the 4 pronged through hole NeoPixels seems like a lot of work and skills that I don’t have, but Mike’s arcade buttons inspired me.  An arcade button MIDI controller with customizable LED colors.  Get a microSD card reader and a speaker in there. Awesome. Get some bluetooth or other wireless protocol and have two of them talking to each other. Awesome.  So many ideas.

Anyway, here is the video:

Here’s the Arduino Code:

Here’s the processing code:

Thank you all for such an awesome class. I had a bitchin’ time.





Thanks for everything guys

Mood Display Board

I’m very inspired by the website called “We feel fine.”


It is a website that collects people’s posts about feelings from the internet. I want to do a physical mood display. Different color pastels represent different moods. User can pick up the color that stands for current feeling, and use it as a brush to write or draw anything on the screen. After that, users can also take a photo with what they write or draw and save it for keeping or sharing later:)


The complete code:


int potVal;

void setup() {
// put your setup code here, to run once:

void loop() {
// put your main code here, to run repeatedly:
potVal = analogRead(A0);



// Smoother color tracking
// based on Dan Shiffman & Dan O’Sullivan’s examples


// Variable for capture device
Capture video;

PGraphics drawing; /// a contect to hold the “drawing”
PImage vidMirror;

import processing.serial.*;
Serial mySerial;
float diam;

// A variables for the color we are searching for.
color trackColor;
float thresh = 20;
int avgX, avgY; //this is what we are trying to find
int prevAvgX, prevAvgY;

void setup() {
size(1280, 720);
video = new Capture(this, width, height);
// Start off tracking for red
trackColor = color(255, 0, 0);

// instance of the drawing
drawing = createGraphics(width, height);

vidMirror = new PImage(video.width, video.height);

// Print out the list and look for port your Microcontroller is on
// Finding the Arduino is not easy because they have weird names like “/dev/tty.usbmodem1421″ or COM1
String portName = Serial.list()[2];
mySerial = new Serial(this, portName, 9600);


void draw() {
// Capture and display the video
if (video.available()) {;
// image(video, 0, 0);

for(int x = 0; x < video.width; x++){
for(int y = 0; y < video.height; y++){
vidMirror.pixels[x+y*video.width] = video.pixels[(video.width-(x+1))+y*video.width];


//we are going to find the average location of changed pixels so
//we will need the sum of all the x find, the sum of all the y
// find and the total finds
int totalFoundPixels= 0;
int sumX = 0;
int sumY = 0;

// Begin loop to walk through every pixel
for (int x = 0; x < vidMirror.width; x ++ ) {
for (int y = 0; y < vidMirror.height; y ++ ) {
int loc = x + y*vidMirror.width;
// What is current color
color currentColor = vidMirror.pixels[loc];
float r1 = red(currentColor);
float g1 = green(currentColor);
float b1 = blue(currentColor);

// colors we are looking for
float r2 = red(trackColor);
float g2 = green(trackColor);
float b2 = blue(trackColor);

// Using euclidean distance to compare colors
float difference = dist(r1, g1, b1, r2, g2, b2);
// We are using the dist( ) function to compare the current
// color with the color we are tracking.

// If current color is more similar to tracked color than
// closest color, save current location and current difference
if (difference < thresh) {
sumX = sumX + x;
sumY= sumY + y;

// average the locations of all the pixels that were close enough.
if (totalFoundPixels > 0) {
avgX = sumX/totalFoundPixels;
avgY = sumY/totalFoundPixels;
// Draw a circle at the tracked pixel
stroke(0, 127);
ellipse(avgX-10, (avgY-10), 20, 20);

drawing.line(prevAvgX, prevAvgY, avgX, avgY);
blend(drawing, 0, 0, width, height, 0, 0, width, height, ADD);

prevAvgX = avgX;
prevAvgY = avgY;
void serialEvent(Serial _port){
if (mySerial == null) return; //this is a hack to cover a bug where the port does not get set up in time.
//this says if the port is not set up yet, bail (for now.)
String input = mySerial.readStringUntil(‘\n’);
if (input != null) { //if a ‘\n’ character has in fact now arrived
input = input.trim(); //Take off the ‘\n’ character, get rid off the white space
diam = float(input); //Turn it into number

void mousePressed() {
// Save color where the mouse is clicked in trackColor variable
int loc = mouseX + mouseY*vidMirror.width;
trackColor = vidMirror.pixels[loc];

void keyPressed() {
//for adjusting things on the fly
if (key == ‘q’){

if (key == ‘[‘) {
println(“Threshold ” + thresh);
} else if (key == ‘]’) {
println(“Threshold ” + thresh);


Hi again,

It was wonderful to meet and learn from all of you,  and also thank you Scott for being a fantastic professor. I hope we all stay in touch, or that in the future I see all of your work advertised on billboards all over the city (ideally, both scenarios). Best of luck to you all in the coming semester and forward.

Here is the link to my final:

Thanks guys!

not my final – but a missing post

Hi all,

Here is assignment of combining an existing processing sketch with arduino controls. I believe I showed it in class (maybe over the break?) but now it can also live permanently on the site.


JS Final – Sliding Images Music of Rachels and Images of Egon Schiele

Here is Version 3 of my Slide Show algorithm!


This Program works simply by using one of the two slide potentiometers to control the picture on screen as well as the music in the background. The volume level of the sample just called as well as the volume level of the background music can be controlled.


It’s the prototype for an Art Installation that requires user participation to “mix” the music with these selectable fragments/


Problems: Overall it was not too challenging getting everything working, the only hurdle encountered was truly getting a grasp for how the serial commands work. The handshake between the serial port and processing can be tricky which is why a number of lines of code are needed to make sure the data streams are lined up properly. I was accidently streaming data in before the system was ready to accept any data, that lead to a number of issues that were cleanly resolved with a if statement that checked if the data stream was truly ready to be read in.


In regards to the program I will hit some of the highlight functions. I built a custom class duoPA that was able to load in the music files as well as the pictures and pair them together. So whenever my sample selector would select a point it would be referencing two files. Also have a pixel scrambler running in the background as well as a function that randomly selects sections of a loaded in picture and throw it into the main screen. Everything is controlled by millis() and modulo division looking for zero for timing.


It was a ton of fun getting this all working and I can’t wait to ship out v4!





“I Miss You” Exorcism Teddy Bear

For our final project we initially wanted to make a phone case that would alert a third party if the user was in danger and unable to text.  However, we realized that this information wouldn’t be particularly useful unless the recipient was given a way to act on the information; we thought that having the button press on the phone case send the GPS coordinates of its location would be a good solution, but we didn’t feel that that was a reasonable goal given our experience.

Our next idea was to pitch the same basic messaging system a a means of communication for parents and children who are too young to use cell phones but whose parents would want to hear from them throughout the day.  After many iterations of this design, we settled on a teddy bear that would, when squeezed or hugged, send a message to the parent’s computer saying “I miss you” along with an audio file to get the parent’s attention if they are away from their computer.  When the parent clicks the window, an LED lights up in the bear to show the child that their parent has received their message.  Somewhere between inadvertently settling on red and black as a color scheme for the bear and having a little too much fun mixing the audio file, however, we seemed to have taken a turn for the satanic but decided to run with it in the name of memorability.

The benefits of teamwork: saving time and combining efforts.  Anna is responsible for the teddy-bear design, embedding the Arduino, figuring out the circuit schematic, working on the basics of the coding, and building a prototype; Sam then built a second prototype using a smaller breadboard, added to, refined, and debugged the code, and added the audio file.  Both of us spent a considerable amount of time working together to ensure that the Arduino was embedded properly and the teddy was working consistently.



final – processing



2 topics kept jumping into my head as a read this. People are strange was the first thing, and the cycle of media and technological innovation was the second. “…cultural categories and concepts are substituted, on the level of meaning and/or the language, by new ones which derive from computer’s ontology, epistemology and pragmatics. New media thus acts as a forerunner of this more general process of cultural re-conceptualization.” Like we talk about in class, my computer doesn’t do anything until I tell it to – replace “computer’s” with “the user’s” in the above quote and it basically says that we use new media to change our culture to fit our needs. Great, except people are strange. Don’t get me wrong, we are all strange in our own way, it’s what is great about each of us, beautiful. The increased interaction brought on by new media creates a wider spectrum of “strangeness” in mainstream life. Now everyone can contribute to our culture – not just those of us within a standard deviation or so. How does that effect generation to come.

I look at how our culture has changed because of this and I think of twitter and Instagram (etc). Seems that the changes to our culture have changed it from people connecting in-person and wanted the connection to relate to people to just needing to update my social media. We have replaced sitting down for a meal with people with taking pictures of food and sharing them – far from the same thing. This starts to get into the second idea of the cycle of media and technology.

I started thinking about what drives this, does twitter drive the need for new phones that allow me to tweet from anywhere, or does the creation of the phone with this capability allow for the creation of twitter. Does the technology drive the creation of media, or does the want for new media drive technology. In most cases, I feel like the idea of something, then creates a need for the tool to accomplish it; but I am not sure that’s that same pattern for media. It seems that the technology needs to be there or at least mostly there, then the application of that technology is created (then maybe technology updates a bit). Does this make sense? Are we controlling our own destiny?

Bread Plate and Drink Cup 3.0 (Now with Processing!)

I decided to upgrade my bread plate and drink cup circuit from the the beginning of the semester.  Now instead of red and green LEDs, Processing provides a red or green window instead.  I wanted to add sounds as well but Minim was being… difficult.  You’ll find my codes and my circuit below.

Bread Plate and Drink Cup_bb