Weekly Schedule

This schedule is subject to change

Jump to current assignments

 Week 1: Introduction to Electricity

September 3 (Monday 4:05 – 5:20) Class 1


Introductions

Review syllabus

Why are we here? What’s the class about?

Examples, get excited

Assignments due September 5

  • Read this introduction to electricity at Sparkfun
  • Read “Creating your first post as a WordPress author” here
  • Write a short post introducing yourself. You do not need to share any personal information that you do not wish to.
  • Label your shelf
  • Get started on reading assignments due September 8

Announcements

  • Note that we have class this coming Saturday
  • Tickets to Lucinda Childs dance performance
    • Why is this relevant to our class?
  • Kits will be distributed on Wednesday

September 5 (Wednesday 2:40 – 5:20) Class 2


Lecture and demonstration, and do it with me

  • Electricity
  • Breadboards

Assignments due Saturday September 8

Note that we have class this coming Saturday!

 Week 2: Introduction to Arduino Digital Input and Output

September 8 (Saturday, Legislative day, Wednesday schedule 2:40 – 5:20) Class 3


Show your work

  • Show your switch

Lecture

  • Electricity theory that we skipped last week

Lecture and Demo

  • Introduction to Arduino programming and basic digital input and output
    • File -> Examples -> Basics -> Blink
    • File -> Examples -> Digital -> Button

Assignments due September 10

  • Readings
    • The two soldering resources here
    • Read the bottom section of this page of Miss Klein’s Art Class, the section that starts with the “TAG – You’re It” poster. In your blog note your favorite ways to discuss and constructively critique work, either from this page or from what you know already. Your favorite way to do this might be the way that you best like others to critique your work. Be ready to practice them in our discussions.
    • Read this Adafruit tutorial about another type of switch, the tilt sensor
  • Get started on the readings for September 17 and 19
  • Get started on the Arduino project for September 17

September 10 (Monday 4:05 – 5:20) Class 4


Do along with me

  • Review File -> Examples -> Digital -> Button
  • Multiple switches, multiple LEDs

Assignments due September 17

  • Arduino
    • Using switches and LEDs, make a circuit and write an Arduino program that combines multiple digital inputs and outputs to create an unexpected LED behavior (i.e. each button does not directly turn on and off each LED). Write a blog post explaining your concept and how you implemented it. List the problems you ran in to.
  • Readings
    • Documentation
      • Hackernoon article on Write Good Documentation
      • Techscribe article on What is Good Documentation
      • Write a blog post about documentation. Do you agree with the readings? Are there other points of view that you think are more important? The readings focus on software; how might you apply these ideas to hardware (electronics? What do you think of Joel Spolsky’s comments? Do you agree with me that a schematic is better than showing the breadboard and wires? Why or why not?
      • The Art of Interactive Design Chapter 1. Write a blog post with a 100 – 200 word response.
      • Github for Beginners. Don’t worry too much about details, just try to get the general idea.

September 12 (Wednesday) – no classes

Week 3:  Arduino Analog Input, Conditionals, and Introduction to (Resistive) Sensors

September 17 (Monday 4:05 – 5:20) Class 5


Show your work:

  • Show your multiple inputs and outputs with unexpected behavior
    • Share very briefly with all of us
  • In groups of 3, critique each other’s work

Announcements

  • It is your responsibility to read the assignments carefully and to complete all parts
  • Open House Wednesday 6-7pm
  • Clean up
  • Office hours

Discussion

  • The Art of Interaction Design
    • Is a conversation taking place in your production assignments? (Remember the author’s definition that interaction is not a binary value, but rather a scale from very little interaction to a lot of interaction.) This is not a judgement, just an observation.
  • Documentation
    • Why do it?
    • What should you document?
    • Who is the audience?
    • What is good documentation?
  • Time permitting, introduction to Github
    • Steps 1, 4, and 5 of this

Assignments due September 19

September 19 (Wednesday 2:40 – 5:20) Class 6


Lecture and demonstration

  • Arduino Analog Input
    • File -> Examples -> Analog -> Analog Input
    • File -> Examples -> Basics-> AnalogReadSerial
    • File -> Examples -> Basics -> Digital Read Serial
  • Conditionals
  • Introduction to (Resistive) Sensors

Assignments due September 24

Week 4:  Arduino Analog Output

September 24 (Monday 4:05 – 5:20) Class 7


Before you set up your projects, I would like you to sit in diferent places so you have a chance to work with other students

Show your work

  • Unexpected LED behavior from an analog sensor
    • Share very briefly with all of us
  • In groups of 3, critique each other’s work

Put away projects and kits

Demo and do along with me: Insert Arduino code into your blog

  1. Click the <> symbol at the right end of the top toolbar
  2. In the “Language” field select “Arduino”
  3. You don’t need to change anything else
  4. Paste in your code in the big box
  5. Click “Add”
  6. It won’t look so pretty until you “update” and “view post”

Announcements

  • Wednesday: AnalogOutput, sound, and motion
  • Next week: Midterm project starts

Discussion

Assignments due September 25

We have a unique opportunity to visit Rain Room at the Sharjah Art Foundation on Friday October 5. I need to tell the university by the end of the day Tuesday, September 25. If you are interested and are available please let me know by 5pm Tuesday, September 25. If you are wondering what the installation is about please visit the website. It’s a pretty famous piece and I may have even shown it in our introduction; it’s certainly in the list of videos I pick from. I’ve never seen it so I can’t tell you much more than what’s on the website.

We would leave campus around 2pm, visit the Rain Room around 4, spend some time in the Sharjah Art Foundation, and then have dinner before we return. I do not know by when we would return to campus.

Any replies after 5pm onTuesday, September 25 will not be allowed.

Assignments due September 26

September 26 (Wednesday 2:40 – 5:20) Class 8


  • Lecture, demonstration, and do along with me
    • analogWrite()
      • manually
    • servo()
      • manually
      • file -> examples -> servo -> knob
      • file -> examples -> servo -> sweep
    • tone()
      • manually
      • file -> examples – digital -> tone melody
  • Warnings!
    • delay()
    • servo library affects analogWrite() on certain pins
    • Don’t use digital pins 0 and 1
  • Soldering!
  • Review homework assignment

Announcements

  • We had originally been invited to join another class to visit the Rain Room installation. I was just informed by the university that I need to submit a separate application to take my class. Since the visit is so soon, there won’t be time for me to fill out the application and get the approval, so the trip on October 5 is currently not happening. I’m very sorry.
    I will try to fill out the form as quickly as possible and see if the university lets us join on very short notice. The installation is permanent, so you can always go to visit at a later time.
  • I need everyone to read, sign, and return to me the Lab Citizenship Policy form. If you did not get one in class, please print IM Lab Citizenship Policy and return to me on Monday. If you filled this out in another class you do need to fill another one out for this class.
  • I forgot to mention that the best way to get good at soldering is to practice. Take some wire from the box I showed you, cut some pieces about 15-20 cm long, and practice soldering the ends together. You can make a bracelet or chain out of them. After about 5 or 6 connections I’m sure you will be much better at soldering. This is not a homework assignment but a recommendation.

Homework

  •  Assignments due October 1
    • Reading (write blog posts for both separately):
    • Work in pairs: Make a musical instrument using tone AND one or more servo motor. You are now required to improve your hardware and programming skills:
      • In your program:
        • Pay attention to variable scope. Make all variables local unless you need them to be global. Generally, the only time variables have to be global are either pin numbers or state information that must remain (be remembered) between each loop() iterations. If you are unsure, ask me, or just try it and see what happens.
        • Use the keyword const in front of variables that won’t change, which is usually only pin numbers (e.g. const int speakerPin = 3)
        • Choose good names for your variables. If you have more than one switch, don’t use buttonPin and otherButtonPin. Choose something meaningful like redButton and blueButton or startButton and stopButton
        • Documentation in your program:
          • Start your program with a comment block that includes
            • A description of your concept and how the program implements it
            • A description of your sensors and actuators and where they are connected. This is a little tricky because it must agree with your schematic and your pin variable names. The idea here is to give the reader enough context to be able to read and under your program, but not to replace the comments you will have in your program
            • Your name and the name(s) of your team
            • Look at the Arduino built-in examples for possible ways to do this
          • Make relevant comments. It’s not so important to comment the obvious things such as pinMode() and turning on individual LEDs. If you have chosen good variable names that is entirely obvious. (I usually just say something like “set appropriate inputs and outputs” above all my pinMode() commands.) The important thing is to document how you are achieving your concept. For example, for the previous assignment, you migh read all the switches at once and then decide what LEDs to turn on. You could describe this in a block of comments at the beginning of your if() section, and then for each one a shorter comment saying something like “this is where I turn off the yellow LED, turn on the red LED, and blink the blue LED”, which will be easier to read than on each line.
          • Document your thought process. It’s like an algebra exercise: the correct answer is not as important as how you got there. For a medium complex program I sometimes write the comments first as I think through what I want to accomplish, before writing any code (actually better is to talk or think or sketch this out on paper before sitting down at a computer)
      • In your circuit:
        • Pay attention to your circuit layout. Make sure to use red and black wires exclusively for 5V and ground (GND) respectively.
        • On your schematic, you should note which color wire you use for other connections. This will help you rebuild your circuit quickly in case a wire comes out for some reason.
        • Draw your schematic before you start building your circuit, even though you might have to correct it later. It will help you better understand what you are doing, and it’s good practice.
        • On your schematic, label any sensors (e.g. switches, photoresistors, potentiometers, etc.) and actuators (e.g. LEDs, piezo buzzers (also called piezo speakers), servo motors) with the same name as the variable name in your program. This will very likely change as you develop and debug your project but will also help you keep track of what you are doing.
    • Document your musical instrument. You are now required to improve your documentation.
      • Working as a team, you only need to document your project on one of your blogs; on the other blog(s) you can point at your partner’s post. I leave it to you to figure out ways to share the work of documentation.
      • Your documentation must include
        • Overall concept
        • Program
        • Schematic
        • List of parts used
        • Problems remaining, or things you would do differently if you had more time
        • Video of the finished project
        • Picture of your friends amazed by what you can do
  • Musical instrument examples
    peter vogel https://vimeo.com/19780802
    field: jacks performance: https://vimeo.com/149364292
    giant instrument: https://vimeo.com/95706212
    nyc subway: https://www.youtube.com/watch?v=QjwxE_kI5wA
    interface example: https://www.youtube.com/watch?v=5B-0zGBwMx4
    me robospiel: https://vimeo.com/50586230
    servo drum machine: https://www.youtube.com/watch?v=EXgQfelajZc
    servo harp: https://www.youtube.com/watch?v=CtvZJb9VMkE
    block example: https://www.youtube.com/watch?v=0HobOt06gOI
    chordocentric: http://loisliow.netii.net/project2.html

Announcements for Monday, October 1

  1. Unfortunately, once again I will be in a faculty training session until 11am on Monday. As you will know from our syllabus my office hours are on Monday from 10:30 – 11:30. If you can not wait until 11am email me and I will leave early. I will be checking my email during the training session. The training is very close to the IM lab. This is the last such training session.
  2. Please have your musical instruments set up and ready to demonstrate by the beginning of class. This means you will have to arrive early in order to set them up, test them, and make any necessary repairs. At 4:05pm we will start showing the instruments. If you have a class before our class and can not arrive early please set up everything on your shelf as neatly as possible and make sure everything works in the morning before your other classes.

Week 5:  Midterm Project

October 1 (Monday 4:05 – 5:20) Class 9


  • Show your musical instrument
  • Discussion of readings
  • Introduce midterm project (due October 8)
  • Assignments
    • Start working on your midterm project

October 3 (Wednesday 2:40 – 5:20) Class 10


Announcements

  • No trip to Rain Room

Lecture and Demonstration

In class work on midterm project

Optional sessions

  • More debugging
  • Debugging with multimeter (good for finding unconnected connections)
  • More soldering
  • Construction techniques

The goal of the midterm project is to demonstrate and stretch your knowledge of the main concepts we’ve learned up to now:

  • Sensing something in the physical world
  • Controlling or activating something in the physical world
  • Designing an engaging behavior

Project requirements

  • Must incorporate at least one input, one output, and some algorithmic processing.
  • A higher degree of finish than homework assignments is required. Give more thought to the enclosure (if you have one) or platform or other method of presentation
  • Better wire management. Items with loose wires (such as Arduino, breadboard, or any sensors or actuators that are not mounted directly on the breadboard) must be secured reliably to the enclosure or platform. This will make it easier to carry and decrease the chances of things falling apart while being being moved.
  • Your project should work reliably and consistently
  • Your project does not need to be practical but should be whimsical, delightful, suprising, wonderful, or fun. (Practical is fine too if you prefer)

Here is a great example of this concept. although the mechanical mechanism in this example is actually very complicated

Week 6:  Motors and Transistors

October 8 (Monday 4:05 – 5:20) Class 11


Brief mention

  • Fritzing for schematics (not breadboard diagrams!)
  • Please change the subject line in email when you change the subjects of the mail. I use the subjects to decide what to read.
  • Precedence
    • 1+2/3
      • (1+2)/3
    • if ( a == 5 && b == 9 ) {
      • if ( (a == 5) && (b == 9) ) {
      • if ( ( ( a + 4 ) / b ) > sensorValue ) {
  • Documentation

Assignments due October 10

October 10 (Wednesday 2:40 – 5:20) Class 12


Show your midterm projects

Announcements

  • Lab cleanup – you have left a horrible mess!!
  • Learn illustrator from Linda, not lab monitor

Brief mention

Lecture and Demonstration

Assignments due October 11

  • Finish the documentation of your midterm project by 7am October 12

Assignments due October 15

Week 7:  Introduction to Processing

October 15 (Monday 4:05 – 5:20) Class 13


Discussion

Briefly mention

Do with me (time permitting)

  • Introduction to Processing

Assignments due October 17

October 17  (Wednesday 2:40 – 5:20) Class 14


Lecture and Demonstration

  • Review
    • Drawing shapes, changing canvas size
    • Using the cursor to draw, changing color
    • Motion
    • In the above example the speed was always the same (what variable controlled the speed? If we modify the speed, we can simulate a bouncing ball:
  • Using loops to draw many things
    • https://processing.org/reference/for.html
  • Introduction to functions
    • A way to group together code so that you can call it by name. Why is this useful?
      • Makes your code easier to read (as long as you chose a good name for your functions)
      • Allows you to use the same block of code multiple times without copying it (simply call it by name)
    • Example

      Or, with a function:

Assignments due October 27

  • Make a self portrait using code (i.e. not by painting with the cursor alone). Post the portrait on the blog and describe in words any unique tricks you used but do not post the code.
  • Reading (write blog post):
  • Reading (does not require blog post)
    • Read Daniel Shiffman’s Objects tutorial
    • Loops in Processing are almost exactly the same as in Arduino. Read the Processing loop reference
    • Read my Classes and Objects example

Announcements

  • Fall break
  • Legislative day on Saturday October 27

October 22-26 (Mon-Fri) – Fall break


Week 8: Computer Art

October 27 (Saturday – Legislative Day Wednesday schedule 2:40 – 5:20) Class 15

(Object Oriented Programming moved to here due to legistlative day on November 21)


  • Show your self portraits
  • Discuss Her Code Got Humans on the Moon
  • Very brief review of Classes and Objects
    • You have the ability to do stuff, such as wake up (presumably, you can also sleep), eat, or ride the subway. An object is just like you, a thing that has properties and can do stuff.
    • The properties of an object are variables, and the things an object can do are functions. Object-oriented programming is the marriage of all of the programming fundamentals: data and functionality.
    • Cookie Vs. cookie cutter
    • Function definitions
    • Class name, variables, constructor, methods
    • Constructor arguments
      • “In my experience, the use of constructor arguments to initialize object variables can be somewhat bewildering. Please do not blame yourself. “

In class activity

  • Do the Classes and Objects example
  • Here is the modified version we made in class that allowed us to change the color of the ball

Assignments due October 29

  • Create your own class, either by modifying modifying the example, or writing your own from scratch, that draws something. Write a short program that demonstrates the use of your class to draw multiple things.
  • Post the code to your portrait sketch

October 29 (Monday 4:05 – 5:20) Class 16


Show your work (stop by 4:30)

Watch Casey Reas’ Eyeo talk on chance operations (make blog post)

Examples

Assignments due October 31

  • Recreate an old computer art design from an issue of “Computer Graphics and Art” from here
    • Post your image and your code on your blog
  • Write a blog post about Casey Reas’ Eyeo talk

October 31 (Wednesday 2:40 – 5:20)  Class 17


Show your work

  • Show your recreation of an old computer art design
  • Share your code with your neighbor

Discussion

Lecture and do with me

  • Serial communication between Arduino and your laptop (using Processing)
    • Arduino to laptop
      • The simple way
        • Graph
        • Add a potentiometer
        • Modify the Processing sketch to use the values to move a circle around back and forth (X-axis)
        • Modify the Arduino sketch to send a second value, and modify the Processing sketch to use this second value to control the circle’s position on the Y-axis
      • Somewhat more reliable: Sending multiple values with handshaking
        • Serial Call and Response

We didn’t get to this in class but here are some other examples related to communication:

  • Processing to Arduino, one value:
    • Dimmer
  •  Multiple values from Arduino to Processing, this time sending all values at once separated by a comma, and then in Processing splitting the values at the comma:
    • VirtualColorMixer

If any of these examples give you Nan (Not a Number) errors, replace serialEvent() with this

Assignments due November 5

  • Read the following tutorials:
  • Game controller
    • Make a game of some sort on Processing using Arduino as a controller.
      • You must use at least two sensors.
      • The game and controller can be simple. For example, you don’t need to build an enclosure: a pair of potentiometers on a breadboard is fine.
      • The game on Processing can be pretty simple.
      • Describe your project on your blog but do not post any code yet. Do save the code (both Arduino and Processing) as that will be due on Wednesday.
      • Have your project set up and ready to share as soon as class begins on Monday.

Week 9: Object Oriented Programming

(Since Object Oriented Programming was done during the legislative day, this week we will do Transformations and Text)

November 5 (Monday 4:05 – 5:20) Class 18


Show your work

  • Show your game controller
  • Share with someone new
  • Questions for me

Announcements

  • Schedule of remaining weeks
  • Introduction to final project
  • Open Studios November 12
    • Join us at NYUAD’s Open Studios on November 12, 2018 for an interdisciplinary celebration of the arts featuring over 60 exhibitions, installations, screenings, performances, talks, demonstrations, and works-in-progress! Explore our spaces, eat great food, meet students and faculty working in Visual Arts, Interactive Media, Art History, Music, Film, Creative Writing, and Theater and get a behind-the-scenes look at our arts studios, workshops and labs. Join us in the Arts Center (C3) from 6 to 9 PM. Open to the public, so invite all your friends!
    • You may show your projects if you want but
      • They must be working well and be presentable (i.e. look good)
      • You must attend your project or it must be so clear that people will know exactly what to do without you

Time permitting: Introduction to text

  • When inserting Processing code into your blog, choose language “Java”

You can also print something that changes

Examples:

  • File -> Examples -> Basics -> Typography -> Words
  • Fonts
    • You can change fonts but note that not all fonts work on all computers.
    • In the example, the font is part of the sketch (on my computer, processing-3.4/modes/java/examples/Basics/Typography/Words/data).
    • You might find more fonts in processing-3.4/java/lib/fonts and in processing-3.4/lib/fonts
    • How did I know that Times would work? I just guessed, since it’s a pretty common font. Likewise Courier worked (for me at least).

Announcements

  • Open Studios November 12 6-9pm

Assignments due November 7

  • Upload the code for your game controller
  • Read Daniel Shiffman’s Strings and Drawing Text tutorial
  • (If you haven’t discovered it already, Daniel Shiffman’s Learning Processing website is a great resource, and his examples and video tutorials are excellent)
  • If you wish, you can also watch Daniel Shiffman’s Strings and Drawing Text video tutorial
  • Read J David Eisenberg’s 2D Transformation tutorial. This is very important so you might want to read it twice. Skip Case Study: Interactive Rotation.

November 7 (Wednesday 2:40 – 5:20) Class 19


Announcements

  • Open Studios Monday November 12 6-9pm. Who wants to show their midterm project?
  • Final show is Thursday December 13

Lecture and Demonstration

  • Transformations
    • Processing window works like a piece of graph paper. When you want to draw something, you specify its coordinates on the graph.
    • Transformations are simply moving the graph paper
    • This is useful when you are drawing a complex shape. Instead of adding an offset to each piece of the shape, just shift the paper, and draw the shape exactly as you did before
    • What’s even more cool, is that you can also rotate the graph paper! This is a little tricky for two reasons:
      • Rotations are in radians, not degrees
      • Rotation is around the top left corner of the graph paper, so first must translate to the top left corner of where we want to rotate around. Here is the example from the tutorial:
    • Note that this means that you can combine transformations
    • Fun stuff
    • Finally we also have scaling
    • And even animation. Important points:
      • Separate the code for drawing the left and right arms, and move the center of rotation for each arm to the origin, because you always rotate around the (0, 0) point.
      • Test in steps: Rather than attempt a full animation, we will just rotate the left side arm 135 degrees and the right side arm -45 degrees as a test.
    • Note: in Processing, the coordinate system is restored to its original state (origin at the upper left of the window, no rotation, and no scaling) every time that the draw() function is executed.

Announcements

  • Open Studios Monday November 12 6-9pm

Assignments due November 12

Week 10: Arrays and Text

(Since we did arrays and text already, we will introduce Images, Pixels, Image Processing, and Image Tracking this week

November 12 (Monday 4:05 – 5:20) Class 20


Discussion

Sound

  • Install library
    • Sketch -> Import Library -> Add Library
    • Search for Sound and install The Processing Foundation Sound Library
  • Examples -> Libraries -> Sound -> Oscillators -> SineWave
  • processingSoundLibraryTwoSines

  • Examples -> Libraries -> Sound -> Soundfile -> Sampler
  • Examples -> Libraries -> Sound -> Demos -> Keyboard
  • Examples -> Libraries -> Sound -> Effects -> Filter -> LPF

Announcements

  • Open Studios tonight

Assignments due November 12

  • Reading (these were assigned last week and are duplicated here for your convenience)
  • Think about final projects. Here is a reminder of what your final project should be:
    • Create a physically interactive system of your choice that relies on a multimedia computer for some sort of processing or data analysis.Your focus should be on careful and timely sensing of the relevant actions of the person or people that you’re designing this for, and on clear, prompt, and effective response. Any interactive system is going to involve systems of listening, thinking, and speaking from both parties. Whether it involves one cycle or many, the exchange should be engaging.You may work alone or in groups. Group projects of course will be expected to be more complex.A few examples:
      Musical Instruments: Performing music involves a sustained engagement between the performer and the instrument. The feedback from the instrument has to be immediate and clear in order for the performer to continue playing. The interface has to be flexible so that the musician can exercise her creativity in playing, but has to have some boundaries so that she knows what the instrument can do and what it can’t do.Game interfaces: Like musical instruments, they involve constant back-and-forth interaction and immediate response. They are often simpler than musical instruments. In fact, the standard game controller has gotten so standard that the action of many games is artificially adapted to the needs of the controller, not the physical expressiveness of the player. Pick a specific game and see if you can change that.Assistive devices: Whether it’s something as simple as a reaching device (for example pickle pickers) or something more complex, these devices are very demanding of clear, reliable response.Remote control systems: They require not only a clear interface, but must also return enough information on the remote system’s action to let you know that you’re doing the right thing. Whether it’s a remote controller for your home electrical devices or a Mars rover controller, the need for clarity and good feedback are equally essential to the person it’s made for.There are many, many other good ideas for this project. You are encouraged to research and look at examples and come up with ideas of your own. You can base your projects on examples that you found, but you must somehow make it your own.
    • Examples of projects that I think are within your reach
    • Many more here. Although some of them are quite complex you might use them for inspiration and simplify some aspects.
    • There are many other good approaches for this project. I encourage you to be creative. Discuss the specifics of yours with your me.

November 14 (Wednesday 2:40 – 5:20) Class 21


Lecture and do with me

  • File -> Examples -> Basics -> Image -> LoadDisplayImage
    • Size is optional, aspect ration need not be preserved
  • Can draw on top of image with the graphic skills you already have
  • Transformations work
  • tint() can be used before displaying with image() change image quality. It works with one, two, or three arguments (monochrome, monochrome+alpha, RGB)
  • The pixels array
  • You can work with any arbitrary region of the array e.g. in the pixels reference page
    or indeed with any arbitrary pixel, although in many cases it might be easier to use the set() function
  • References
  • Many great examples by Professor Sherwood:

Discuss final projects

  • Final project examples
  • How they work
  • Technical details
    • Block diagram (physical, electronics, program)

Time Permitting, introduce image capture and tracking

  • Image capture
    • Examples -> Libraries -> Video -> Capture -> GettingStartedCapture
      • Very simple single frame (repeatedly)
  • Brightness tracking
    • Examples -> Libraries -> Video -> Capture -> BrightnessTracking
      • Very simple concept, relatively easy to implement, very dependent on background etc. but can be made to work by cleverly constraining the environment
  • Color tracking

Assignments due Novermber 19

  • Read Digitize everything. Write a 2 paragraph blog post response to this article.
  • Read Golan Levin’s notes on computer Vision for Artists
  • Read or watch
  • Brainstorm ideas for your final project.
    • Your blog post should include the concept, technical requirements, equipment needs, and block diagrams of the physical construction, electronics, and program in as much detail as possible. Hand drawn sketches are fine. You may incorporate concepts that we have not yet covered in class if you are quite confident that you can accomplish them; otherwise, stick to what we’ve covered already. Your design should be fairly detailed.
    • Identify what additional components and parts you require
    • Identify the 5 most risky, frightening, or complicated parts of your project. In your blog post explain why you chose these aspects.

Week 11: Final Project: Introduction and Examples, and sound

November 19 (Monday 4:05 – 5:20) Class 22


Feedback on your final project concepts

Assignments due November 26

  • Build a prototype of the three most difficult parts of your final project

November 21 (Wednesday 2:40 – 5:20) – No classes: Prophet’s Birthday holiday


Week 12: Serial Communication

( We covered Serial Communication earlier due to Legistlative Day so now we focus on Final Project work)

November 26 (Monday 4:05 – 5:20) Class 23


 Final projects

  • Feedback on your prototyping work.

Assignments due November 28

  • In your blog:
    • Write a very brief summary of your project final project
    • Write a detailed technical plan for your final project. Include block diagrams or sketches of the physical construction, electronics, and program in as much detail as possible. Hand drawn sketches and schematics are fine, but they must be large enough for me to read the details.
    • Identify what additional components and parts you require, including those we discussed in class today
    • Identify the next 5 most risky, frightening, or complicated parts of your project.
  • Prototype the top two, and document this briefly on your blog

November 28 (Wednesday 2:40 – 5:20) Class 24

Discussion

Final projects

  • Individual work and feedback

Assignments due December 3

  • Build or program the next three most difficult, complicated, or frightening aspects of your final project. This does not need to be yet in its final form but you must demonstrate that these aspects can work as you anticipated
  • Write a blog post about what problems you ran in to and how you solved them. Identify any questions, uncertainties, or remaining problems

Week 13: Pixels and Computer Vision

December 3 (Monday 4:05 – 5:20) Class 25


Final projects

  • Wooden boxes will be one size, four sides. Scene shop will make for us. Who wants one?
    • Figure out the biggest box necessary to accomodate all these projects
  • Tell Andrew
  • Review showcase needs, in particular monitor sizes and project space (table, podium, floor space, etc.)
  • Logistics: Items that are checked out must be returned the evening of the show

Assignments due December 5

December 5 (Wednesday 2:40 – 5:20)  Class 26


  • Clean shelves. Let me know if you need more space
  • Game switches include LEDs. Use multimeter to find correct terminals or ask me for help
  • Ask me if you need help drilling holes for game switches
  • Next Monday
    • See assignment
    • Projects due next Wednesday
    • Evaluations (maybe Wednesday)

Assignments due December 10

  • Complete your final project
  • Do user testing with at least 3 people. Record video of them playing with your project as well as their feedback. Before class on Monday post this user testing documentation on the blog. Also address the testers’ feedback indicating what you’ll do or not do based on what they said and why.

Announcements Thursday December 6

  1. I need your project names and the name you wish to be known by. What I have is the list below. If you don’t get me your name in time you may not have a label.
  2. There is a stack of posters in the lab. Take some and hang them up wherever you can.
  3. An electronic version is here in case you want to email or print or whatever
  4. On Monday we will visit room 006 with Ume and/or Jack who will show us where our projects are to be installed. You then have until Wednesday at 2:40pm to install your project. I urge you to install your project early; you can continue testing and fine-tuning while it’s in 006. Your access card will unlock the door to the classroom anytime. Projects that are not ready on Wednesday at 2:40pm will receive a lower grade. If you don’t think you will be ready in time, start removing features now. In my experience, it is best to install your project immediately because the sense of urgency will then help you focus on what you can reasonably get done. If you keep working in the lab you run a very high risk of having a false sense of what you can get done in the remaining time. I speak from many years of experience.
  5. On Monday we will also do evaluations, unless you do them on your own. I believe evaluations will be available from 9am on Sunday December 9
  6. Questions? Need help? You know how to reach me.

Project names:

  • Manas Pant: Musical Sand
  • Malak Abdel-Ghaffar: So You Think You Can Play?
  • Vince Nguyen: The Bitble
  • Estelle Ocran: Shooting game
  • Aleksandra Medina: DJ Booth
  • Sunna Chang: Color Fall
  • Laura Stratulat: MyX – Augmented Reality
  • Tobbi Vu: Beethogogh
  • Sara Hussein Fakhry: One man band midi
  • Jung Soo Ha: Grab and Drop!
  • Pangna Sun: The Matrix: Are you the One?
  • Naeema Mohammed Sageer: 42
  • Netanya Danielle Keil: Brick Breaker 2.0
  • Jaron Oommen: Shoot!

Week 14: Final Projects

December 10 (Monday 4:05 – 5:20) Class 27


  • Documentation due on Sunday December 16 at 10pm
    • This is a technical class and I want technical documentation, just like we’ve talked about in class: schematics, code, explain how your project works and how you build it.
    • Detailed pictures of the inside as well as outside. Show your prototyping shield, your sensors, actuators, wiring, soldering, mounting, etc.
    • Take pictures of your project as you build it – don’t wait until it’s finished because then you can’t see the stuff underneath
  • Semester in review
  • Evaluations
  • Project locations in 006

Semester in review

  • Week 1: Introduction to Electricity
    – Inspiring movies
    – WordPress
    – Breadboards
    – Electricity
    – Make your own switch
  • Week 2: Introduction to Arduino Digital Input and Output
    – Introduction to Arduino
    – Blink
    – Button
    – Unexpected LED behavior with multiple buttons and LEDs
  • Week 3: Analog Input, Conditionals, and Introduction to (Resistive) Sensors
    – Photoresistor, potentiometer, temperature sensor
    – Serial.println
    – Unexpected LED behavior with analog sensor
  • Week 4: Arduino Analog Output
    – The Design of Everyday Things
    – Attractive things work better
    – analogWrite()
    – servo
    – tone
    – started to understand how delay() causes trouble
    – Musical Instruments!
  • Week 5: Midterm Project
    – Enclosures, Soldering, construction techniques
    – Debugging
    – Higher degree of finish
    – Reliability and consistentsy
  • Week 6: Motors and Transistors
    – Motors, high current, and transistors
    – Fritzing
  • Week 7: Introduction to Processing
    – Canvas, coordinate system, drawing basic shapes
    – motion
    – clearing canvas
    – mouse position and buttons
    – Functions
    – self portraits
  • Week 8: Computer Art
    – Classes and Objects
    – Casey Reas talk on the use of random numbers
    – Serial communication (Graph, Dimmer, SerialCallResponse)
    – Game controller
  • Week 9: Object Oriented Programming (Transformations and Text)
    – Fonts
    – Transformations: translate(), rotate(), scale(), pushmatrix(), popmatrix()
    – Waving robot controlled by Arduino
  • Week 10: Arrays and Text ( Images, Pixels, Image Processing, and Image Tracking)
    – sound
    – loadImage(), image(), loadPixels(), pixels[],
    – Brightness tracking, color tracking, motion tracking (frame differencing)
  • Week 11: Final Project
    – Much better construction methods
    – Better enclosures
    – Prototyping shield instead of solderless breadboard
    – Opportunity to practice your soldering
  • Weeks 12 – 15: Final Projects
    – Refine your project proposal
    – Refine your project
    – User testing

December 12 (Wednesday 2:40 – 5:20) Class 28


    • Final project due!
  • December 13

    • IM Show!

Current Assignment

Announcements and Assignments due Monday December 17 at 10am

  • Congratulations on a great showcase! I think the show was very well attended and your projects seemed to be very active.
  •  Documentation  (note that I’ve extended the deadline a little bit)
    • This is a technical class and I want technical documentation, just like we’ve talked about in class: schematics, code (with good comments, good variable names, proper indentation, etc.), explain how your project works and how you built it. I’m not going to list everything again here as we’ve discussed this many times; review the assignments above to remind yourself if you are unsure.
    • In addition to the writing I want detailed pictures of the inside as well as outside. Show your prototyping shield, your sensors, actuators, wiring, soldering, mounting, etc. If this would require breaking your project and you don’t want to do that email me and I’ll try to figur out an alternative with you.
  • Return to the lab anything you have checked out. You may keep the rest of your project if you wish. If no lab monitor is available please coordinate with me.
  • Anything you do not wish to keep (your project and/or any parts of your kits) may be left in the lab as examples of projects or for future student use.
  • A watch was found in the lab. If this is yours let me know.
  • We are missing a couple of laptops. If you have an IM laptop please email me and we can coordinate a time for return. Please do not just leave it in the lab.