Banana Ripples

Made by Joyce Wang and Jett V.

Created: December 6th, 2016



The ultimate goal of the project is to invoke wonder in a child. We want it to be something that is interactive, colorful, and fun; something that engages a child's attention, triggers their curiosity, and satisfies their natural tendency towards aesthetics and hands-on exploration. We want to make something that the children can relate to as well, because the sense of familiarity is conducive to comfort and engagement. 
It all started off with Jett's "obsession" with the bananas. Bananas are such a fun concept, and it is definitely one that children are very familiar with. Then we decided to make a whole board of bananas, and the bananas will actually be LED lights that create rippling effect when one punches that part of the banana. The final product may look like a board, which was originally designed to have 5*5 tiles, but due to limited time, material and unsuccessful project management, the size was reduced to3*3. Every tile has a banana shape on it, and it is lit up in a certain color by the LED behind it. As a child and or an adult exerts pressure on a tile, the LED on that particular tile will change into a new, random color, and then activates the surrounding tiles to change color subsequently, thus creating a ripple. 



The overall idea of the implementation is --> the tiles are made of plywood and have a grid structure underneath. All nine banana tiles act as a switch, and when one punches the tile, they will activate the switch and send a signal to the Arduino, the Arduino will then program the LED strip which is hidden in the grid to create a ripple effect.


Circuiting: see graph below

Arduino (lost when my computer fried) :

  • Each of the nine switches is connected as an input on the Arduino 
  • The code uses object oriented programming, and implements the Banana class, and the Ripple class. The grid is represented as an 2D array of Banana objects. And there is a vector that keeps tracks of all the Ripples present at any arbitrary moment. When the program starts, the grid of Bananas are initialized and no Ripple exists. The loop() function first checks all nine switches. When a switch is turned on, a new ripple object will be created and added to the vector. Then loop() will update every Ripple, and the Ripple will call its expand() method which will make the ripple bigger by changing the colors of the Banana objects. When the Ripple is bigger than the board, it will be deleted from the vector. In the end, loop() will change the color on the LED strip based on the colors of the Banana objects.
  • The code uses the WS2801 library to program the LED's.



Provide a paragraph discussing the successes and failures of your choices. False starts and process missteps should be omitted unless they particularly inform the final outcome.


Photo Documentation

(see below)


Video Documentation

(Due to the incompletion of the project, there is no video documentation available)


Technical Documentation

You may optionally include a zip file with CAD files, DXF cut files, PDF drawings, PDF circuit diagrams, and original source code.  This is not required, but will help others appreciate the depth of your work.

Share this Project


16-223 Introduction to Physical Computing

· 1 member

Physical computing refers to the design and construction of physical systems that use a mix of software and hardware to sense and respond to the surrounding world. Such systems blend digital and ph...more