Interface Syllabus Fall 20 (from Fall 19)

Monday/Thursday 7:00-10:00 ONLINE

Sudhu Tewari loopstick@hotmail.com 

Save your sketches used for the assignments and the final to the Class Folders

Lectures and Schematics Folder
Due Dates and Grade Breakdown:
Interface Show Saturday December 14

Attendance: Miss 3 classes lose 1 grade point, miss 4 you will not pass.
Assignment | Due Date | Grade Percentage
Participation in class, labs, weekly homework | blog and punctuality | Ongoing | 10%

Artist Report | Ongoing | 5%

Generative Pixels | 10/1 | 10%

Random Motion Machine | 10/31 | 10%

Individual Meetings with Preliminary Proposal | 11/5 and 11/7  | 10%

Prototype 1 | 11/19 | 5%

Prototype 2 | 11/28 | 5%

Final Critique | 12/14 5:00 PM | %20

Interface Show | 12/14 7:00 to 9:30 | 30%

Week 1 
Thursday 9/3

Introduction to the Class, expectations, assignments and grading.

On-going:
Artist Presentations, the how, why, and when.

Some starter links:
Steve Wilson's Links 
Creators Project 
Processing Exhibition Gallery
Adafruit Projects Page


Movies: Examples of Student Work

Home work: Prepare a personal work presentation -- 5 minutes. If you have video, feel free to include, but not a requirement. Photos are a requirement. Give us a sense of who you are artistically (and who you want to be!) and what kind of stuff you want make. 

Thursday 9/5

5 minute personal work demonstrations  -- what of the stuff we talked about on day 1 are you interested in? 

Movies: A selection of work by practicing artists and designers

Week 2 
Tuesday 9/10 
 
Processing Intro 

Reference Videos: 
Code Tree

Class Sketches:
ShapesAndColors
The coordinate system and drawing primitive shapes were introduced as well as learning color functions.
LoopsAndFonts
setup() and draw() loops were introduced.
Basic syntax and punctuation was covered, such as semicolons, parenthesis, clear space, and parameters.
 
Additionally, how to load fonts and display them was covered.
Coordinate System and Drawing lines and Shapes
coordinateSystem
Static Sketches

Syntax:
() parentheses
; semicolon 
= (assign)

Environment:
size();

Shapes:
line();
rect();
ellipse();

Color:
background();
stroke();
fill();
noFill();
noStroke();

Attributes:
strokeWeight();

Dynamic Sketches

Debugging:
println();

Structure:
void setup()
void draw()


System Variables:
mouseX
mouseY

Variables:
int
float
String (note the String Variable is capitalized)

Fonts:
PFont
loadFont();
textFont();
text();


Thursday 9/12 

Processing
Class Sketches:
drawingEllipses
Mouse and previous mouse positions were used to draw ellipses.saveFrame() was introduced to produce screen grabs of sketches. 

drawingLines
Mouse and previous mouse positions were used to draw contiguous lines. if() was introduced to change color and line thickness. Listeners were covered as well.

BouncingBall
The class learned how to code a bouncing ball that careened off the edges of the window.

More System Variables:
pmouseX
pmouseY

Incrementing (x = x + speedX)

Calculations
dist():

Making Decisions (forking paths):
if() 
else if
== (equality)
|| (Logical OR)

Saving images of your sketch
saveFrame()


Week 3
Tuesday  9/17
Processing
Class Sketches:
if statements
Review: Three ellipses in different strokes

compounded if statements
Compare multiple expressions using && or ||

rando_F19
How mills() - pMillis
can produce random numbers at random intervals.

Functions:

Color:
colorMode(HSB);

Decisions: 
if
else if
else

Logical AND and OR
&& or ||

millis()
Use mills() to create "delays" or intervals

Random
random()
 
Thursday 9/19
Artist Presentations
Johannes
Clara

Processing
Class Sketches:
HSB_F19
Further explorations into HSB

imageSequencer_F19
load and display images.
And how to create a sequence of images

lerping_F19
How to "interpolate" or create movement between two coordinates. random() and millis() are also in the sketch.

Functions:

Image:
PImage
loadImage()
image()

Calculation:
lerp()

Interpolate Example
Week 4
Tuesday 9/24

Artist Presentations 
 Anna
 Alex
 Michelle

Processing 
Work day for Generative Pixels Project

Thursday 9/26
Artist Presentations
Leen
Destinee
Cameron

Class Sketches
Noise_F19
How to use noise() to generate organic motion
sinCos_F19
The wave like patterns that sin() and cos() produce were explored
simpleCircle_F19
How to draw a circle with sin() and cos()
noiseyCircle_F19
Multiply sin() and cos() with noise() to draw random yet constrained patterns
map_F19
Demo of the map() function

Functions: 
noise();
sin();
cos();
map();

 

Week 5
Tuesday 10/1
Artist Presentations
Rachel
Jessica
Cuda

GENERATIVE PIXELS CRITIQUE 


Thursday 10/3

Artist Presentations 
 Sunny
 Joel
 Josh
Intro to Arduino: Tutorial

Arduino tour

Hello World
Blink
Built in Examples

HOMEWORK: Create a sketch and circuit that blinks 2-3 LEDs in an "interesting" way. hint: use math or random()
Week 6 
Tuesday 10/8                     

Artist Presentations
Mary
Ty
Arduino:
continue on in the Arduino Tutorial

Sensors 
Wait! first, let’s review Ohm's Law!! 

Photocell (aka LDR, CDS) 
LDR circuit and code on TinkerCad 

Wait! We need to know about Voltage Dividers first... 

More Sensors 
Adafruit Sensors guide  
IR retro-reflective distance sensor  
Sharp IR sensor 
Ultrasonic distance sensor 
FSR (force-sensitive resistor) 
PIR (passive infrared) sensor 

RGB LEDs 
Video Tutorial: RGB LED Color Mixing with Arduino in TinkerCad 
RGB LED Color Mixing in TinkerCad with Blocks 
RGB LED circuit on TinkerCad

Arduino Reference - 

Fade and Fading - what you can do to 1 LED you can do to 3! 

Color Crossfader - yikes, Math and Code!!

Thursday 10/10 

Motors
Meet the Motors
Sparkfun Motor Guide 

Motorshield
Adafruit Motor Shield V2 for Arduino

pause for a soldering demo - solder headers to Motor Shields if necessary

Libraries (many sensors (and motors) use dedicated libraries)
How to Install Libraries

Homework: Experiment with RGB LEDS and motors w/ MotorShields! Make interesting motion happen!!

Week 7 
Tuesday 10/15

Artist Presentations

Arduino: Blink without Delay 
In the Arduino IDE, open: examples/02.Digital/BlinkWithoutDelay 
Blink Without Delay 

BWD circuit and code on TinkerCad

Video explanation of Blink Without Delay 

An alternative to BWD: Interrupts

Cool sensors to review if we have time:
Adafruit “Time of Flight” distance sensor

Capacitive Sensing - capSense library

Thursday 10/17 

Tom Slick

Arduino: 
random, fade, more motor fun, shaft coupling work day for Random Motion Machine Project (RMM), due on October 31! 

Yes, random motion machines can be animatronic Halloween props - build one! Thrill our class and amaze your trick or treaters.
Week 8 
Tuesday 10/22

Artist Presentations 
INTERFACE: Processing to Arduino to Processing


Thursday 10/24 

Artist Presentations

Work day for Random Motion Machine Project


Week 9 
Tuesday  10/29

Work day for Random Motion Machine Project


Thursday 10/31

RANDOM MOTION MACHINE CRITIQUE

Week 10
Tuesday 11/5 

Individual Meetings
Final Project Proposal Guidelines.

4:00 - Destinee
4:20 - Cameron
4:40 - Johannes
5:00 - Ty
5:20 - break
5:40 - Clara
6:00 - Mary
6:20 - Michelle
6:40 - Josh

Thursday 11/7

Individual Meetings
4:00 - Alex
4:20 - Joel
4:40 - Jessica
5:00 - Rachael
5:20 - break
5:40 - Anna
6:00 - Koda
6:20 - Leen
6:40 - Sunny
Week 11 
Tuesday 11/12

Lab


Thursday 11/14

Lab
Week 12 
Tuesday 11/19

1st Prototyping Assignment


Thursday 11/21

Lab

Week 13
Tuesday 11/26
 
Lab 

Thursday 11/28

2nd Prototyping Assignment due

Week 14 
Tuesday 12/3

Lab 

Thursday 12/5

Lab

Week 15 
Tuesday 12/10
 
Lab

Thursday 12/12
 
Lab/Install

Saturday 12/14

Final Critique at 3:00PM
INTERFACE SHOW!!! 7:00PM to 9:30PM
How this syllabus works:
This column contains the topics we intend to cover in this class. When the topic is presented it will be moved over to the left column to the date it was covered. This system gives us the flexibility to address your interests.

Topics To Be Covered:

Concepts:
Chance and Emergence
Patterns and Chaos
Garden of Forking Paths
On Screen / Off Screen


Programming: Processing Syntax 
Variables Punctuation 
Functions 
Color 
Drawing (with the mouse) 
Conditions 
Iteration (Loops)  
Nesting 
Drawing (Procedural) 
Timing Strategies  
Counters 
Millis based delays 
Interpolation
Communication Events or Listeners  
Using Arrays to store numbers, strings, images etc 
Complex Data Types Text and Fonts Images 

Libraries Serial Sound (Mimin Library) Video Installing 
3rd Party Libraries 
Kinect 
Leap motion 
Electronics:
Arduino
Ohm's Law
Voltage
Current
Resistance
Power
AC 
DC
LEDS
Resistors
Sensors 
Alex Benz formula
Analog and Digital
Transisters/Mosfets
Actuators
Motors
DC Moters
Hobby Servos
Steppers
Solenoids
Pneumatics

Arduino Shields

 Advanced:
 Objects/Classes
 Particles
 Data Visualization

 CAD design with Fusion 360