Course requirements:
A laptop equipped with Arduino IDE and Processing IDE.
Course goals:
Upon completion of this course students will be able to:
- Design and build electronic circuits utilizing electronics theory principles.
- Apply fundamental programming concepts to write algorithms for a microcontroller.
- Design physical interaction combining sensing, actuation and software.
- Employ digital design and fabrication techniques to create fully functional prototypes.
- Develop solutions through an iterative design, and prototyping process using screen based and physical interaction design principles.
- Think critically about emerging Human Computer Interaction technologies and propose user experiences that enhance and extend the way people work, communicate, and interact.
Course schedule:
Day 1 – 08/06/2020 – Principles of Interaction Design and Electronics
9:00 – 10:30
New interfaces and user experiences: This is an introductory session where students will start to think beyond the conventional forms of human computer interaction (i.e. the keyboard and mouse). We will study and discuss interactive works that develop interfaces considering the entire body, the body’s capacity for gesture, as well as the relationship between the body and its environment.
10:45 – 12:00
Electricity and Electronics: This session will introduce students with basic concepts of electronics and analog circuit design, construction, and debugging.
13:00 – 14:30
Intro to Microcontrollers: Arduino is a small inexpensive single-chip computer that can be embedded anywhere and sense and actuate in the physical world.This lecture will introduce the fundamentals of electronics and programming using the Arduino microcontroller platform in order to make creative applications.
14:30 – 16:00
Lab – Basic Electronics: In this lab, students will hook up simple circuits on a breadboard based on given circuit diagrams. Students will get hands-on experience and they will get familiarized schematics, components and their symbols.
Day 2 – 08/07/2020 – Intro to Physical Computing
9:00 – 10:30
Arduino: Digital, Analog, Arduino: The digital inputs and outputs on the Arduino are what allow us to connect sensors, actuators, and other integrated circuits to the Arduino. This lecture is an introduction to basic digital input and output on a microcontroller.
10:45 – 12:00
Intro to Programming: Iterations, Conditionals and Variables: Once the circuit has been created on the breadboard, you’ll need to upload a program to the Arduino. This program is a set of instructions that tells the board what functions it needs to perform. In this lecture we will learn basic instructions to start programming and creating interactive circuits.
13:00 – 14:30
Sensors and Actuators: Sensors convert physical energy into electrical energy, allowing the Arduino and other microcontrollers to read changes in the physical world. This lecture will show students different types of sensors. Students will understand how they work and what their output will be. We will connect a sensor to the Arduino and we will write a simple program to read the input and convert it into physical feedback.
14:30 – 16:00
Lab – Arduino Basics: Students will build and control different circuits by uploading the corresponding code to Arduino. Next, they will choose different type of sensors to try and attach to the Arduino. Finally, they will use the data from the sensor to drive an output (Servo-motor, LEDs, Buzzer, etc.) on and off.
Day 3 – 08/08/2020 – Making Things Move
9:00 – 10:30
Motors: Controlling Speed: Microcontrollers can only output a very small amount of current from their output pins. In this lecture students will learn how to control a high-current DC load such as a DC motor from a microcontroller. We will use transistors to control the flow of a high-current circuit from a low-current source in order to control speed.
10:45 – 12:00
DC and Stepper Motors: Controlling Direction: In this lecture we will continue learning how to to control a high-current DC load with Arduino. Additionally, students will learn how to control a DC motor’s direction and how to control a stepper motor using a DC Motor Driver.
13:00 – 14:30
Project Planning and Prototyping: In this lecture students will learn how a project gets produced and the project planning steps. From the analysis of the needs and requirements of users to a final idea. Finally, how to communicate possible solutions through sketches or prototypes which will help them to test and evaluate the results.
14:30 – 16:00
Lab – Drawing Machine: In this lab we will create a drawing machine by using an H-bridge to control stepper motors attached to mechanical arms. Students will individually assemble a circuit using a motor driver and the Arduino Stepper Library to control one stepper motor.
Next, they will combine parts with a partner to create a drawing machine.
Day 5 – 08/09/2020 – Designing Interactive Experiences
9:00 – 10:30
Interaction Design: Understanding how users and technology communicate with each other is fundamental for creating meaningful interactive experiences. In this lecture students will learn about interaction design principles, how to design new interactive experiences, and how possible solutions are tested with users to evaluate their design.
10:45 – 12:00
2D Design and Digital Fabrication: Visual communication and rapid prototyping through digital fabrication will be introduced in this lecture. Students will learn how to use a vector graphic software that can be used as a tool to communicate ideas clearly, through graphics and producing files for digital fabrication.
13:00 – 14:30
3D Design and Digital Fabrication: 3D modeling is used in a variety of fields such as medicine, films, games, VR and AR technology, advertising, industrial design, graphic design, art, and architecture. In this lecture students will learn how to use a 3D modelling software, how to use a 3d printer, and how to make their own 3D designs.
14:30 – 16:00
Lab – 3D Printing: During this lab, students will prepare files to 3D print an object according to the instructions learned during the lectures.
Day 6 – 08/10/2020 – Creative Coding
9:00 – 10:30
Processing Basics: Processing is a programming language, development environment, and online community. This lecture will cover the basics of computer programming using Processing.
10:45 – 12:00
Animation in Processing: The fundamentals of programming: variables, conditionals, iteration, functions and objects, will be explored through the use of the Processing programming language.
13:00 – 14:30
Mouse and Keyboard Interaction: What can users do with the computer inputs to directly interact with the interface? Processing has several environment variables and built-in functions that relate to the mouse and keyboard. Students will learn variables and functions to track the mouse and keyboard usage of the user and use this information as an input.
14:30 – 16:00
Lab – Processing Drawing and Animation: Students will create a sketch using an artist work as inspiration to emulate and draw in Processing. Using the functions covered in class, students will also create an animation with Processing, incorporate variables, functions, and loops.
Day 7- 08/12/2020 – Screen-based interactions
9:00 – 10:30
Sound in Processing: We will learn how to use the sound library which can play back and manipulate sound files, analyze audio for volume and frequency content, apply basic audio effects, and do basic sound synthesis.
10:45 – 12:00
Images, Video, and Camera in Processing: In this lecture students will learn image processing techniques and basic image transformations applications. Additionally, we will learn how to use the video library in Processing and how to get access to a webcam.
13:00 – 14:30
Advanced Programming: Arrays: Arrays can be created to hold any type of data, and each element can be individually assigned and read. In this lecture we will learn how to combine arrays with loops to create all sorts of information.
14:30 – 16:00
Lab – Sound: In this lab students will practice using the sound and video libraries to create a sound visualization in Processing using arrays to create kinetic patterns.
Day 08 – 08/13/2020 – Designing New Interactive Interfaces
9:00 – 10:15.
Functions and Parameters: A function, procedure or method is a sequence of code that performs a specific task. We will learn in this lecture about predefined and user-defined functions, how to create them, and how to make our code more reusable and modular.
10:45 – 12:00
Serial Communication: Connecting Arduino and Processing: In this lecture we will learn how to connect Processing and Arduino to send and read a single value through the serial port.
13:00 – 14:30
Serial Communication: Connecting Arduino and Processing : In this lecture we will learn how to connect Processing and Arduino to send and read multiple values through the serial port.
14:30 – 16:00
Lab: Serial Communication
In this lab students will perform exercises to send data from Arduino to Processing (and vice versa) using serial communication. Using physical components, they will recreate a drawing toy and they will make a musical instrument that uses computer inputs to trigger music.
Day 9 – 08/14/2020 – Advanced Programming
9:00 – 10:15.
Pixel Manipulation: Images : Pixels are the smallest unit of color within a 2D digital image. Processing has built-in functions for getting and setting the color value of a single pixel. In this lecture, we will learn how to use these functions to manipulate and read pixels.
10:45 – 11:45
Pixel Manipulation: Video and Camera: Continuing with the previous lecture, we will use the video library and apply the functions to manipulate images to do the same with video files and captured video from a webcam.
13:00 – 14:30
OOP: Object-oriented programming allows us to take all of the variables and functions out of the main program and store them inside an object. In this lecture we will learn programming techniques to make our code easier to develop, more reliable, and more maintainable.
14:30 – 16:00
Lab: Creating a Physical Media Controller
In this lab, students will work individually to create a Processing sketch that controls media (images or video) by manipulating that media’s attributes using a physical controller made with Arduino. Students will reflect on the previous lessons about and think about how they can incorporate interactivity and computation into this exercise.
Day 9 – 08/14/2020 – Interactive Artifact
9:00 – 10:15.
OOP and ArrayList: An ArrayList stores a variable number of objects. Similar to making an array of objects, but with an ArrayList, items can be easily added and removed. In this lecture, we will learn how to code interactive experiences, where the user adds or removes objects from an animation.
10:45 – 11:45
We will use this session and next one to put in practice what we have learned. Students will have this time to invent, design, and prototype an interactive artifact which could exist in the universe of a fiction story from a book or movie you know, or maybe in the future that they imagine.
13:00 – 14:30
Students will have time to prototype their interactive artifacts.
14:30 – 16:00
Students will present their work at the end of this lab with a performance. In this performance they will convey the purpose of the artifact without explaining it, but demonstrating how people interact with their device.