This semester we were to pick something for our digital learning project. I chose to focus on learning the microcontroller computer language Arduino. The point of this post is to highlight the things I learned, the tools that I used to learn them, and what I plan to do with this going forward.
In the beginning I already knew a little about Arduino because I had already used other microcontrollers. This meant that I already knew what a PIN was and that there were digital and analog pins, also that they can act as inputs or outputs. I also knew about the fundamentals that are common to all languages like conditional statements and different kinds of loops, like do while loops.
What I did not know was the syntax of this language, the specifics of how different components behaved when connected to the board, etc.
The Learning Goal:
The reason that I had chosen this project in the first place, other than the fact that I would get to play with electronics, was that I wanted to help a student learn how to program a robot for a competition in March. In order to do that I needed to know how to use this kind of hardware and software myself. I knew that learning it would be time intensive so by having it count towards my masters class I knew that I would be able to justify the time it would take. So I decided that I would declare my learning a success if I could by the end of the semester control the motors for the robot with some sort of sensor input. I knew that this would likely be challenging as even with the other microcontroller that I was familiar with I had not been able to do this. Also I knew that one of my previous students had found that to be extremely challenging and he was much better at programming than I was.
The Learning Plan:
I started by mapping out for myself the steps that I would need to be able to do if I was going to be able to make this work. In order to have the motor move I needed to be able to do the following:
- Send a simple signal to a PIN
- Control the signal sent to a PIN with a button.
- Control multiple signals with multiple inputs.
- Send a signal to the motor.
- Send a signal to the motor controller to control the motor.
The Resources I used:
With this in mind I started to experiment. The major resources that I ended up using online were:
- The Arduino reference page.
- The Arduino forums page.
- The Tech Valley Project tutorials.
- The Sparkfun SIK arduino tutorials.
- The Fingertech website.
- Lots of googling of terms.
I will not recount each individual component that I learned to program here, or each unique function that I learned. Those are detailed clearly in my project posts. Instead what I will talk about here that I did not always talk about in my post is the pedagogy of learning on your own, online.
A Thought About Online Pedagogy:
In a traditional classroom you have someone who is an expert or at least knowledgeable helping to guide you. If they are any good at their job they are presenting you with challenges and content that is just above your current capability to make you stretch and grow towards it. If they give you something too difficult you become discouraged, too easy and you become passive and disengaged. A good teacher will keep you in that sweet spot and will keep increasing the challenges with your ability, until you are doing things that you never thought possible. Online learning does not have that. You need to challenge yourself enough to maintain your own interest, but you need to also pick something that is not impossible or else you will hit a wall and stop. I found this to be the greatest challenge to online learning, the idea of flying without a net. If I hit a wall there was not going to be anyone to help me, or so I thought.
It turns out that there are plenty of people online who are willing and capable of helping. The forums for the Arduino led me to many discussions that answered questions that I had. When I was hitting a wall with the tinyESC controller reaching out by email to the manufacturer turned out to be a good way to also get help. So the key to online learning is to not rely on only yourself. Find a like minded community and join the forums. Ask the questions and also answer questions for other people. In other words contribute to the community. As you do this at times you will get to play the role of teacher and this will help cement your own understanding. At other times you will be the one who receives instruction. Also post about your progress using appropriate hashtags to Twitter, you never know who will answer your questions.
Well, the project has been a lot of fun. I expect that over the Christmas break that I am likely going to outright build a working prototype to show to my students. I plan on posting that here. I do not expect this category on my blog to die out anytime soon. The Arduino bug has bit me hard and I plan on doing a lot more with this.
Thanks for journeying with me and be sure to stop by in the future.
One last thing:
While typing this up I found an ultrasonic sensor. This is a sensor that allows for you to measure distance using sound. (Kind of like a bat). I quickly hooked it up to the arduino, googled online for a tutorial and within 5 minutes had it up and running. Definitely not something that I would have been able to do at the beginning of the semester. I plan on incorporating this to the robot later. Come back in the next few weeks for a post on how it works. For now here is where I found the tutorial.
Okay, now I am done.