Week 2 Readings and Notes

PComp you finally speak my language (well technically you're speaking in something similar to Java when it comes to the programming aspect)! Computers! ENGLISH!

Videos and Notes

So starting from the beginning, we look at a microcontroller, which is a core building block for computers that performs only one function; to build more complex hardware with richer functionality we need multiple. Microcontrollers are used in general to handle input and output (shorthand from here on is I/O) - speakers, displays, etc. Specific I/O controls can be determined by the pins on a microcontroller. The less pins one has, the cheaper and simpler it is. 

Microcontrollers run bootloaders, which are programs that live in a small part of the microcontroller's memory and can read/write to the rest of it. Bootloaders are a type of firmware, which is a combination of persistent memory and code stored in it firmware is basically stored in the read only portion of the chip so it can never be written over. This will always run when a computer starts so that it can run operating systems (OSes) and other programs. The most well known firmware is BIOS which runs when a computer is powered up in order to pull information for the OS to run. 

Microcontrollers cannot run on their own, so on a development board you'll find support components that will help the microcontroller to run including power regulation, a hardware programmer connector, communication interface circuitry, and indicator LEDs. Activity boards are a subset where the microcontroller is preprogrammed to run with software running on a computer, but these require a computer in order to function whereas development boards can run independently. The Arduino is a development board. 

So how do we program a microcontroller? ASSEMBLY! Assembly is the low level instructions that change the bits on the hardware. We write the code in 'English' using C or another language, then a compiler converts the code to Assembly and pushes it to the hardware for it to read and perform. 

To write a program, you can use an integrated development environment (IDE). You can also use text editors but IDEs will sometimes do the formatting for you automatically or autofill text. 

Some of the Processing and Arduino syntaxes are a little new but the overall concepts are the same as Java and C++. It looks like you have to specify a pin for I/O, I'm guessing this maps to the pin diagram we got in the first reading or so?

The Analog Input video lost me at when they drew out the circuit they were testing; how does it work and why?


I haven't read DoET since undergrad, but it's so good! Doors are HORRIBLE experiences. Once I read the book I kept running into terrible doors everywhere. A user's mental models have a huge influence on the type of experience they have when they use something, which is why research is necessary when designing anything. This is why we also have to be careful when mapping interactions - too many unique ones and you create a complex model, too many similar ones and you get interaction conflicts. 

I disagree a little with Norman on designing things for emotion, but that might be because of the nature of healthcare, which is what I worked on prior to this. From an enterprise software standpoint, practical is always key but for a consumer or interactive standpoint I can see why. Usable designs are not always necessarily pleasant ones, but there has to be a balance between aesthetic and usefulness


They were pretty straightforward for the most part - the only thing I had difficulty with was the syntax. The Validate option is handy for catching bugs; note to self, use that before I attempt to upload to the Arduino (also, make sure the Arduino is plugged in...)