Category

Tutorials

Category

Flag variables are great, and totally not evil, when you just have two states: ON or OFF. What about when you have multiple states? Is there an option better than creating multiple flag variables?

The C-language has a declaration type just for this purpose. It is called an enumeration, or enum.

Setting up a state machine with enum is a surprisingly simple. Arduino and embedded programmers should use them!

All you need to do is create descriptive tag names, and let the compiler assign them an integer value. Unlike a #define which is just a macro replacement, the compiler treats an enum as your personal variable type.

This behavior comes in handy when you’re creating states for a state machine. I show how to create a simple state machine with enum, to blink an LED with millis(), in this post.

Recently I picked up a device called Logic from Saleae. It’s a 4-channel USB-based logic analyzer. While learning how the simple, but effective, UI works I ran some timing benchmarks on my Arduino Uno. The subject? digitalWrite(). I wanted to know how fastdigitalWrite() could turn on two (or more) pins.

Almost all Arduino users start out with the simple “blink” sketch. Turn pin 13 ON, delay, turn it OFF, and delay again. The heart of this version of “Hello World!” is the digitalWrite() function. Many Arduino users never even think about all of the stuff this single function call hides.

In this post, let’s compare the speed of digitalWrite() to direct port manipulation, using a logic analyzer.

Getting programming questions answered on the internet can be problematic. Programmers love to have opinions, stick to those ideas, and express them to you even when their opinion has nothing to do with your question(s).

Not only am I going to explain how to use flag variables in your code, I am going to encourage their use—which most programmers avoid.

However, this advice comes with two caveats.

  1. This information only applies to limited resource environments like an Arduino, LaunchPad or PIC.
  2. Use flag variables very carefully when you do use them.

The following flag variable usage examples are Arduino-centric but apply to any microcontroller platform, including the Energia project for TI Launchpads.

On every page of my blog, you might notice a chat window. If I’m not busy, we can chat in real-time. If not, the messages come to me by email. Here’s one I got from Matt the other day:

Let’s talk a bit about how (and why) you would use a P-Channel MOSFET. Matt, and he’s not the only one, is probably asking this question based on the “myth” that P-Channel MOSFETs require “negative voltage” supplies.

Keep reading for how-to use only positive voltage in this p-channel MOSFET tutorial.

The other day my friend called me up. He told me how much he missed building circuits and wanted to start again with the Arduino.

So he asked me “which Arduino starter kit is the best to buy?” At which point, I drew a long breath. Easy question, not always an easy answer.

Picking out an electronics kit depends on a number of factors. You should consider:

  1. Your budget
  2. What you already have
  3. What you want to do

#1 and #2 are probably pretty easy to figure out. For many beginners, it’s “not much” and “nothing.” When you don’t know #3, what you want to do, then it gets trickier. Coming back to my friend, what did I do? Well, I went out and bought each one of the kits in this post. I put myself in his shoes and maybe these are your shoes as well.

Assuming you have about $100 to spend, have no components on-hand now and just want to “get started” consider one of these 4 Arduino starter kits.