One of my early hobbies as a kid was collecting baseball cards. At every card show, I was on the lookout for the  1989 Ken Griffey Jr Rookie card, #1, from Topps. My collecting craze lasted until the baseball strike in 1994. Then I lost interest in professional baseball and its collectibles.

You’re asking, what does this have to do with electronics? Well, the Circuit Trading Cards from Arachnid Labs reminds me of the days I spent trading baseball cards. Instead of memorizing RBIs and Homerun counts, these circuit patterns trading cards teach you circuit basics.

The card stock used is of high quality, and each unique card has a durable feel. One side is the Arachnid Labs logo while the other is what I call the “information side.” The information side is one of three colors: Yellow (Analog), Blue (Digital), and Green (Power).

The latest AddOhms looks at why you need a pull-up resistor when using push-buttons. This video goes into what happens when you leave a pin floating, what a floating pin means, and how the pull-up works. You can get more information about the video on the AddOhms Episode page.

[shareable]Pull-Up Resistors can be a difficult topic to understand. That’s why I made this video.[/shareable]

This tutorial is the 2nd time I’ve made a video on pull-ups. Despite being a single resistor, it can be a difficult topic for new hardware designers to understand. The pull-up video was the first video tutorial I ever made. In fact, the YouTube version uses YouTube’s “stabilization” algorithm, which gives the video a very warped feel.

AddOhms #15 shows improvements in skill over the past couple of years!

What’s another topic that I need to cover in an AddOhms Tutorial?

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.