In this assignment we are going to experiment a little bit more with the Arduino’s input capabilities.
There’s no template to clone for this one. You’ll just start a project named HW12 through the Arduino IDE and then push its folder to your GitHub account (like in this video).
Use Brightspace to submit a link to your repository and a video of your project working. The video should be 15 to 30 seconds long and you can upload the file to Brightspace or host it somewhere else and submit a link.
Include the following in your README file:
This assignment will be graded on a scale from 0 to 10, taking the following criteria into account:
README.md
file with information about the input sequence and a drawing of the circuit.This week, we are going to use our Arduinos to create a physical-computing password machine.
Kind of like an electronic door lock, this will be a machine that keeps track of user inputs and signals success if a correct pre-determined sequence of inputs is entered, or failure if an incorrect sequence of inputs is entered.
There are many ways to do this using the analog and digital input functions from the Arduino:
As an example, a correct password sequence using a potentiometer and 2 buttons could be:
This password sequence has 7 steps and is more than what’s expected for this assignment.
It’s easier to use fixed-length sequences. What this means is that the system only reports if a sequence is correct after a fixed number of steps has been taken, then it reports success or failure and resets.
In the case of the example above, it would wait until there are 4 button presses and only then turn on either a red or green light.
If using a photoresitor, keep in mind that it’s really hard to program these to work under any and all conditions. Changes in the room lighting will affect how a photoresistor works. Just make sure to test and calibrate your code right before making the video.
Our final project is an opportunity to combine everything that we’ve learned so far to create a piece of work that showcases not only our technical knowledge, but also our design skills, and ability to think critically while making connections between our readings and our practice.
For full credit projects should have a physical-computing aspect, and an audio or visual aspect, so this means using both an Arduino for input or output, together with a p5js sketch. Projects also have to have custom functions, arrays, objects or classes, for()
loops and if()
statements, and demonstrate forethought and planning. At the same time, we’re expected to go beyond the basic concepts of programming, so use of external libraries is extremely encouraged.
For this week’s milestone you will further develop the idea for your project and create a plan for its development. It’s also not a bad idea to start thinking about the code and writing some initial functions, testing some visuals and experimenting with libraries.
Think about your overall system: What are the interactions? Where does data get produced or collected? what daata has to be transferred between Arduino and the computer/browser/p5js ?
Think about materials: Do you need any extra electronic materials, like sensors, motors or special LEDs? Will you need to fabricate any special structures or mechanisms?
Think about your user: Who is this for? Is it related to any of Douglas Rushkoff’s commands? Would Chris Crawford consider it interactive? How do you plan on testing your project?
Think about the development: How long do you think it will take to develop your project? What do you think will be the most challenging aspect of the project? Do you have any “stretch” features you would like to develop in case you finish early? Do you have a backup plan in case anything ends up not working out?
Your writeup should include:
Your writeup could include:
Document progress in the same repository as Milestone 01 and submit a link to your project repository via Brightspace.
For this milestone everyone should have some working code.
This will include a short presentation and demo during class, final code review and a final writeup.