MAS.714J | Fall 2009 | Graduate

Technologies for Creative Learning

Assignments

This page presents the weekly activity assignments other than those directly related to the final project.

1. Scratch Project

For this week’s activity, you are asked to create a Scratch project to introduce yourself, and to add the project to the class gallery on the Scratch Web site by the end of the day before Ses #2 (just before our next class).

In class, we’ll be discussing our experiences with this activity. Some questions to think about:

  • As you created the project, what was most surprising? What was most difficult?
  • Reflect on the process of creating your Scratch project, using the framework of the creative learning spiral (described in the Resnick paper).
  • What resources did you use in learning Scratch and creating your project (tutorials, other people, etc.)?
  • What do you think you learned from this experience?

2. Scratch/WeDo Creation

For this week’s activity, you are asked to create a story that combines on-screen and off-screen, using LEGO® Education WeDo™ and Scratch.

To help you get started, here’s a Scratch/WeDo miniguide (PDF). Also consult our class collection of WeDo building instructions for different projects.

In class, we’ll be sharing our Scratch/WeDo creations and our experiences with the activity. Some questions to think about:

  • How did working with WeDo change your experience of working with Scratch?
  • How did working with others change your experience?

Examples of Student Work

“Caterpillar Love Story,” by KA and JC

“King Duck vs. Fatman Protagonist,” by DG and MN

  • Video: “King Duck vs. Fatman Protagonist.” September 25, 2009. Vimeo. Accessed May 25, 2010. http://vimeo.com/6759476

3. Scratch galleries

For this week’s activity, you are asked to create a gallery on the Scratch Web site with at least 10 projects related to a theme you are interested in.

To create a gallery of 10 projects:

  1. Sign in to your Scratch account
  2. Create a new gallery
  3. Find a project you’re interested in
  4. Click on the “Add to a gallery” link beneath the project
  5. Check the box next to your new gallery
  6. Repeat steps 2 through 5
  7. Add a link to your gallery to the class blog as a comment

In class, we’ll be sharing our experiences with the activity. How did your experiences connect with new media literacies?

Examples of Student Work

SCRATCH GALLERIES STUDENT STUDENT’S COMMENTS
Generated art/patterns DG  
Instrument learning JP My favorites are the last two: Drumstation2 and Record a Tune
NewsFlo FG From print to broadcast, and e-zines and photography to interactive publishing, my ‘NewsFlo’ gallery represents a condensed but varied selection of news media. And of course it includes our cat-correspondent :)
JC Favorites JC I chose projects that had a storyline and utilized some original character drawings. It was interesting to sift through all of the diverse projects posted.
Musical concepts MN Projects that are related to intuitive ways of teaching musical concepts
Amusement Parks! RC Projects that remind me of amusement parks
My STS Favorites DL I especially enjoyed projects where students created new ways of learning old things
Building/buildings SK Projects about cities, buildings, and building
SL Top 10 SL  
Interesting projects ZH  

4. Scratch Sensor Boards

For this week’s activity, you are asked to create a personally-meaningful tangible interface with a Scratch Sensor Board.

For help setting up and experimenting with the board, check out the Pico Board site, which includes a Getting Started Guide. As part of the setup process, you’ll need to install a driver.

To document your Scratch Board project, we’d like you to create an additional Scratch project that includes photos of your Scratch Board project—and your process of creating it.

Please upload both of your Scratch projects (the Scratch Board project and the documentation project) to the Scratch Web site. Please include links to both of the projects as a comment.

If you’d like to see examples from last year’s class, check out their Scratch Sensor Board resource page.

In class, we’ll be sharing our experiences with the activity. How did these experiences (and your experiences with the WeDo) shape your understandings of the connection between the physical and the virtual?

Examples of Student Work

SCRATCH BOARD PROJECTS “CREATING THE PROJECT” DOCUMENTATION STUDENTS
Sink the Ship Scratch ZH, EL
PicoBoard Drumset Scratch, Video 1, Video 2 JC, JP
Crazy Dancing with Scratch Cat Scratch, Video
Robot Dance Party Scratch VC, DR
Virtual Tree Scratch AB, RC
The Bike Game Scratch SK, DL
Smart Personal Agent Scratch KA, FG
TuneWars Photos (unavailable) DG, MN

5. Collaboration and the Scratch Web site

For this week’s activity, you are asked to find three examples of how the Scratch Web site is designed to support collaboration.

In class, we’ll be discussing our experiences with this activity. For each example, we will discuss: (1) how it fosters and encourages collaborations, (2) what are the limitations, (3) how it could be extended or enhanced. What new features could further enhance collaboration on the Scratch Web site?

Discussion Notes

Notes by Karen Brennan

  • Sign up as a team (like a Facebook group)
  • Craigslist-like solicitation forum (I’m looking for animator to do…)
  • Share units other than projects (a.k.a the “function logger”, sharing code excerpts or sprites)
  • Explicitly leverage adult or experienced Scratcher contributions (like through mentoring)
  • Get Scratch out of Scratch (like having Scratch projects appear elsewhere)
  • Real-time collaborative workspace with chat and history (text, video, audio)
  • Tip of the week
  • Who’s currently online for real-time advice
  • Chat
  • Aardvark-like service where people sign up as knowing certain things (http://vark.com/)
  • Restrict access to galleries (private to only a certain group of people while work is in progress), with recorded transcripts
  • Code repositories to check work in and out (like svn)
  • Color-coded comments to track who contributed what
  • Different forms of attribution and credit (like being able to list more than one author)

Notes by student DG

1. How does it foster and encourage collaboration?

  • The ability to upload a project, other can download it and modify and then upload it to their gallery.
  • This encourages collaboration by allowing others to learn, modify and build upon the work of others
  • It lacks version management, the ability to diff, and the ability to merge.
  • It could be improved by mimicking the features of an application like github which is designed to manage this problem.

2. What are the limitations?

  • The messaging system allows you to track comments on your projects
  • It allows you to see what others are saying
  • It lacks the ability say X new messages
  • Once the user views the message set a flag to viewed and only show when you have new messages

3. How could it be extended or enhanced?

  • Forums
  • Allows people to help each other, plan, ask questions, etc…
  • A little hard perhaps to discuss projects; they’re not easily available, you need to download the program
  • Provide a live chat? Make it easier to discuss projects (show projects on the side of the forum,allow one to view code and share it)

6. Help Someone Learn Scratch

For this week’s activity, you are asked to help someone learn Scratch.

Please add a comment to this post and describe the person you helped (age, gender, previous experience with computers, other dimensions).

In class, we’ll be sharing our experiences. How did you approach the task? What were the challenges? How did it compare with your own experiences learning Scratch?

Examples of Student Work

Compiled class blog postings

7. Paper Computing

This week’s activity asks you to create an interactive painting using Leah Buechley’s Paper Computing kit.

Please take pictures to document your painting.

Examples of Student Work

Project by DG, JC, and RC

Posted by JC

I taught an eighteen year old teenage male and a fifty year old female. The male has basic user experience - email, IMs, surfing, and has a basic computer upbringing. The female has a degree in computer science and works as a test engineer. The female is a friend of mine and the male is her son; I was visiting with them this weekend. They were interested in the class I was taking this semester and volunteered to learn Scratch.

I gave them an overview of the class and showed them my first three projects. I then walked them through the basics of Scratch. I didn’t want to spend too much time with the instruction; rather, just open the time we had to playing.

I found it challenging to not tell them how to best implement their animation idea; I had to let them play on their own and provide support when needed. It was interesting to see the son realize he could use a loop instead of repeating commands manually. He was stumbling across programming concepts without his mother and I explicitly instructing him. He immediately tested every small change he made to his animation as well. It was interested to see how he expected to immediately see the result of his work; this made it easier for him to debug.

The son easily experimented and navigated his way through Scratch while playing. Dragging and dropping blocks made it welcoming to play and not be tentative about making mistakes. This was very similar to my experience; there is nothing to lose by playing with the block construction. He found it satisfying to instantly see the results of your work, whether it worked or not.

Here is their project:


Posted by SL

I taught a 65 year old business woman how to use Scratch. Her computer experience included word processing, spread sheets, some Photoshop, and that’s about it. She does not surf on the Internet much, doesn’t create online content, is not a gamer, has never made or updated a website, has never used Dreamweaver or html, and has never programmed. She uses a PC generally and when we worked together on Scratch we used my Mac, so there were some basic user interface issues to overcome. Despite all of these challenges she did great!

As she was not a gamer, and had no programming experience we started by going to the Scratch website and looking at different projects online for inspiration. Then I showed her the scripts for several projects in the Scratch programming environment. Next I opened my MAS Class Intro project and fooled around with the program, showing her functionality, gradually letting her take over the exploration. She added a Christmas tree to one of my landscapes, then decided that her project would be to make a Christmas card with music and animation. We approached it as a team effort, with her “driving” the process. When we started I helped a lot, and gradually “disappeared” letting her figure it out on her own.

She had some trouble understanding the syntax and logical structure of programs. For example it was hard for her to discern the difference between control blocks and motion or sensing. “Broadcast” was a command that was difficult - she didn’t quite understand the separate scripts needed for each sprite or stage, and thus didn’t understand cause and effect. So she would pull out any block with “broadcast” in it (like “receive broadcast”) and put it in any script, not understanding who was causing and who was being affected. This felt partially like a problem with not seeing the script architecture all at once in one place. In the end she navigated the blocks by color coding, and by copying bits of scripts that worked in other places, which was absolutely fine. She had trouble understanding how to create and edit sprites and stages, and she avoided importing files or sounds or creating new sounds. She did use the paint program extensively. At first it was difficult, but with repetition she got pretty good at it. In general repetition was very important to her learning process.

When I learned Scratch about a year ago, my process was similar. I learned by copying bits of scripts, repetition, and following others along. The color coded blocks helped a lot, and having examples nearby helped too. When I learned, I learned in a group and so didn’t get much personal support or much time alone with the project in my first attempts. I think you need a bunch of time exploring by yourself to really understand what you are doing. As a teacher, I think the limits of my knowledge definitely influence what my student can learn from me. So in order to inspire my student to great heights, I kind of need to understand at least some of those great heights myself. I think my student will play with Scratch again, but she needs more mentor time to get significantly motivated. And that mentor should be someone pretty good with Scratch.

We spent about 3 hours constructing the Christmas card, and she had a lot of fun making it. As a teacher, I struggled with the balance of being too present versus letting her explore on her own. She did take over the process eventually and learned a lot. She was excited enough about it to want to download the program at home and improve her card, and possibly make some new projects as well. It’s a testimony to your great Scratch design. Bravo.

Here is her project:


Posted by FG

This is really embarrassing… :) I set out to teach Scratch to a student here at MIT – in fact a classmate B. from Pr. Gershenfled’s class ‘How to Make Almost Anything,’ who said he was coincidentally seeking ways to learn about it because he needed it for a class project - and he ended up teaching ME tricks and strategies for creating new functions in Scratch that I didn’t even suspect were possible. The student is younger than me and had no previous experience with Scratch. He had just briefly heard of it from a person who works on Scratch in the Lifelong Kindergarten. Save for this brief introductory conversation, he had no prior knowledge of Scratch, and had not even had time to look at its website yet. For sure, we shattered the traditional, hierarchical system of teacher-pupil, as those roles became blurred and reversed on several occasions throughout the session. To help him, there was his own motivation, since as I said, he was himself interested in learning Scratch and planned to do so in the near future.

Within what seems like seconds, B. had created a mini interactive dialogue between himself and his avatar, a round-shaped little man who responded to his questions, on time and correctly. ‘Hi, how are you ? I’m fine thank you, etc. To do this, he needed to know how the input-output system works in Scratch. After going through the basics of sprites, costumes, backgrounds, and the most simple functions of the left hand side bar, like speaking, thinking and motioning, he asked me astute questions about how these input-output functions can be applied in his scenario so that his little sprite-avatar, whom he had created himself in Scratch, could respond to him. Soon after, he was explaining to me the system of input-output in Human-Computer Interaction and how to implement it in Scratch.

He also had a question about input that in fact neither of us could answer or find a solution to: he wanted to find out how he could keep his sprite-avatar moving while receiving input. Each time, his sprite, who was pacing along the screen from right to left and back, would stop half way when receiving an input [question] from B. before answering it. B. wanted him to keep moving and reply simultaneously. He asked me to ask to the class how to implement this - so your thoughts are welcome!

He was also very interested to learn about sensors and our project with the Scratch Sensor Board. I showed him SL’s video of our Dinolove story, which he watch appreciatively. He also wanted to see the code for this project and others, paying much attention to how such or such function had been written in the code.

To be fair and accurate, I should have said that B. worked for many years as a professional programmer before joining the Media Lab. He has been working with PHP, C#, C3 VB.net, Perl, Java Script and HTML CSS, nearly all which I am unfamiliar with. So it is perhaps no wonder then, that when it came to the code and technical specifications of Scratch, he was the one teaching me. In fact, I learned quite a bit from him, such as when he told me that when coding, one should always look at other people’s codes, that this was a great way of learning how to code - which seems sensible enough but is a habit I hadn’t acquired yet.

But apart from the most technically challenging tasks, I guided him in his discovery of Scratch, first by creating an account on the Scratch website and downloading the program, then we looked at a few projects, including mine. I then told him about all the social, educational, professional and artistic applications for Scratch projects, among others, and about the Scratch community and its concepts of open source collaboration.

The next day, he sent me his first Scratch project, which later evolved to version 2:

Quite an impressive start in my opinion, and I was pleased to see the lesson had already born fruit!

One important element of the interaction is that I was myself curious to carry out a little experiment. I decided to teach Scratch in Russian - which is why I chose B., because he is of Russian origin. He emmigrated to the US from Russia when he was five years old, which means that even though it’s his mother tongue, his Russian was a little at the same level as mine, although for different reasons. Mine is still faulty in places, as it is not my mother tongue, and his is a little rusty since he hasn’t spoken it in years.

I was just curious to see how I would manage teaching this essentially American program in another language, what kind of computer terms and Scratch ‘jargon’ I would be using as such, as transliterations from English, or which I would need to translate into Russian. Words like ‘sprite’, stage’, etc. in this context might prove problematic I thought. But in the end, I found equivalents in Russian. I was wondering if the fun and all the experiences of Scratch could be easily translated and passed on into another language and culture. And my verdict is: Scratch is wonderfully transferable into even the very different Russian culture and language.

Of course, I had heard that Scratch is being implemented in Russia, and in other countries, but I just wanted to see for myself and expand the learning experience of my session.

And thus, I taught the whole session in Russian, which went very well. I have it on tape if anyone is interested! At some point though, there were interesting ’teaching’ moments, when he would correct my grammar and I would remind him of a Russian word he had at the tip of his tongue but could not remember fast enough. Sometimes we would both instinctively use an English word to describe something in Scratch because there was no real Russian equivalent.

It was thus a kind of double learning experience, as we both were learning Scratch and Russian at the same time.

In conclusion, I can say that contrary to the old model of pupil-learning-from-teacher, we both brought something valuable to the table, and that our roles and strengths balanced each other, but in different ways, with his technical expertise and programming skills which by far surpassed mine, and my own experience of already having worked with Scratch and created projects.

So right from the start, we were learning from each other. And really, there is nothing ’embarrassing’ about it! On the contrary, I believe this is the type of teaching interaction that should be embraced by schools and educators.


Posted by VC

I helped a classmate from TIE who had no formal programming experience, but uses email like a pro and has experience with the following programs: excel, powerpoint, photoshop, pagemaker, indesign, databases.

We did it remotely since we didn’t have time to meet in person. I started off explaining the interphase and had her do some basic stuff (get the scratch cat to walk 100 steps when the green flag is clicked, get the sprite to move where the mouse goes). I actually realized that I don’t know the program particularly well and got a little sheepish trying to explain it. After a lot of “ok, try clicking on this menu… oh nevermind, maybe we’ll try this one? no, not that either,” she told me she had it under control and would just play around until she got it to work.

She wanted to do an animation of an xkcd.com comic, so she already had in mind exactly what she wanted to do. She also had enough experience with computers that she knew not to do anything too complicated, which probably made things easier. This took her about 20 minutes to do: kitty.

I think it would have been a lot easier to teach her had I had some sort of specific goal in mind of what I wanted her to create before setting her off on her own. She did great anyway, though!


Posted by JP

For this week’s activity, I want to share my workshop experience last winter. I had a couple of Rhino Script workshops in which I taught Scratch on the first day. Rhino Script is a script language to generate 3D geometries in a CAD/CAM software called Rhino. I used Scratch to teach common programming concepts such as variable, array, loop, condition and function. I assumed that the key knowledge in using Rhino Script was not so different from any programming languages. Once students were familiar with these common ideas, they would be comfortable using Rhino Script later.

Most of students came from architecture school and a couple of students from engineering departments at MIT and Harvard. Most of them were graduate students. I prepared sample Scratch blocks to generate simple yet repetitive geometries like rotating triangles or transforming sine curves. After a couple of hours of Scratch practice, I jumped into teaching Rhino Script and repeated the same practice, generating repetitive geometry patterns.

As an introductory programming workshop, the method I used looked very successful. When I collected student’s comments on the workshop, they wrote their excitements and love of the idea of combining Scratch and Rhino Script. However I found an unexpected cartoon among the returned comments. One student draw a cute human figure with a knife on his heart. I realized that no matter how I tried to make the programming learning easy, still there were holes that I could not fill in.

This week’s contextual learning may be great help. Still I am looking for ways to identify what are the hurdles in programming learning. Why some people learned so fast and some people did so slow. What makes possible for children to learn programming even in their pre-school ages ? What makes impossible for adults to learn programming, to feel a fear of programming ?


Posted by SK

I taught a 26-year-old roommate of mine, an architecture student visiting from Holland. He has extensive experience with 3D CAD software and graphics programs like Photoshop. One of his recent assignments was to learn some Rhino scripting to generate a concept based on a behavior from nature for his architecture studio. I knew that the behavior he had chosen was the flocking behavior of birds, so I thought I would try to teach him by developing something similar. He was very busy and sort of reluctant to spend time on this at all, so I figured that choosing a relevant project would help keep him interested. In the end, we wound up working for almost two hours together.

One of his first comments was about the aesthetics of other people’s projects on the Scratch website. I think he had a hard time seeing Scratch as “for him” because his work involves very refined and sophisticated graphics - not the pixelated sprites so common in Scratch projects. Perhaps as a result of this, he made no connection between programming with Scratch blocks and programming in his brief introduction to Rhino scripting.

I have been programming since I was around 12 years old, so I forgot what it’s like to not understand thinking in code. Teaching my roommate reminded me how very different it is. For example, when we made a variable, he didn’t intuitively understand the difference between performing a calculation with a variable, setting its value, or taking action based on the value. Giving the variable a meaningful name confused him as he conflated changing its value with performing an action the variable’s name alluded to. I also had to explain to him how we needed to say more than “multiply this variable by 10” and explicitly state “set the value to the result of multiplying by 10”. This sort of abstraction and categorization wasn’t obvious to him and I was reminded that very few situations but computer programming makes these differences apparent. To help him understand, I tried to use analogies (especially for understanding if..then logic statements) and the fact that only certain Scratch blocks fit with each other. By the end, he reflected that it was important to declare explicitly how you want your sprites to behave and then to carefully translate these ideas into code.

We didn’t achieve our goal of simulating flocking, but we did produce a set of sprites that each had identical behaviors to produce some sort of pattern. From this, he said that he saw the potential for generating forms or animations for his work in architecture. Even though our set of rules wasn’t “correct,” I think he saw the power in being able to “set the rules” in the first place. He seemed to understand the potential for Scratch and programming in general as a tool. I think this appealed to him far more than looking at it as a toy or “fun” in any way, though his continued engagement well past the amount of time he said he would set aside led me to believe he enjoyed the experience!


Posted by JL

I taught K., a visiting scientist in the media lab who wanted to learn scratch to teach her nieces over Thanksgiving break. She works for NASA so I want to say that she is somewhat familiar with programming and definitely computers. But she didn’t try to understand Scratch like a programmer.

I taught Scratch as if it was a story telling mechanism. Sprites were actors, the background can have different scenes, and you can broadcast different acts of the story. This model served as a good way to introduce the program. I then showed all the different projects online to show its potential to do other things besides story telling.

A challenge was making sure I taught them enough tools so that they can explore later. There are so many functions and tricks to learn that you can’t teach it all in 1 hr. It is something that they just have to play around with.

The experience was completely different from the way that I learned. It was more comparing Scratch to known computer languages like Java and C++. I was just trying to find the correlating functions; broadcasts are like globals and all the different sprites are like threads.


Posted by MN

My learner was an MIT grad student (age 27, male, very experienced with computers, especially C++ and MATLAB). I intentionally let the learner explore the Scratch site on his own for a while, intending to mentor him whenever he has questions. However, he simply downloaded the manual and jump started the learning process by going through the instructions. He said that following the manual was the quickest way for him to learn new programming codes.

Since he was very experienced in other computer languages and was familiar with the process of figuring out how to navigate through computer programs, I wasn’t much of a help to him. Comparing this to my own experience, I would have preferred to have someone go through the main features of the Scratch website, since I generally learn quicker through human instructions than manuals and I am not as nearly as experienced in computer programming as my learner.

This was a useful experience for me, because the difference in our learning processes taught me that people with varying experiences and personality types gain knowledge/skills in vastly different ways. It is important to keep this in mind when designing lessons and curriculum that caters multiple personality and learning types.


Posted by KA

I taught Scratch to a friend of mine N.; early 30s, male, a medical physician. He has a few years computer programming experience when he was 8th-10th grade for his hobby. He said he is not a computer geek type, but curious to new & fun things. When I talked about the class to him, he showed interests in the tools I used in class such as Scratch, sensor board and WE DO. He said Scratch seemed very attractive because I enjoyed playing Scratch in the living room in our house (yes, it’s my roomy), and almost forgot to turn off the oven. My cookies were burned because of Scratch!! That inspired him to learn how to use Scratch.

First I showed Scratch website, and explained how he can play around Scratch; before and even after creation such as sharing, getting comments and collaboration. Then, let him pick some projects from the site intuitively and downloaded them to see the codes behind the projects. Then he started making his first Scratch, and I gave some advices occasionally.

Here is his first project:

I will save the details for in-class discussion, but one thing I really want to share is that “teaching is learning”!!


Posted by ZH

I taught a MIT grad student who is 25 years old. She has no any programming experience before. Actually she has interest in scratch since couple weeks ago, she attended our class on which we showed our group project by making them on the board with sensors and scratch.

At the beginning, I showed her couple of examples online to see what kind of things Scratch could do. At that time, she really wanted start to work on the project instead of spending too much time on the other people’s work . I introduced the function of different sections of the bricks and some important bricks. And then, she started the project by picking her favorite cartoon character, a frog. (Sorry, I don’t its name). And then, she decided to make a very simple story: a male frog met a female frog and they fall in love. She did not think about any details, but just to start to look at the different functions of the bricks. Based on the discovery of those functions, she made the details of her story. For example, she found a function could turn color, and then, that became a part of her story. Sometimes she liked to ask, “if I want to let this walk in this way, how could I make it.” Usually, I did not answer her directly, since she is a graduate student, she can figure it out by herself and that is important for her as a learning process.

During the process, she was really enjoying and testing those different bricks, and even she criticized the Srcatch itself.

This is the project she made in one hour:

I think this experiences is really close to mine, and the most important point to me is that, Scratch itself is not just a tool to make the animation or a game, but it is a tool to help you think and develop the ideas. I think it is the same to any other tools. For example, a pencil is not just a tool for an artist to draw what is in his mind, but rather it is a tool to help him think what he would draw. At that time, the mental and physical movement has an interaction go back and forth.


Posted by DG

I taught a friend who is well versed in computer science and programming languages. He was able to understand all of the functionality and the way to tie things together very quickly - I’d say we were building complex applications in about 20 minutes.

I found that using the concepts of prototypes, e.g. SELF, to be very useful model to understand the environment.

By Prof. Leah Buechley, High-Low Tech group. (Courtesy of Leah Buechley. Used with permission.)

We’ve developed a construction kit that lets people create interactive paintings. The kit consists of conductive paint, a small magnetic “tearDrop” computer, a magnetic speaker, several lights (light emitting diodes or “LEDs”), and a few other things. Here’s what it looks like:

Paper computing construction kit.

We’ll use glue and conductive paint to create circuits with lights that will be controlled by the tearDrop computer. We’ll use pencils and conductive paint to build sensors and switches that will make our paintings interactive. To attach our tearDrop to our electric paintings, we’ll rely on the fact that it is magnetic. We’ll put our painting on a magnetic surface like a refrigerator, a piece of steel, or a sheet of magnetic paper and then the tearDrop computer will stick to it, completing electrical connections between the painted circuitry and the computer. Here’s a movie of a design I made:

  • Sketching circuits with the paper computing kit (MOV - 19.4MB)

Before you get started with the project, you should know some basic stuff about the materials we’re working with.

About Conductive Paint

We will be using a water based paint that contains conductive copper particles. The paint is nontoxic and can be cleaned up with soap and water. There are three very important things to know about working with this paint:

  • the paint is not conductive until it dries.
  • you need to thoroughly mix the paint each time you use it. you can do this by vigorously shaking your bottle.
  • you should use the paint as quickly as possible. copper + water + oxygen = oxidized non-conductive copper. the paint will quickly corrode in its (non-airtight) container, turning green and then black, losing its conductivity in less than a week. once the paint is dry this is no longer a problem, it’s only in the bottle that the paint oxidizes.

About Circuits and LEDs

If you are completely new to circuits, you should read enough to understand how a basic circuit works before embarking on this project. Good introductions to electricity and circuits can be found at Electronics Club - Electricity and the Electron and Doctronics - Circuits.

We’re going to be using Light Emitting Diodes or LEDs in our painting. LEDs are highly efficient lights that come in an assortment of colors, shapes and sizes. If you are new to LEDs, you should read the first section of the page at: Electronics Club - Light Emitting Diodes (LEDs) before proceeding.

Unlike some lights, LEDs have two different ends, a positive (+) end, called the “anode”, and a negative (-) end called the “cathode”. The negative end of the LEDs in the kits are marked with lines on their bottom.

Kit LEDs, with stripe indicating the negative end.

To get an LED to turn on you need to attach its positive end to the positive end of a battery or other power source (like our tearDrop computer) and its negative end to the negative end of the battery or other power source. In the case of the tearDrop there are two negative attachment points, the tabs labeled “-” on the tearDrop template, and five positive attachment points, the tabs labeled “+”, “fade1”, “fade2”, “on 3” and “on all”.

A note about LEDs and resistors: generally, you have to be careful not to attach an LED directly to a power supply. Attaching an LED directly to a power supply can cause the LED to burn up as too much electrical current flows through it. Normally, you have to attach an LED to a power supply through an electrical component called a resistor. However, for this project we don’t need resistors because the conductive paint we’re using has some natural resistance. For more information on resistors and LEDs see Electronics Club - Light Emitting Diodes (LEDs).

About the TearDrop and Arduino

If you want to re-program your tearDrop, read this section, which provides a whirlwind introduction to programming the tearDrop. Otherwise, you can skip to “Getting started”

The tearDrop computer is an Arduino and can be reprogrammed using the Arduino software, which you can download for free here. There are instructions for installing and configuring the software here. In following these instructions mentally replace every instance of LilyPad with tearDrop. (Note: in step 6, “Select the right board”, you should select “LilyPad Arduino w/ ATmega168”).

Before you start trying to program the board, read through this guide that will give you an introduction to Arduino program structure.

Start your experimenting by going through this basic tutorial which blinks the LED on the tearDrop board. Now for some more specific tearDrop information and examples.

The tearDrop has only 8 input and output pins, in contrast to the traditional Arduino, the Arduino Duemilanove, which has 20. The Arduino labels for the tearDrop pins are printed on the tearDrop board. They are: 1 (tx), 0 (rx), a3, a2, a0, a5, 11, and 10. We’ll need to use these labels, and not the labels on the template, when we write Arduino code.

readData.txt (TXT) is a simple program that reads sensor data from pin a3 and then sends that data back to the computer as a number from 0 to 1023. To try this example, copy the text from the readData.txt file, paste it into an Arduino window and download the code to the tearDrop using the technique from the first example. Attach a sensor to pin a3 and then click on the right most icon at the top of your Arduino window. (The icon looks a bit like a camera and text saying “Serial Monitor” will appear when you hover over it.) This will open the “serial monitor”, a window where you can see sensor data that is sent from the tearDrop to the computer. For more information, read this tutorial about a similar example.

tearDropExample.txt (TXT) is the program that corresponds to the tearDrop template and the rest of the text on this page. It maps input from a3 (sensor1 on the template) to output on pin 11 (fade1 on the template), etc. To try this example, copy the text from the tearDropExample.txt file, paste it into an Arduino window and download the code to the tearDrop.

For more information about Arduino, see the Arduino language reference and Limor Fried’s excellent tutorials. Note: when you are sending data back and forth from the tearDrop to the computer, pins 0 and 1 (“on3” and “on all” on the template) won’t work because they are attached to the communication lines.

Getting Started

The tearDrop computer has three inputs for switches or sensors, one output for sound, two fading outputs that fade lights on and off and two on/off outputs that just turn lights on and off. It is preprogrammed so that “sound 1” changes in response to sensor 1, “fade 1” dims and brightens in response to sensor 1, “fade 2” dims and brightens in response to sensor 2, “on 3” turns on in response to sensor 3, and “on all” turns on when all three sensors are fully triggered.

The kit includes a template with labels for each of the inputs and outputs. The top of the template corresponds to the top of the tearDrop (the side with all of the electronics). Sensor inputs are labeled with inward pointing arrows and LED and sound outputs are labeled with outward pointing arrows. The template lets you see the mapping of the tearDrop’s behavior and also provides a physical template for the tearDrop that will help you with your painting. Here’s a close-up of the tearDrop and its template:

Close up of the tearDrop Arduino.

You may want to plan out your complete design before you get started, or you may want to start by experimenting. Whichever path you choose, once you’re ready to start painting, the first thing you want to do is decide where on your sheet of paper you’re going to put the tearDrop. Once you’ve decided, place the tearDrop template on the paper and use a pen or pencil to draw out and label its footprint.

Tracing the tearDrop on paper.

Then, with a pen or pencil, draw out a path for one LED. One side of your LED must lead back to one of the negative pads on the tearDrop (one of the pads marked with a minus sign “-”) and the other side of your LED should lead back to either the positive pad on the teardrop (the one marked with a plus sign “+”) or one of the “fade” or “on” outputs.

I’m drawing a path for an LED between + and - on the tearDrop. This is a nice way to start your design because an LED between + and - will always be on. Since the LED will always be on, you’ll get a feel for the materials without having to worry about making a sensor or a switch, which are necessary to trigger the “fade” and “on” outputs on the tearDrop.

Path for an LED between + and -.

Attaching a Light

To attach a light, you’ll glue it down and then use conductive paint to link it to the tearDrop computer. To add a light to your painting, first glue it down to the page (super glue works especially well), and bend the legs of the LED down so that they’re touching the paper like so:

LED with bent legs glued to the paper.

Then paint over the legs of the LED with your conductive paint like so:

Conductive paint connecting to the LED leads.

The painted LED connection between + and – on the tearDrop.

Once you’ve painted the circuit you have to wait for the paint to dry before the LED will come on. So, now you have to wait for the paint to dry. You can work on other design elements like switches and sensors while you wait.

After 15-30 minutes the paint should be dry and you can test out your LED circuit.

Note: speakers can be attached in basically the same way as LEDs only you don’t have to worry about negative and positive sides of speakers. You simply attach one side of the speaker to a “-” tab and the other to the “sound 1” output tab.

Adding a Switch to Your Painting

To make a switch, we connect one of the pads marked with a minus sign “-” temporarily to one of the sensor inputs. Below for example is one way to make a switch for sensor 3. There is one painted line leading to “-” and one painted line leading to sensor 3. When these two lines are connected with a third piece of painted paper, the switch is closed and output “on 3” turns on. To make this example I painted the “-”, “sensor 3”, and “LED 3” traces, and a small piece of paper. Then I waited for the paint to dry, and in about a half an hour had a working circuit:

Adding a path for a switch made of painted paper.

With the switch closed, the LED lights.

Adding a Sensor to Your Painting

A sensor is similar to a similar to a switch, but slightly more complicated. To create a sensor, we connect one of the pads marked with a minus sign “-” to one of the sensor inputs through a changing resistor. A resistor is a material that resists the flow of electricity and the tearDrop can detect how much electricity is getting through a resistor. When the value of the resistor changes, the amount of electricity changes, and the tearDrop can detect this change. It turns out that pencil lead or graphite is a good resistor, so we’ll rely on it to build sensors.

To build a sensor we want to vary the value of the resistor somehow. A good way to vary the value is to shorten or lengthen our graphite resistor. A longer line has more resistance and a shorter one has less resistance. Here’s a sketch of a sample sensor where we are shortening and lengthening a graphite resistor by moving a sensor input tab across its surface. Note how one end of the resistor is attached to ground and the moving input tab is attached to a sensor input, in this case “sensor 2”.

Building a sensor by using a variable resistor.

Here’s an example of an actual paper sensor. In this image, when we move the blue tab (whose underside is painted with conductive paint), we change the length of graphite between the blue tab, the input tab, and the left side of the graphite sphere, which is attached to ground.

An actual paper sensor.

This creates a sensor that can detect rotation.

Making a Complete Project

Now your job is to build an interactive painting that incorporates input and output.

Inspirations and References

Graffiti Research Labs

PopUp Workshop

Drawdio: A Pencil That Lets You Draw Music (Jay Silver)

Pulp-Based Computing (Marcelo Coelho and Pattie Maes in collaboration with Joanna Berzowska and Lyndl Hall)

This page was created by Amon Millner during the 2008 course. (Courtesy of Amon Millner. Used with permission.)

Getting Set Up

To download the driver you’ll need to make your Scratch Board work, visit the Picoboard Web site.

On the Scratch Web site, former MAS714 students have graciously documented processes they used to build Hook-ups. The project links below will give you a glimpse into how several students linked physical creations to Scratch projects through sensor boards.

SCRATCH PROJECTs SUPPORTING FILES
Example 1: synthesizer Documentation
Example 2: foil shoes

Documentation

Movie demonstration

Example 3: interactive drummer Documentation
Example 4: beatrice, a beat maker Documentation

Course Info

Learning Resource Types
Problem Sets with Solutions
Projects with Examples
Activity Assignments with Examples