Hi,
I’m trying to look at code/photos/etc posted to google docs but am getting refused, even after I log in with my andrew id. Please test your links by logging out of google/andrew and following the links in your posts.
thx
–jet
Introduction to Physical Computing
60-223 Fall 2017
Hi,
I’m trying to look at code/photos/etc posted to google docs but am getting refused, even after I log in with my andrew id. Please test your links by logging out of google/andrew and following the links in your posts.
thx
–jet
Oops. This didn’t make it in to my notes for class last Thursday. One option for posting code to the blog is to use the “CodeColorer” plugin. For your Arduino sketches switch to the Text tab and use the CodeColoer wrapper with lang=”C”
State machines are graphs showing the relationships between various states of a system. A light switch has a simple state machine of “on” and “off”; the transition happens by using the switch.
Here’s a state machine for a student’s MTI project from a few years ago. It contains enough detailed information that I was able to OK the final project concept over email: MTI state machine.
Look around your environment for state machines and ask yourself, “How does this work? How would I implement this?”
In class we looked at a simple state machine in my game that prevents cheating by keeping track of whether or not a button has been pressed and released. Each player’s button has a state that is set to “YES” when the digitalRead() returns HIGH and set to “NO” when the digitalRead() returns LOW.
The first assignment is a way for you to show that you understand the basics of digital and analog input and output and how to write a basic Arduino sketch. It’s also an introduction to coming up with an idea, planning it, implementing it, then documenting your project. There’s no content requirement, we’re saving that for later classes after everyone is good with the fundamentals of physical computing.
First, come up with an idea and a plan. “Use three switches to turn on three different LEDs and a photoresistor to change the intensity of a fourth LED.” Based on that idea, create a circuit diagram, draw it on paper or use Fritzing. Now build the circuit, write the code, and make it happen!
The requirements for this assignment are to take digital and analog input and create outputs for LEDs or the digital vibrators we handed out today in class. You’re free to use other outputs or make your own switches, there’s also the collection of components in A10.
Document your entire process, from your first idea, the circuits that didn’t work, the changes you made, and what was the final result. In your documentation, ask yourself what you learned, what went wrong, what you’d do differently if you did it a second time.
To submit your project, post a reply with the documentation. Attach a zip file to that post containing your Arduino sketch, a photo of your finished breadboard circuit, and anything else you think is relevant. I’m working on how we can post video to the blog, but for now you could post it to your AFS account and link to that from your submission.
Due 23:59, Monday. Let me know ASAP if you have a conflict and will be submitting late, if you talked to me after class please send me email as a reminder.
My office hours are noon to 3 this Friday (8 Sep) but I can come in at 11 if that works around a time conflict, just drop me email.
The Arduino tutorial pages are a great resource. In the Arduino IDE, go to File->Examples and you’ll find example sketches for, well, almost everything in Arduino.
In the previous class we talked about analog vs digital. Digital only has to states: on or off, open or closed, or in the Arduino, 0 volts or 5 volts. We use pull-down resistors to force digital inputs to be 0 if they are not 5 volts.
Analog has a range between the states of digital. A door can be half-open, a class can have final grades instead of being pass/fail, a party can range from quiet to loud depending on the people and the music.
Arduino Uno has six analog input pins labeled A0 to A5 that can read voltages between 0 and 5V. Use analogRead() to read a pin, it will return a value between 0 (for no voltage) and 1023 (for around 5V).
The Arduino documentation has good circuit diagrams for setting up a potentiometer (or “pot”) and a photoresistor to be read on an analog input. For now, only read analog signals powered by the Arduino 5V pin, outside signals might release the magic smoke from your Arduino.
To test your hardware, use the smallest sketch possible to read the analog input and write the information to the console:
When we read analog we get values from 0 to 1023 from pins A0 thru A5, however when we write analog we can only write from 0 to 255 and we can only use certain pins for output, which pin varies by the type of Arduino board.
First review the slides related to reaction and interaction. (Slight correction: light switches can be interactive if they have the context of entertainment.)
Find and analyze an example of physical computing with a goal that is artistic or design based, less than a page and with links to the original. It should only take 30-60min. Youtube is a great place to start, so are NYU ITP and IDeATe. Due noon 7 September so I have time to review them before class.
If a project is an exercise or etude for class it doesn’t qualify for this exercise. What you’re looking for has to do something with interaction, preferably vaguely interesting, even if it’s just playing/entertainment. Sandnoisedevice meets plenty of engineering requirements but it doesn’t hold long term interest as it’s more about the technology than the interaction experience or functionality. If I could add something to this, it would a game where you generate music, something like Rez. Or perhaps add a second device and use the two as consoles in a music competition game like DDR.
A sample format:
If you are required to go to the Tue/Thu presentations for School of Art, email me with the dates you’ll miss. If it’s planned as a class lab day and there’s a presentation you want to attend, just let me know in advance.
School of Art party (7 Sep,2 017) is a class lecture/assignment day. I’d advise attending class as we’re introducing analog inputs and outputs and the first real physcomp assignment.
My office hours are noon to 3 this Friday (8 Sep) but I can come in at 11 if that works around a time conflict, just drop me email.
Introduction to Arduino and digital sketches.
The code we used in class with extra comments: