Class 15: May 8th

Project Presentations

Let's take a look at everyone's projects:

  • You have the option to present work on your own computer or on the projector (via my laptop).
  • If you want to use the projector, transfer your project to my laptop. (I will turn on my AirDrop).

Documentation (due by the end of the day tomorrow)

Documentation of projects consists of:

  • 3 images of your project (mix of Arduino + Processing). Any image format is okay.
  • 1-2 paragraphs describing your project, saved as a .pdf.
  • Your project's source code folder. (Including any assets)
  • All of these files must be uploaded to your Project 2 folder (in the class Drive) by the end of the day on May 9th)

Homework and borrowed supplies(due by the end of the day tomorrow)

  • In order to pass this class, all homework must be uploaded by the end of the day tomorrow.
  • All sensors and motors borrowed from me are due back by tomorrow as well. Please place them in a bag labeled with your name and leave it in my mailbox on the 3rd floor of Brown (near water fountain)

Online course evaluations

  • Please take 5 minutes and fill out the the online course evaluation form for this class.

Summer Break!

Take a break!

Class 13: Apr. 24th

Good morning

  • Discuss Shaping Things reading
  • Sending multiple pieces of data between the Arduino and Processing
  • Discuss project plans
  • Work session

Serial Communication part 2 (Multiple Bytes)

  • A byte is composed of 8 digital bits. Each byte is capable of representing 256 patterns of bits (0-255).
  • Each piece of data is sent between Processing and the Arduino as a byte.
  • These bytes can represent other things such as characters which allow them to be function as text or larger numbers when interpreted.
  • Sending multiple pieces of data requires sending single and receiving bytes in an expected order.
  • Examples can be found in last week's uploaded code.

Discuss Reading 3: Shaping Things excerpts

"The best way to predict the future is to invent it."Alan Kay

  • Let's hear your thoughts on Shaping Things by Bruce Sterling

Project 2

  • Individual meetings to discuss project plans.
  • A few words on using code from others...
  • Work session (here or away from here)

Project 2: Prototyping

  • Begin developing your project.
  • I would suggest building things in pieces, starting with the most critical or challenging aspects.
  • At this point, the functionality, rather than the aesthetics, should be your main focus.
  • Next week, we'll take a look at everyone's progress.
  • Please email me if you have any trouble.

Class 12: Apr. 17th

Good morning

  • Take a look at homework
  • Arduino review. Any questions?
  • Arduino Introduction Part 4
  • Discuss Shaping Things reading

Arduino 4: Sensors & Advanced Serial

Let's spend some time looking at a few sensors and discussing...

  • What is a sensor?
  • Distance (ultrasonic PING sensor), proximity (PIR sensor), and angle/rotation (accelerometer)
  • Interested in sensing something else? Try looking at the sensors from one of these places... (link) (link)

Libraries for distance sensor and accelerometer

Adafruit's ADXL335 Calibration guide

The guide and example code can be found here.

Sample code

  • There are basic examples included with the sensor libraries which can be found by going to File > Examples.
  • Additional examples available here.

Research Project 2 (Due in three weeks)

  • Over the next three weeks, you will be working on a small personal project of your choice using Processing & the Arduino.
  • The project should challenge you both technically and conceptually and somehow connect to your interests or areas of research which exist outside of this class.
  • Feel free to explore the contributed libraries. I am happy to provide you with some support as long as you start the research.
  • Also, if you are interested in a particular sensor that we did not talk about in class, please let me know as soon as possible. If the IA department does not have one for you to borrow, you will be responsible for purchasing it in a timely manner.
  • We will discuss your plans in class next week, so be sure to have sketches or writing with you. The remainder of class will be a work session.
  • In two weeks, we will look at everyone's progress as a group. The remainder of class will be a work session.
  • Project presentations on May 8th.

Project 2: Ideation and sketching

  • Make a decision by next week.
  • Develop two possible plans for your research through sketches or writing.
  • Bring materials to class next week.

Class 11: Apr. 10th

Welcome back

  • Take a look at homework
  • Arduino review. Any questions?
  • Arduino Introduction Part 3

Mechanics / Poetics

Solace by Nicky Assmann

Ryota Kuwakubo's Device Art

The Tenth Sentiment by Ryota Kuwakubo

Ryota Kuwakubo discusses The Tenth Sentiment

moving objects | nº 934 - 942 by Pe Lang

moving objects | nº 692 - 803 by Pe Lang

positioning systems I - falling objects by Pe Lang

Pe Lang Interview

Temporary Printing Machine by rAndom International

Swarm Light by rAndom International

Rain Room by rAndom International

Rain Room documentation

Arduino 3: Extended output

This week, we'll look at some advanced forms of output such as relays and servo motors

  • Controlling AC power with a relay and digital output
  • Servo motors introduction (Servo library)
  • Serial communication "by hand" (one byte)

Controlling AC power with a relay

  • Safety first... AC electricity can kill you.
  • How do relays work?
  • Options: electromechanical relays vs. solid state relay
  • Another option: PowerSSR Tail

Sample code

  • There are some examples for the Servo and Serial libraries which come with the Arduino IDE that I'd recommend looking at.
  • Additional examples available here.

Homework 7: More output

Choose either the servo motor (which you can borrow) or the relay (which you can use in BR217) and create a Processing sketch to control it.

  • Please use only one output.
  • Use the Serial library to communicate, not Firmata, as demonstrated in class today.
  • Relay users: please bring your AC device to class. If this isn't possible, bring video documentation of your work.

Reading 3: Shaping Things excerpts (due next week)

  • A few chapters from Shaping Things by Bruce Sterling (link)
  • Everyone, have something to talk about.

Class 10: Apr. 3rd

Howdy!

  • Code for Students Repository added to sidebar
  • Take a look at homework
  • Arduino review. Any questions?
  • Arduino Introduction Part 2

Hybrids

BUTTONS by Sascha Pohflepp

PARTICLES by Daito Manabe & Motoi Ishibashi

Perpetual Storytelling Apparatus by Julius von Bismarck & Benjamin Maus

Waves to Waves to Waves by Chris Sugrue & Damian Stewart

Pulse Tank by Rafael Lozano-Hemmer

Pulse Room by Rafael Lozano-Hemmer

Arduino 2: Hello Again!

This week, we'll continue exploring input and output with the Arduino, but this time from the analog side of things.

  • Analog signals
  • Analog vs Digital on the Arduino
  • Working with the Serial Monitor
  • New components: potentiometers ("pots"), photocells, RGB LEDs
  • Firmata: analog input and output

Soldering introduction

  • Safety & Technique
  • We'll head down to the Brown Center and use the IA Dept. lab (BR217) to do some soldering.

Sample code

Code examples available here.

Homework 6: Analog Input/Digital Output

Create two sketches using the Arduino for Processing library + StandardFirmata

  • Sketch one: Analog input controlling something on-screen
  • Sketch two: Something on-screen controlling LED light(s) using analogWrite
  • We'll start class next week by taking a brief look at what everyone comes up with.

Reading 3: Shaping Things excerpts (due in 2 weeks)

  • A few chapters from Shaping Things by Bruce Sterling (link)
  • I'd like to hear your thoughts on Spimes and the future of Things in 2 weeks.

Class 9: Mar. 27th

Welcome back!

  • I hope you all had a great break!
  • Project 1 (code & documentation) is due. Please upload to your Project 1 folder in the Google Drive.

What is Arduino?

"Arduino is an open-source electronics prototyping platform based on flexible, easy-to-use hardware and software. It's intended for artists, designers, hobbyists and anyone interested in creating interactive objects or environments." description from arduino.cc

Interfacing the physical and the digital

My little piece of privacy by Niklas Roy

Face Visualizer test by Daito Manabe

Rewind by Pauline Saglio/ECAL

Knock Knock by Khalil Klouche

Color Chaser by Yuri Suzuki

Hertz by Jürg Lehni, Alex Rich & Raphael Hefti

Arduino 1: Hello World!

Today, we'll be getting our feet wet with the Arduino software and hardware– exploring digital input & output, blink LEDs, and responding to pushbuttons.

  • Basic things you should probably know about electricity and electronics
  • Install Arduino (link)
  • Take a tour of the editing interface (look familiar?)
  • Arduino vs. Processing programming
  • Uploading code to the Arduino
  • Creating circuits with a breadboard
  • Connecting components like resistors, pushbuttons, and LEDs
  • Digital signals (INPUT and OUTPUT)

Arduino and Processing

  • Working with StandardFirmata and the Arduino for Processing library (for Processing)
  • The StandardFirmata sketch is part of the Firmata examples bundled with the Arduino software
  • The Arduino for Processing library can be downloaded from within Processing 2+ through the Sketch > Import Library... > Add Library
  • Some limitations

Sample code

Code examples available here.

Homework 5: Digital Input/Digital Output

Create two sketches using the Arduino for Processing library + StandardFirmata

  • Sketch one: Pushbutton controlling something on-screen
  • Sketch two: Something on-screen controlling LED light(s)
  • We'll start class next week by taking a brief look at what everyone comes up with.

Class 8: 3/13

Project Presentations

Let's spend the morning taking a look at everyone's two week research projects:

  • Put your project in a folder with your name on it.
  • Transfer your project to my computer (I will turn on my AirDrop).
  • All work will be presented with the projector connected to my laptop.

Individual Meetings

I'm happy to continue discussing your projects further on a 1-to-1 basis during the remainder of class or at another time by appointment.

Ordering Arduino supplies

Here is what you will need to have when we return from Spring Break:

  • Arduino Leonardo (with Headers): Purchase from here, here, or here.
  • Micro USB cable: Purchase from here, here, or here.
  • Small breadboard* (400 contact points): Purchase from here or here.
  • *Discounted price for 2 breadboards (very handy!): here.
  • Small storage container with adjustable dividers (Like this one.)

Spring Break!

Take a break!

Order Arduino supplies (before Spring Break)

  • You will need the supplies listed above for our next class.
  • If you have not ordered these things yet, please order them immediately.

Documentation (after Spring Break)

Documentation of projects consists of:

  • 3 screen grabs of your project. (Any image format is okay.)
  • 1-2 paragraphs describing your project, saved as a .pdf.
  • Your project's source code. (Including any assets)
  • All of these files must be uploaded to your Project 1 folder (in the class Drive) by the start of class on Mar. 27th)

Class 7: 3/6

Independent Work Session

I will be in the IA office (BR312) for most of the day. Please send me an email if you need assistance.

Complete Research Project 1 (Due next week)

  • Projects are due at 9 a.m. on March 13th.

Class 6: 2/27

Good morning

  • Let's take a look at what everyone came up with last week.
  • Any questions?

Processing 5 (morning):

  • Custom functions continued/review
  • Introduction to Object Oriented Programming
  • Creating your own object class

Processing 5 (afternoon):

  • Introduction to Libraries
  • Using Minim to trigger sound samples.
  • Using Video to play a file or use a webcam.
  • Installing 3rd party libraries (controlP5)

Useful Things

  • Large list of "official" contributed libraries here.
  • Don't forget the examples! File > Examples... > Libraries (or Contributed Libraries)
  • 25 Life-saving tips for Processing here.

Sample code

Example code available here.

Research Project 1 (Due in two weeks)

  • Finally, the development to our research! Well, and maybe a little more research!
  • Over the next two weeks, I would like you to work on a small personal project of your choice using Processing.
  • Feel free to explore the contributed libraries. I am happy to provide you with some support as long as you start the research.
  • Next week will be a work session, and you are free to work from here or elsewhere. I will be available to meet in BR312(by appointment, preferably).
  • Project presentations on March 13th.

Complete Reading 2: More is More: Multiplicity and Generative Art by Mitchell Whitelaw

  • Available here.
  • We'll discuss this in class soon!

Class 5: 2/20

Snow Day?

  • Hello, hello?
  • Let's take a look at what everyone came up with last week.

Generative Art: Early Web

LIA (turux.at)

Website: http://www.liaworks.com/

Turux.at (1997-2001)

Recent work (liaworks.com

Filament Sculptures, 2014

Joshua Davis (praystation.com)

Praystation.com (v1 & v2)

Recent work (joshuadavis.com)

Oleander Vine, 2007

Video for Fall in Love by Phantogram, 2014.

See also... HYPE Framework (with Branden Hall)

Robert Hodgin (flight404.com, roberthodgin.com)

Magnetosphere (flight404)

Magnetosphere (flight404)

Magnetosphere visualizer (iTunes)

Recent work (roberthodgin.com)

Processing 4: Arrays & For Loops

  • Arrays
  • for loops
  • Iterating arrays (if vs. for)
  • BONUS! Custom functions
  • BONUS! Creating buttons (circular and rectangular)

Sample code

Example code available here.

Homework 4: Many things, many times

  • Use an array with a for loop to make something visual happen many times.
  • Try to create your own custom function or use a button in your sketch.

Reading 2: More is More: Multiplicity and Generative Art by Mitchell Whitelaw

  • Available here.
  • We'll discuss this in two weeks.

Class 3: 2/6

Welcome back!

  • Hello, hello!
  • How are things?
  • Let's take a look at what everyone came up with this week.

Building Unimaginable Shapes

"What kind of forms could we design if we wouldn't work with references any more? If we had no bias, if we had no preconceptions... What kind of forms could we design if we could free ourselves from our experience? If we could free ourselves from our education... What would these unseen forms look like?" from Michael Hansmeyer's TED talk on generative systems

Computer as Drawing Machine: Historical Generative Art

Pre-digital Computational Art: Ben Laposky's Oscillons

Oscillon series, early 1950s by Ben Laposky

A point of reference

Because it's easy to forget the state of computing in the 1960s

Ivan Sutherland's Sketchpad, 1961

Sutherland's Sketchpad was a precursor to all modern interactive computer graphics systems.

"3N" Algorists Group (Georg Nees, Frieder Nake, and A. Michael Noll)

Untitled, 1965-1968 and Schotter, 1968 by Georg Nees

Untitled (Micro Innovations), 1967 and Sculpture, 1968 by Georg Nees

NR. 2 ("Klee"), 1965 and Polygon Course No. 7, 1965 by Frieder Nake

Matrix Multiplication Series, 1967 by Frieder Nake

Ninety parallel sinusoids with linearly increasing period, 1964 and Composition with Lines (after Mondrian), 1964 by A. Michael Noll

Vera Molnar

Interruptions Series, 1968-9 by Vera Molnar

Hypertransformations, 1975 by Vera Molnar

Variations Sainte-Victoire, 1989 by Vera Molnar

Homage to Dürer, 1989 by Vera Molnar

Processing 3: Input/Output

  • Keyboard input.
  • String, char, and color data types
  • Improved conditional logic using else if
  • Importing svg graphics (sample svg)
  • Saving frames as image files
  • Stopping draw() and exiting
  • Exporting pdfs for Illustrator
  • Text and fonts
  • More keyboard and mouse input (event handler functions)
  • Custom functions

Sample code

Example code available here.

Discuss Reading 1: Medium

I'm interested in hearing everyone's thoughts on this text.

Homework 3: Input -> Output

  • Experiment with our systems of input (keyboard and mouse) to create a dynamic visual system capable of outputting an image file (png, tiff, or pdf)
  • Please look at the map() and constrain() functions in the Processing reference. Use one of them in your sketch this week.

Class 2: 1/30

Welcome back!

  • How was your week?
  • Any major issues?

"There is no such thing as a failed experiment, only experiments with unexpected outcomes." R. Buckminster Fuller

On a related note...

Great Paula Scher TED talk about the joys of being underqualified and seriousness vs. solemnity.

Homework presentations/Weekly research show & tell

  • Let's start the class by taking a look at what everyone came up with this week.
  • This won't be a formal presentation. Showing failures are really acceptable.
  • We'll be doing this kind of thing from week to week, so let's work on establishing a format which is beneficial to everyone.

Computer Art

Jim Campbell's Formula for Computer Art

Generative Systems: Historical

Generative art relies on systems (often random or autonomous processes) to produce unexpected results. Some early generative and rule-based systems in the visual arts include:

Jasper Johns' rules for making

"It's simple, you just take something and do something to it, and then do something else to it. Keep doing this, and pretty soon you've got something"

Three Flags, 1958 by Jasper Johns

Years later, someone else did something else to it... Enduring Freedom, 2008 by Ramsay Stirling

Yoko Ono's Instructional Fluxus work

Two instructional pieces by Yoko Ono.

John Cage's prepared piano (Late 1930s~)

A prepared piano has its sound altered by placing objects between a piano's strings and hammers. Cage is often credited with this discovery, though there have been a number of variations on this technique since the 18th century!

Jean Tinguely's Machines

Metamatics from the 1950s by Jean Tinguely

Homage to New York performance at MOMA, 1960 by Jean Tinguely

Sol Lewitt

From The Word(s) ‘Art’; Blue Lines To Four Corners, Green Lines To Four Sides, And Red Lines Between The Words, 1972 by Sol Lewitt

Wall Drawing 541, 2000 by Sol Lewitt

Wall Drawing 541 instructional documents

(Oh, and take a look at the person in the bottom left corner of this picture. Look familiar?)

Casey Reas' interpretations of Lewitt's Wall Drawings

In 2004, Whitney commissioned interpretations of Lewitt's wall drawings in code for the {Software} Structures online exhibition. Requires Java plugin to view online, but the code can still be run in Processing. More here

Drawing 85 (after Sol Lewitt), 2004 by Casey Reas

Processing 2: Movement + Rules

Today, we'll be making things move around in different ways, establishing our own conditional rules to control what is happening on screen, and working with variables as a means of storage.

  • What are variables?
  • Basic types of data (int, float, boolean).
  • Putting background() in setup() vs. draw()
  • Manipulating variables.
  • Linear movement.
  • Rotational movement.
  • Looping and bouncing movement.
  • Random movement.
  • Conditional if/else statements.
  • Basic mouse input.
  • Creating frame-based timers.

Sample code

Heavily commented code examples available here.

Homework

Complete Reading 1

  • Complete Medium from Abstracting Craft: The Practiced Digital Hand, by Malcolm McCullough.
  • I'd like to hear everyone's thoughts on the material, so please have something you want to share.

Homework 2: Robots! No! Bugs! No! Drawing Machines!

  • Construct a system in code which creates a drawing over time.
  • Look at Processing reference for information on sin() and cos(), which is used to create waves.
  • Also, have a look at lerpColor(), which is used to calculate colors between two defined colors at a specific increment.
  • Please make use of one of these functions in your work.

Class 1: 1/23

Welcome

  • Overview of this class
  • Review tentative schedule
  • Q & A

Purchases

You won't need these things until after Spring Break, but I would recommend purchasing them sooner, rather than later.

  • Arduino Leonardo (with headers)*
  • * If you have an older Arduino, you don't need to buy a Leonardo replacement.
  • Micro USB cable (if you have an Android phone you probably already have this)
  • Breadboard (small or large, but make sure it has power busses along sides)
  • Storage box

Amazon is a (surprisingly) great place to buy this stuff, particularly if you have a Prime account (which is free to students for a limited time!).

Other options:

  • MicroCenter in Parkville (low inventory)
  • Adafruit (in New York)
  • Sparkfun (in Colorado)

What is Processing?

"Processing is a programming language, development environment, and online community. Since 2001, Processing has promoted software literacy within the visual arts and visual literacy within technology. Initially created to serve as a software sketchbook and to teach computer programming fundamentals within a visual context, Processing evolved into a development tool for professionals. Today, there are tens of thousands of students, artists, designers, researchers, and hobbyists who use Processing for learning, prototyping, and production." description from processing.org

Creative Coding, Poetic Computation

"The main challenge is trying to create work that touches people at an emotional level, as opposed to them thinking about the technology or wondering how it was made. Making poems, not demos, is how we refer to it, i.e. making work that is like a poem, short yet dense, re-tellable, rhythmic, meaningful as opposed to a demo that just feels like technology for technology's sake." Zach Lieberman

Manual Input Sessions by tmema(Golan Levin/Zach Lieberman)

IQ font by Happiness Brussels/Zach Lieberman

The Eyewriter by FAT/Zach Lieberman

Code to Joy: School for Poetic Computation Opens

Other forms...

The Generative Gatsby: Jazzed Up Typography by Vladimir V. Kuchinov

unnamed soundsculpture by Onformative

illucia by Chris Novello

Processing 1: Hello World!

Today, we'll be getting our feet wet with the Processing environment and language– drawing shapes, adjusting their attributes, and working with images.

  • Install Processing (link)
  • Tour of the programming environment
  • Structure of a Processing sketch
  • Running a sketch
  • Syntax is the grammar of code
  • Setting window properties
  • Shape primitive functions
  • Adjusting attributes (color, fill, stroke)
  • Coordinates and rotation
  • Working with images
  • The sketchbook
  • Tinting and transparency
  • Using Processing's Reference

Sample code

Code examples available here.

Homework

Survey

  • Later this week, I'll send everyone a link to an entrance survey for the class. This will help me get to know a little more about your interests and abilities as we head into the semester.
  • Please take a few minutes to fill out the survey honestly.

Homework 1: Translation/Composition

  • Use Processing to create a composite image structured through code.
  • Let your own interests and curiosity define your aesthetic decisions.
  • In addition to the material introduced in class today, I would like you to research and utilize something from either the Curves or Vertex subheading in the Processing Reference
  • We'll start class next week by taking a brief look at what everyone comes up with.

Reading 1: Medium

  • Medium from Abstracting Craft: The Practiced Digital Hand, by Malcolm McCullough (link)
  • I'd like to hear your thoughts on the potential of code as creative medium in 2 weeks.