Homework 12

Due: 2023/12/06 by 1PM

Programming (10 points)

Past or Future

This assignment is an opportunity to experiment with the different communication strategies to connect an Arduino to a p5js sketch that we saw in class.

We have a choice. We can either:

  • Pick a previous assignment and add a physical computing component to it.

    Maybe one of the first assignments we did could benefit from a potentiometer or a button. The drawing sketch of HW04B, or even some aspects of HW03A or HW03B could be parametrized to read an input from the Arduino.

    The physical input should change something significant about the sketch, not just colors.

OR

  • Develop an early version of the communication aspect of our final project.

    This is a good moment to get started with the code for our final projects, and since communicating between an Arduino and p5js is a requirement, why not start there.

    This can be just about the data being shared between the two environments with a simplified version of the visuals or the final circuit.

    For example, if the project is a game with a custom controller, the focus will be on getting the signals from the Arduino to p5js to make an ellipse move. Or, if the final project uses 12 buttons to implement a super password machine, for now the task should be to get 2 or 3 of those buttons to communicate with p5js.

Requirements and Considerations:

  • Pick one of the 3 strategies to connect an Arduino to p5js.
  • Bluetooth is the hardest.
  • Serial communication is symmetrical, the Arduino and p5js code for sending/receiving is very similar.
  • If adding a physical component to a previous assignment, the effect in p5js has to be more than just a change in color.
  • If not adding a physical component to a previous assignment, then this should be related to the final project.
  • Make a video showing the project working.
  • Include a README with:
    • A schematic drawing of the circuit.
    • Drawing of a Finite State Machine, if you have one.
    • Description of your logic.

Submission and Grading:

You can start by cloning one of these 3 templates, depending on which communication strategy you want to use: Serial, WiFi, BLE.

Use Brightspace to submit a link to your repository and a video of your project working. The video should be about 1 minute long to show all the input/output signals being transferred between the Arduino and p5js. You can upload the file to Brightspace or host it somewhere else and submit a link.

The following guide will be used for grading:

Task Points
README file with circuit diagram 2 points
Follow assignment instructions 2 points
Implementation 2 points
Thoughtfulness 2 points
Craft 2 points

Implementation: work shows evidence of understanding programming concepts and you are fully using them to express your ideas.

Thoughtfulness: project demonstrates your personality and it’s not a straightforward re-implementation of someone else’s idea.

Craft: code and results show care and consideration for presentation and professionalism, and work doesn’t look like it was rushed.

Read & Respond (5 points)

Media as environment, or environment as media? How are the natural and the media worlds entangled?

Write a 200-word response to the following:

1. The Marvelous Clouds: Toward a Philosophy of Elemental Media by John Durham Peters
Introduction and one of chapters 2, 3, 4, 5 (pdf pages 1 - 13, 53 - 57, 115 - 119, 165 - 169, 213 - 218)
2. Worlds In Figures by Evan Roth
Tutorial and Software

Feel free to read all of the pages suggested, or, after reading the Introduction (pages 1 - 13), pick one of the four chapters (chapters 2, 3, 4 or 5) and read the first few pages, as listed above.

Access Worlds In Figures, watch the tutorial video and play with the software.

As always, your response should be personal, meaning that you should be expressing your views and opinions about the text and not just summarizing it. You can use the following rubric to guide your response:

  • Short summary: in one or two phrases, what is the text about?
  • Short summary: in one or two phrases, what is Evan Roth’s project about?
  • How is Evan Roth’s project related to the text?
  • Which chapter of the book did you pick? What is it about?
  • Memorable quote: Is there a phrase in the text that stands out or captures the main idea of the text?
  • Did you learn something new? What?
  • What do you agree or disagree with? Why?
  • How is this text related to programming?
  • Is the text related to any of the other readings we’ve done so far?

Please submit your response via Brightspace.

Alternatively, you may create a reading.md file in your HW12 repo and write your response in markdown. Just make sure to submit a link to the file using Brightspace.

Grading for the readings will be assigned following these considerations:

Response Grade
Only summarized the reading 1 point
Summarized the reading and project 2 points
Answered some of the prompts, but I can’t tell whether
you actually read the text and saw the project
3 points
Answered enough prompts to express opinions 5 points

Project (10 points)

Review:

Our final project is an opportunity to combine everything that we’ve learned 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.

This Milestone: project proposal, planning and organizing

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? How does it get 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 must include:

  • System diagram
  • FSM diagram
  • Circuit diagram
  • Description of any external data or library that you are planning to use
  • Description of any sensor, output component or mechanism that you are planning on using or building
  • Reference images, texts and projects
  • Plan for user testing
  • Short discussion of why your project is relevant:
    • how is it related to our readings?
    • how does it connected to society?
    • why is it important to you?

Your writeup could include:

  • Pseudocode or an outline of how you plan to organize your code
  • Documentation of visual experiments
  • Description of any code written so far

Please submit the link to your project repository via Brightspace.

Next Milestones

Milestone 3 (due: 2023/12/13)
Working Prototype and Pseudo-code (10 points)

For this milestone everyone will bring something to share with the class.

Milestone 4 (due: 2023/12/20)
In class demo and presentation (30 points)

This will include a short presentation and demo during class, final code review and a final writeup.