I recently taught my first Introduction to Arduino Programming class at the Sweden/Clarkson Recreation Center. This Arduino class consisted of one student, and I think he enjoyed himself. More importantly, I think he learned a few things about programming.
Lessons from my first Arduino Programming Class with Younger Kids
The Arduino is a microprocessor that was originally designed to allow artists to add electronic interactivity to their projects. It is programmable through a regular computer using a USB cable. The outputs on the Arduino can be connected to LEDs, temperature sensors, light sensors, speakers, microphones, and many other electronic components. Many versions of the Arduino are available. Arduino programs are called “sketches”, and can be written using the Arduino programming environment.
I had taught college students how to use and program the Arduino before, so I was confident that I knew my stuff. I wasn’t 100 percent sure that younger students would be able to follow along. After the first session, I’m confident that they can, having learned a few lessons myself.
Lesson 1: Use the Digital Sandbox and Guide
Because of this, I decided to use the Sparkfun Digital Sandbox. This device includes an embedded Arduino. It also includes several pre-wired LEDs, a temperature sensor, a microphone, a light sensor, and a few other outputs. Because these components are pre-wired, I didn’t need to worry about students connecting the components incorrectly. We could move right into the programming aspect.
The Digital Sandbox even comes with a printed (or online) guide that students can follow. The necessary blocks are presented un-assembled in example files that the student can open.
After my first Arduino class, I am confident that using the Digital Sandbox was the right decision.
Lesson 2: Use Ardublock Programming Environment
The second choice I had made was to use the Ardublock programming environment instead of the regular Arduino programming environment in this level of an Arduino class. Ardublock is a graphical programming environment similar to Scratch. In this environment, the programmer moves blocks of code around and “clicks” them into place: There is actually a click sound made when the code pieces match up. Variables, commands, if-then statements, and others have special shapes and won’t click if they don’t go together. It is very easy to change variables and move blocks around, so novice programmers can easily experiment, without worrying about syntax. The dreaded “missing semicolon” error doesn’t happen.
Using Ardublock was a another great decision. My student got so fast that I had to slow him down from time to time to see just what he was doing.
Lesson 3: Ask Questions
Ardublock is very easy to use, but it can lead to a false sense of understanding. I eventually realized that my student knew how to place blocks in the right place, but he didn’t necessarily know what each of the blocks was doing. Once I started asking questions, this became apparent. It only took a few leading questions, though, to get the student to think about the code rather than just rearranging it quickly and moving on to the next example.
Lesson 4: Expand on the Guide
The Digital Sandbox Guide and examples are excellently written. They are designed to give a nice overview of what the Arduino can do. The guide is fun to follow. In fact, it is so fun that students want to zip right through each example and move on to the next one before reflecting on what they just learned…
After my first Arduino class, I went through and noted where I could expand on the Guide. For example, the guide doesn’t show an example of the time graph of pulsed width modulation. Once I drew a picture, my student quickly caught on to the concept. I wrote most of the questions I asked to help promote deeper understanding. I also devised a few extra “challenges” to help students really grasp the concepts from each example.
I created an “experimenter’s notebook” that I will use for future classes. It includes these additions and space for students to write down their answers and observations. This will help when I have several students working (4 max) at once. It should also help cement the learning of my students.
Ardublock is easy to use, and it shows you what the resulting code would look like. This is useful, but the resulting code is a bit messy. For example, commands include……
I think the ease of experimenting with Ardublock outweighs the problems with the appearance of the code. Once students understand the idea behind an if-then statement, they can go back and learn better ways to write the code. I will be spending sometime designing ways to help this transition.