Shortcut to today's assignment
Shortcut to today's lecture
Shortcut to student presentations
Shortcut to student Github repositories
- Scene Shop: Ramadan hours: 9am - 2pm M-R, 9am-noon F
- Scene Shop: non-Ramadan hours: 9am - 5pm
- Your ID card provides access to the IM lab 8am-9pm weekdays, and 9am-5pm on weekends.
- IM lab staffed hours (may change towards end of semester):
- 11am - 10pm Monday - Thursday
- 2:30 - 6pm on Fridays
- noon - 6pm on weekends
- Dustin's email: dustinfoster@nyu.edu
- Tony's email: anb6202@nyu.edu
- IM lab User guide for lab equipment and materials (in progress)
-
Course Information
- Course Code and Number: IM-UH 2113
- Course Title: Machine Lab
- Credit Hours: 4
- This is a 14 week course consisting of fourteen 75 minute meetings and fourteen 150 minute meetings
- Instructional time requirements are met by the scheduled meeting times
- Class location: C3-029 (IM Lab in the Art Center)
- Prerequisites: IM-UH 1010 or INTM-SHU 101 Interaction Lab or IMNY-UT 101 Creative Computing or DM-UY 1133 Creative Coding
-
This course counts toward the following NYUAD degree requirements:
- Majors > Interactive Media
- Majors > Interactive Media > Physical Computing
- Minors > Interactive Media
-
Faculty Details
- Professor: Michael Shiloh mshiloh@nyu.edu
- Office hours: Schedule an appointment here
- Office phone number: 02-628-5185
-
Session: Spring 2026
-
Meeting times:
- 8:30 - 11:10 Tuesday
- 9:55 - 11:10 Thursday
-
Instructional time requirements are met by the scheduled meeting times
Course website: https://github.com/michaelshiloh/MachineLab
- This is subject to change
- Syllabus
- About this class
- What is this class about
- Making things
- Making things move
- Arduino Review
- Homework
The syllabus is here
- Cellphone and laptop use, except when part of a class activity, is prohibited
- The first inappropriate use of cellphone or laptop will count as arriving late for that day; the second time will count as being absent for that day
- You are required to take notes on paper. I will gather your notebooks periodically and they will be graded.
- I'm going to change the paper/presentation assignments. I'm not happy with how they have been going. I haven't yet figured out what the new method will be.
This class is fast-paced, difficult, and time consuming. You will have to learn many skills that are new to you, and you will spend many, many hours working on your assignments.
You are used to estimating how long an assignment or project will take based on your past experiences. Physical computing involves skills which are probably new to most of you: mechanics, electronics, and physical construction. When the assignments require skill with which you have little experience, your time estimates can be very, very, very wrong.
I can almost guarantee that you will spend much more time on this class than you think. Don't take this class if you aren't prepared to work hard and invest the necessary amount of time.
On the other hand, I am here for you. I want to see you succeed. I like seeing your projects succeed. You will find me very accessible and helpful. I am online at all hours and can often solve problem via Discord. I'm also very available in person and spend much time outside of class in the IM lab or in my office. You can approach me at any time, but you must take the initiative and reach out to me, and you must not wait until the last minute. You must try seriously to solve your problems, and if you can't solve them, you must reach out to me while there is still time for me to help you.
In return I have expectations of you: I expect you to come to class on time and to be fully present. I expect you to be fully engaged in the course, and to fully participate in and contribute to class discussion. I expect you to work hard, very hard, to try to solve problems on your own, and to ask me for help when you run into trouble.
I am deeply committed to teaching. I expect you to be fully engaged in this class. If you are not interested in this material and are taking this class strictly to fulfill a requirement, I urge you to drop this class and allow someone who is interested take your place.
I do not tolerate the use of cellphones, earphones, watches, or laptops in class for anything other than what we're actively working on. If you need any exceptions, talk to me.
I understand that there is more going on in your lives than this class. If there is stuff going on that is making it difficult to get your work done, contact me and we'll work something out. Email is appropriate for these discussions.
This course requires training on different tools. Training is offered only at certain times, and the training staff does not have the resources to offer training at other times. You must attend the training sessions unless there is some truly exceptional reason not to do so.
You may require separate training for your particular project (e.g. sewing or welding). You will be responsible for reaching out to the relevant shop to arrange such training.
You are required to use Discord to ask all questions related to class, whether technical, logistic, or otherwise. Reserve email for personal matters.
We will be building things. We will use lots of tools and materials. It is your responsibility to clean up after yourselves, to return tools and materials to their places, and to put trash and recycling in the appropriate bins.
Some of the tools and materials are for the exclusive use of our class; others are generic tools and materials used by other classes. You must return things to their proper place. If you don't know where something belongs, ask me or one of the other professors or instructors or lab assistants. If none are available put it on my shelf. Never put items in some random place to avoid dealing with them.
In summary:
- Always clean up after yourselves, and always clean up a little more. Leave the space cleaner than you found it. Failure to do so will result in a lower grade.
- Return tools and unused materials to their proper places
- Discard trash and recycling in the proper bins
- Keep our tools and materials in our space
- If you see anyone outside of our class using our tools, materials, or space, please get their names and inform me.
Use your cellphone or laptop in class. Sit in the back, don't ask questions, and don't participate in discussions. Don't clean up after yourself. Leave tip-out bins open, and spill out contents. Don't put tools and parts back where they belong. Use jumper wires. Make poor connections. Leave lots of exposed wire for short circuits. Come to class late and return late from breaks.
Raise your hand in class. Interrupt me. Ask questions. Have a different point of view. Make connections to other projects, artists, things you have read, conversations you have had. Be critical. Cite your sources. Do research. When debugging, don't try things at random: think logically about what should be happening, what is happening, and why there is a difference. Learn how to use test equipment and print statements to understand what is going on. Practice soldering and don't be satisfied with poor soldering. Ask questions. Reach out to me for help. Sit in the front and pay attention. Leave your phone in your bag when you go to the bathroom.
- Machines: building them, using them
- Mechanics (statics and dynamics)
- Design
- Creativity
- History and critique of technology
Inspiring examples
- Astronomical clock Prague
- Clock with Dancing Figures, Spinet and Organ, 1625
- Männleinlaufen, Church of Our Lady, Nuremberg
- Elephant Automaton Clock, 1600–1625
- 1001 Inventions
- Famous Mechanical Clocks in Europe
- Anker Clock
- The Guinness Festival Clock series
- Tim Hunkin
- Wikipedia entry on Automaton Clocks
Demo: Working with hot glue and cardboard
- Braces
- T profile
- Box
- blink
- Servo motor
Demo: Working with servo motors
In-class exercise: Rotate crane by servo motor
All homework will be given in the homework file. It is your responsibility to know what's due. I will send a message on Discord and Brightspace whenever I make a change.
- Upload the Blink example
- Change the parameter in delay()
- Upload again and verify that the LED blinks at the new rate
Discuss
- What's going on here?
- What role does Arduino play?
- LEDs and other actuators
- What is the opposite of an actuator?
- Reading from a sensor vs. writing to an actuator
- Soldering
- Homework
- Multitasking with Arduino
Take a look at the soldering homework
- Build and code the multitasking exercise
- Add a potentiometer to control something (LED blink rate, servo range, whatever)
- Announcements
- Homework
- Debugging
- Last year's project
- Theme
Thanks to the wonderful work of the ARC and for funding from the division, we now have peer tutors for IM available in the IM lab. Please find the IM Drop-in schedule here.
For now, students can just walk in, and tutors will record their details. Students' sign-in will be more automated once the NYU Connect setup is completed for IM tutoring.
problems?
What are some techniques that you use?
Digital Multimeter (DMM) demonstration
- Measure voltage at servo motor and LED
- Measure voltage at 5V, Vin, and 3.3V
- Measure voltage of potentiometer at its input pin
- Measure voltage of one of the outputs controlling an LED
- How can we check if a pin is working as an output?
Decision made! Theme: video games
- Last week's homework feedback
- Assess project
- Assess modules
- Project rough drafts
- Rough plan for rest of semester
- schematics
- organize your github
- For each module, try to identify what's working and what isn't
- Describe how you might start debugging each non-working issue
- What is making it harder to debug? What would make it easier?
- For some features, it might be hard to know whether it's malfunctioning or perhaps working as intended, but is not a good design. Document any of these which you identify.
- Is everything working the way it should?
- How might you debug?
- How might you make it easier?
- Sketch each mechanism
- Sketch the schematic
- Note construction methods
- Coalesce
- Teams
- Design a mechanism
- Share and critique
- Start building working prototype
- Week 1: Introduction, Arduino review, construction
- Week 2: Soldering, multitasking, debugging
- Week 3: Assess last year's project, motors, start first component prototype
- Week 4: Tool training, platform, refine prototype
- Week 5: NeoPixels, finish first component
- Week 6: Music Maker Shield, prototype second component
- Week 7: Midterm: finish two components with lights and sound
- Week 8: Remaining components prototyped
- Week 9: First integration test; finish all components
- Week 10: Fusion 360 for laser cutting and 3D printing
- Week 11: Decorations
- Week 13: Paint frame
- Week 12: Additional features, final cleanup
- Week 14: Showcase
- Hours
- Dustin 10-10:20
- Motors
- Prototype your first mechanism
To control a large motor, we need an intermediate device called a motor driver. Our particular motor driver is based on the L298. To find out how we use it, we simply Google "L298 Arduino". Here is the first thing that showed up for me. The point here is that many of the components we use are quite generic and there is a lot of information on using components with Arduino, but we can not follow the instructions blindly. We do need to understand how it works.
Warning there is an error in the schematic under Arduino and L298N Motor Driver. Can you spot the problem? Hint: Look at the schematic under Arduino Robot Car Control using L298N Motor Driver and see if you can find the added connection that was missing.
Before you look at the code here, think about the circuit.
ENneeds to beHIGHin order to turn on the motor driver- IN1 and IN2 need to be opposite (if one is
HIGHthen the other should beLOW) in order to make the motor turn - Can you think of how to do this? (Hint: you can do this with 4 lines of code
in
setup()function and an emptyloop()function)
Sample code, assuming you used these pins:
void setup() {
// Pins 2 and 3 are connected to In1 and In2 respectively
// of the L298 motor driver
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
}
void loop() {
// make the motor turn in one direction
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
delay(5000); // let it turn for 5 seconds
// now reverse direction
digitalWrite(2, HIGH);
digitalWrite(3, LOW);
delay(5000);
}
Tool training!
- Administration
- Homework feedback
- Review sketches and mechanisms
- Groups
- I have made the following rule change in the syllabus for this class:
- You will be considered late if you arrive in class more than five minutes after the scheduled class start time
- Each team will create a poster which will be attached to the large frame, which will describe your project, your intentions, and most importantly, your process. It will include pictures and words. We will talk more about this later in the semester, but I wanted to tell you now so that you can prepare for that by documenting your process well, meaning good photographs and good descriptions in your journal.
- Wires into screw terminal
- What did you think would be difficult but turned out to be simple?
- What did you think would be simple but turned out to be difficult?
- Can we come up with some general principles?
Team Flappy Bird
- Ahmad
- Ziya
- Flevin
Team Need for Speed
- Ali
- Mustafa
- Ghadir
Team Cyberpunk 2077
- Yumi
- Kamalika
- David
Team Minecraft
- Sara
- Rashed
- Stefania
- Share homework from the 4 team
- Different motor types
- Mechanism examples
- Sensors
- Using stepper motors
- Midterm project
- Schedule
- Brackets for motors
Light based
- IR Beam Break sensor
- IR Slotted Optical Sensor this or this
- IR reflected beam sensor
Other sensors
- How stepper motors work also has pictures of many different types and sizes
- Scroll down to Stepper Motor Driving Techniques
- Why we need to accelerate stepper motors if we want to turn fast
- AccelSTepper library to the rescue!
- AccelSTepper missing manual
- Due 2 March which is two weeks away but Ramadan
- Ramadan
- Homework
- Drill Press
- Tour of Scene Shop, pointing out available tools and materials
- Scene Shop hours during Ramadan
- Working with Aluminium part 1
- Intentional Design and visit from Erin Collins
- Changing your design to use available materials
- Measuring and marking
- Machinist's square
- Scribe
- Center punch
- Cutting and drilling
- Working with Aluminium part 2
- Administration
- Working with Rotating Parts
- Using the Servo Shield
- Rules for Working with Electronics
- Nuts and bolts
- Nyloc nuts
- Metal servo hubs
- Transferring holes that have to line up
- Fine pen
- One hole at a time
- Drilling oversize and wide washer
- Eating and drinking in the lab
- Arriving late
- Changing your design to use available materials
- Homework
- do it
- document it
- use due date of the assignment
- Shafts
- Hubs
- Coupling to motors
- Addressing misalignment
- What is a shield
- Power
- Feed through headers
- Servo motor extension wires
- Always use the correct color wire
- Never use jumper wires. They are too thin and will tear easily
- Never use solid core wire except going from point to point on the same board.
- Don't solder wires directly to the Arduino or any shield. Instead, solder header pins to a Prototyping Shield, and solder a header socket to your wires (which are stranded, right?) which can then be plugged onto the header pins on the prototyping shield.
- Always use stacking headers in all your shields
- Use enough heat shrink tubing to completely cover any joints. If it shrinks and leaves a gap, put another piece over that. Heat shrink tubing is cheap, fixing a short circuit is not.
- I warned you at the beginning of the semester that this class will require a lot of work and that you would have to put in a lot of time outside of class time.
- Checkin
- Project Status
- What is Machine Art?
Machine Art lecture from Understanding Interactive Media
- Checkin
- Plans
- Machine Resources
- Rest of semester online
- Who is on campus? Who plans to leave?
- What we will do
- Plan
- Demo
- Machine Resources
As a creative technologist, whether artist or engineer, you will always work with some limitations whether due to cost, availability, or skills. Your success will depend on your ability to design a project that can achieve your goals within these limitations.
This ability is developed by practice. As you work with different technologies and materials, you develop a better intuition about how difficult they are to use and how easily they can be modified to fit a particular need.
When limitations seem insurmountable, it is wise to modify your design to avoid this particular limitation.
It may not be a surprise to you that this is an iterative process:
- Assess your resources: For physical tools and materials consider what you already have, what you can borrow from family or friends, what you can buy locally, what you can order
- Design your project so that can be built with these parts and tools and capabilities
- Acquire the necessary tools and materials, and try to create your project
- When you run into problems, think about how to work around them, either by changing the materials or the design of the project
- Acquire the new tools or materials, if necessary
- Try again
- Repeat as necessary
The important thing to note here is that your project will take multiple iterations! This is not to be avoided because this is where the learning happens! You will not develop this skill if you don't run into problems, figure out a way around the problem, and they try again. Minimizing iterations gives you fewer chances to learn this important problem solving skill.
Success is measured not by how few iterations you make, but by how your skills develop as you identify problems, come up with solutions, modify your design, and make progress.
What do you think you can do to increase your successes?
What are factors outside of your control?
What are factors you can control?
What experiences have you had that are similar to this process?
You will build a number of machines of increasing complexity using an Intro to IM kit along and common household objects.
In class, I will demonstrate a variety of techniques. My resources are limited as well, and you will see me run into problems. You will then see me try to figure out how to work around those problems, either by using different materials or techniques, or by changing the design.
The first machine will be a simple hand crank automata using cams, which you will then automate with a motor. This will be a warm up exercise.
You are encouraged to use whatever materials you find around you. These can be things you buy or things you find. You can use broken toys, cardboard boxes, bis of wood, etc.
You are encourage to be whimsical and imaginative.
-
Hand crank automata
-
Elevator
- How to Design and Make Automata
- How To Design and Make Simple Automata
- Machinations-Mechanisms
- Basic Mechanisms
- Making Things Move
- Machine Art in the Twentieth Century, chapter 1
- Machine Art in the Twentieth Century, chapter 2
- The_Machine_as_Art_in_the_20th_Century_An_Introduction
- Funding update
- Machine Art
- What is it
- Examples
- Definition
- Breakout rooms
