I finished the second run of the Tiny85 class Saturday (1/25/14). It was pretty good, but as before | always there was room for improvement. I’ve been using Freemind for the official repository of ideas, todo lists, lesson plan etc, and it’s good and useful, but not perfect. (And because the file resides on the PC, the snapshot here is subject to infrequent updating.) I’m hoping this post will add some clarity.
What went well
- I put slides together this time. There’s always room for more slides, but for the stuff I covered, they’re OK. Here’s a link to the latest version.
- The “Welcome” slide, which was up as they came in, instructed them to download the core libs. That worked well, but should have said to unzip the file and stash the ‘tiny’ directory where they could find it for when we’d install it later.
- The ‘lab activity’ of soldering pins and wires to the ISP shields took way too long the first time, so I pre-made them this time. Actually, it was Jacob who did a bunch of the work. (Thanks, Jacob!) The time savings in class is great; the extra work not so great.
- The blink sketch I pre-programmed into all the Tinys for the class was a sequence on physical pins 5, 6, and 7 this time. The verify-your-setup instructions were to put an LED on pin 5 and look for a blink. The blinks on the other 2 pins gave me something to add for those who got done quickly. That worked out well.
- The handout sheet I passed out this time was a very good addition. Here’s the latest version.
- I liked breaking it up with some intro, hands on fire up pre-prog blinkie and write own blinkie, more yammering about porting, programmers, etc, then actual do it lab, then more on fuses and avrdude and then lab to go to 8 MHz. The additional stuff after that is almost doomed to never be gotten to.
- Class still ran WAY over time. Gotta tighten it up. Never even made it to fuses and avrdude!
- I made noise about not depending on some of the magic Massimo put in to hide stuff, but should have stressed more that you really need to be awake to understand who you’re talking to when select boards when you’re downloading ArduinoISP vs the code that goes on the Tiny. It’s not hard, but more conceptually challenging than noob Arduino.
- I need to make more sure the invitation says you’ll need an Arduino, a current IDE, and a breadboard, jumpers etc. And (<sigh>) they’ll need to tell me if the Arduino is a Mega so I can arrange Mega ISP shields.
- I need to make some ISP shields for Mega. I have one laid out, but haven’t tested it yet.
Update 1/29/14: Tested the Mega cable shield. Works, but ugly. Details here.
- There should be better explanation of the auto-reset on download function, both for general understanding and to explain the 10uF cap and why you can’t have the shield on when you download ArduinoISP! Maybe roll in clarification of what we do to RESET on host vs target.
- On the handout sheet, the “Notes/Steps” were misconstrued as a full set of steps to follow, rather than reminders. Either make it a full set of steps, or name it better.
- Make much better distinction between serial and USB bootloaders!
- Is there another fuse bit besides RSTDISBL needed for using the RESET pin? (Or for 8MHz clock?)
- Get the dumb demo blinkie running before the next class!
- The GFCI audio, an RGB LED on a ping sensor and the dollhouse would be great additional demos.
- Maybe add very basic “what is a UART and why do I care”. Have a spiel about how to handle serial bootloaders and debug serial.
- Get around to talking about debug serial!
- Mention other core libs.
- Have a good short spiel on what’s in core libs. Not if-then, but yes millis(), delay(). What else?
- Mention that bootloader runs after reset, but not power on.
- Consider a more interesting master slide.
- Make nice reference to the Adafruit tutorials, including avrdude.
Nothing scheduled for W88, but after I’ve fixed most of the “improvement” list, I’d seriously consider offering to run it at PS:One.