Note: “codebook” entries below are verbatim pasting of all of the code we wrote in class. It’s possible they may not compile (i.e. may have errors) if we left things unresolved, or were writing pseudocode, etc.

Monday, Jan. 12th: Intro

  • Welcome to class!
  • Quick introductions: students in random pairs each answer a few questions about each other:
    1. Their name and pronouns
    2. What they’re studying and what year they’re in
    3. What brings them to this class
    4. Something fun/interesting/exciting/great/awful they did over winter break
  • Review course Canvas site briefly
  • Review main course site (the one you’re reading this on) briefly, going over the various sections listed in the navigation bar on the left
  • Review Gantt chart of major course flow across the semester
  • Quick IDeATe walking tour
  • Phys Comp Lab tour. Room notes:
    • Food and nonwater drink must be consumed in the Zone of Shame and are not allowed at tables
    • Please use all resources within reason!
  • Please use the “Name Coach” feature on Canvas today or tomorrow
  • Strong recommendation: sign up for the university fire extinguisher training which is the hardest part of the process to gain access to IDeATe’s laser cutters. Link to relevant Bioraft (training system) page. There will also be IDeATe specific training dates TBD.
  • Homework 1 assigned, due Wednesday 1/14
  • Handing out beginning of course kit—each student gets an Arduino Uno R3 and USB cable (we didn’t quite get them in time for everone to get one in class, but they are in our class cubby in the Phys Comp Lab!)

Wednesday, Jan. 14th: Diving In

  • Reviewing asynch discussion board homework questions
  • Syllabus Review
    • As of this writing only ~50% of people have read the syllabus!! Not very good!
  • Weekly Feedback assignments introduction
  • Previous-semester projects review (this was part of Homework 1)
  • Introducing the ioRef cards and associated resources
    • Lesson on using ioRef cards to diagram data flow through a system
  • Reminder to sign up for a fire extinguisher use training if you haven’t already (Still waiting to see if IDeATe will have some unlisted ones you could just show up to)
  • Handing out course kit. Everybody gets:
    • 1 6 qt. plastic tub with name tag (label your tub!)
    • Inputs
      • 1 CdS (cadmium sulfide) photoresistor
      • 1 HC-SR04 ultrasonic ranger
      • 1 10kΩ potentiometer
      • 1 tactile pushbutton
    • Outputs
      • 3 LEDs (any colors you like)
      • 1 hobby servo motor
    • Connectors
      • 1 breadboard
      • ~10 male–male jumper wires, including at least two red and two black ones
    • Electronics components
      • 3 270Ω resistors
      • 1 5.6kΩ (5,600Ω) resistor
      • 1 10kΩ (10,000Ω) resistor

Wednesday, Jan. 21st: ioRef and Project 1 Intro

  • Reviewing asynch discussion board homework questions
  • Checking in on Fire Extinguisher training
  • Reading resistor color codes
  • Wiring buttons with INPUT_PULLUP mode. Link to the Arduino reference page!
  • Data types in C
    • bool: true or false
    • int: whole number in range –32,768 to 32,767
    • unsigned int: the same number of values as int, but starting at 0, so: range is 0 to 65,535
    • long: whole number in range approximately –2.1 billion to 2.1 billion
    • unsigned long: the same number of values as long, but starting at 0, so: range is 0 to about 4.3 billion
    • float: “floating point” number, meaning something with a decimal in it like 1.543 or –10493.25, but with limits (a float has 6 or 7 digits of precision, so it wouldn’t store 9872.19886757275 without truncating it). Range is about –3.4 × 1038 to 3.4 × 1038
    • char: short for “character,” things like a, Q, ?, or even 8 (as a character, not the value 8)
    • String: a “string” of characters put together, like "Abracadabra!" she yelled., or q (yes, a String can be just one character long, confusingly), or 735—though it looks like a number, it’s a String so it has no numerical value
    • Read lots more details at this section of the main Arduino reference page
  • IoRef Review
    • Discuss and draw assigned devices: microwave, projector, radio-controlled toy car, refrigerator, old-school (wired) telephone
  • Project 1 introduced
    • Demo sample project shown in class
    • Schematic drawing using draw.ioref.org
      • Schematics aren’t the same as functional block diagrams
      • They show every wired connection
      • Use ground and power nets to reduce clutter!
    • Groups introduced (posted as announcement in Canvas)
    • Ideation is due Monday 1/26 at the start of class
    • Schematic drawing using draw.ioref.org
      • Schematics aren’t the same as functional block diagrams
      • They show every wired connection
      • Use ground and power nets to reduce clutter!

Monday, Jan. 26th: Project 1 Ideation

  • HW 2 Grades are submitted, so 7 day re-grade requests are due before Monday Feb. 2nd!
  • New Tutorials on the Website! (see the navigation bar)
  • New office hours! Wednesday 4pm - 6pm. Wednesday Noon - 1pm office hours are shifting to “by appointment only”.
  • Review Project Scoring Plan
  • Review Voltage Dividers. You can view the circuit example here
  • Sample software sketch introduced, including:
    • Opening comment block explaining the software’s purpose and including a pin mapping
    • Declaration of global variables
    • Four part loop with named functions:
      1. Read inputs
      2. Make decisions
      3. Drive outputs
      4. Report back to the user
  • Review Ideation with each team.

Wednesday, Jan. 28th: Project 1 Tech Skills

  • Weekly Feedback #2 is due friday before 5pm.
  • Fire Extinguisher training check in: Looks like there are some new trainings with spots, including one on a Friday morning! Please sign up for one asap if you haven’t yet!
  • Project 1 Logistics
    • Deadline pushed back to Feb. 9, but it does compress HW 3 (previously due Feb 9th, now Feb 4th) and Documentation (now due just 2 days after the project 1 crit).
    • Please read the entire project 1 write up on the website. Based on some of the questions I’ve gotten it’s clear not everyone has read it fully!
    • You can share code/approaches with your team member, but you will each build your own physical double transducer (but then write the joint documentation page)
    • Take advantage of all the fun craft supplies in the lab! Legos, knex, hot glue, popsicle sticks, etc are the build quality level I expect for this project. We’ll get into nicer cases later!
    • To help you gauge your progress over the next week, here are some suggested milestones:
      1. Today, Jan. 28th: One input or output tested and working (hopefully the one you are most worried about!)
      2. Monday, Feb. 2nd: All the inputs and outputs of your transducers are wired up and working (and any mechanical bits have been built too)
      3. Wednesday, Feb. 4th: (we don’t have in-class work time this day!) LCD is tested and working, even if it isn’t fully integrated. All inputs and outputs are working and the skip the middle button is implemented too. Only soldering the middle step and working through the last couple bugs should be left!
    • Pointing out particularly useful parts/materials for the project:
      1. Project 1 boards are in the class cubbies
      2. 16x2 I²C LCD displays in the “Output” section, ioRef part #0628 (female-male jumpers are useful for these)
      3. Lots of other devices that might be good for your inputs and outputs are around the lab! Walk around and see what you find!
  • Example Double Transducer (Orientation/angle -> Light intensity -> temperature)
    • Reviewed expectations for system diagrams/schematics (also found here!)
    • Example system diagram and schematic (including the mosfet circuit can be found in our shared google drive here)
    • Check the “current inventory” page on ioref.org to find other stuff we have around the lab!
  • Unit building and unit testing
    • There is a lot going on in this project, which is pretty intimidating! Luckily, by making a system diagram you have already broken it into digestable chunks.
    • Don’t try to build everything and then test -> Build one chunk (literally one block of your system diagram in this case) at a time and verify it with serial prints or test data
    • Start with small, simple pieces and get them into a “known working” state
    • As your first or second chunk, try the part of the project that scares you the most! It will likely take the longest and it is good to find any unsolvable issues sooner rather than later!
    • Keep good practices
      1. Clean, well commented code
      2. Good Variable Names
      3. Clean Wiring with the propper colors (Red for power, black for gnd, other colors for anything else)
      4. Write test sketches that exercise a single part of your project and save them with good names
    • SLOW IS FAST!
  • Debugging flow chart from class (remember! this doesn’t work in all cases, but is a good mental model/jumping off point)
  • Quick 2 minute checkins with each team

Monday, Feb. 2nd: Project 1 work time

  • HW 3 Due on Wednesday!
  • Ideation phase is graded, 7 day window for regrades now open (closes next monday)
  • Brief review of Project 1 final critique grading (described fully here)
    • Technical proficiency wants your signal to make it through the whole machine
    • Skip-the-middle button should do what it says
    • Physical arrangement is very straightforward
    • Labeling is very straightforward
    • Status display is pretty straightforward
    • Soldered connections for the middle step (also please don’t solder right onto the pins of something you expect to put back into the lab stock)
    • Proper wire colors is easy, too
  • LCD Screen Checkin, see tutorial here
  • Quick discussion of how to juggle multiple concurrent scheduled events, with reference to Blink without blocking sketch
    • Our test code from class is here
  • Overview of battery and power options
    • 9V battery and barrel jack battery clip is a great way to make your project cord-less if you don’t have any high power devices
    • Rechargable USB battery packs are also good
    • Power supplies for higher voltages (9V and 12V) are in the back of the lab
  • Soldering Demo
    • To Be Continued Wednesday
  • Remember to take pictures/screenshots/etc. as you go for process documentation—both successes and failures!

Wednesday, Feb. 4th: Laser Cutting

  • Please email me if you can’t access the class google site (the documentation site) or if you cannot duplicate the example page
  • Handed out cardboard bases for project 1
  • Project 1 presentations are Monday! We have a lot to get through so we’ll be starting right at 10!
  • Extra office hours on Friday, Feb. 6th from ~2pm to ~5pm. Start time might vary slightly depending on when the Arduino Micro finishes up. I’ll try to be in the lab for at least a solid 2 hours though.
  • Laser Cutting Demos! We’ll be splitting up into smaller groups since we don’t have much space in the laser cutter room. Keep working on Project 1 while you aren’t laser cutting. See the announcement on canvas for the groups.
  • Soldering lesson wrap up. Demo videos from previous semesters are on Canvas if you want to reference them later.
  • Weekly Feedback #3 is up! Please fill it out before 5pm on Friday!
  • For those outputing LED color with a common anode RGB LED, here is some sample code to help with the HSV to RGB conversion: hue_to_rgb.ino