Final Project

Materials to purchase:

Screen Shot 2017-11-13 at 8.50.36 AM.png

Paper Mockup


Lab + Quiz: Asynchronous Serial Communication


After reading all of the materials, I'm not sure what this lab is for and why we need to learn it... I feel like a zombie when doing the lab... I also did the Serial Input to P5.js but didn't manage making the dots' size adjust based on the knob. I'll debug it after the class. I'll post that lab with a p5.js sketch created by myself later this week.


Quiz Answers: 

1. When two computers communicate using asynchronous serial communication, there are properties that they must both agree upon in order to communicate. What are those properties?

data rate, voltage of pulses, and true or invert logic

2. How many applications can access a given serial port on your computer at a time?


3. The following error messages are from three different programs that can access a computer's serial port. They all indicate the same problem. What's wrong?

Only one application can access a serial port

4. What are the two most common ways to interpret incoming asynchronous serial data?

ASCII and binary?

5. What are the relative advantages and disadvantages of these two methods?

For binary: the full range can fit into a byte, but there's not other value of the value besides 0 and 1. Good for simple message. For more complicated data, using binary will make you hard to tell which represents which.

For ASCII: much larger range and much readable, but it takes more bytes to send the data.

6. The Arduino IDE's serial monitor, like most serial terminal programs, uses one of these two methods to interpret incoming bytes. Which does it use?

Binary protocol.

7. Here's the output from a serial terminal program (Coolterm). What might you assume about the format that the sending device is using?


8. When sending data from one computer to another, what is the maximum range of values that you can fit into a single byte?


9. How would you serially transmit a value that’s larger than the maximum value that can fit in a byte?

Use another byte?

Observation + Lab Documentation (Digital Input and Output + Analog Input)

Observation on how to swipe the MetroCard correctly at a subway turnstile:

Although most newbies have a general idea that they need to slide the card through the narrow gap, it is very common to have a second or a third attempt to get it eventually right. It lacks of clear signs to instruct riders which direction and side are the correct ones for people to swipe the card. Not to say the turnstile itself constantly have failures at reading a card. This adds more confusion and difficulties for new riders.

Image from here.

If you look carefully, the right corner of the swiping area is similar to the top right corner of the MetroCard. This shape allows users to insert their cards easily. In addition, the designer might also try to hint users about the right direction and side when they insert the card. If so, the design will be a failure since it is hard to be noticed when everyone is rush to enter the station.

Lab documentation (Digital input and output)

I made one mistakes during the first try of this lab. I inserted each of the LEDs in an opposite direction...which caused the whole circus doesn't work at all.

Lab documentation (analog input))

I made another mistake while doing these two labs... the negative end of the potentiometer didn't insert to the right place, which caused the whole thing didn't work in the beginning :(