SparkFun Forums 

Where electronics enthusiasts find answers.

By brianuno
#194189
I finished the SparkFun tutorial series. That was cool. They are all very simple, at least superficially, but each one made me think. The example with far-reaching significance is a sketch and circuit for blinking one light with two buttons. Wow, I thought, when I first got it working. The only thing it does that can't be done with some bell wire, a battery, a light bulb, and two light switches is not light the light bulb if both buttons are pushed. What good is that, I asked? Well, try using it as a basis for counting votes, for one thing. Suppose you want to offer a choices between Democrat, or Republican. I cite these political parties because the U.S.A. is a two-party system. It would be more complex in countries with multi-party political systems. With this circuit, the voter must choose one or the other -but not both. You must read the entire comment section of the sketch, but let's look at the core of the sketch:
Code: Select all
  // Now let's use the above functions to combine them into one statement:
  
  if (((button1State == LOW) || (button2State == LOW))  // if we're pushing button 1 OR button 2
      && !                                               // AND we're NOT
      ((button1State == LOW) && (button2State == LOW))) // pushing button 1 AND button 2
                                                        // then...
  {
    digitalWrite(ledPin, HIGH);  // turn the LED on
  }
  else
  {
    digitalWrite(ledPin, LOW);  // turn the LED off
  }
That's some elegant code writing right there! I am a beginner at this, but even I can recognize good code writing, when I see it. For your convenience I am uploading the sketch with this post. The original wiring schematic is easy to figure out without pictures. What I would like to see next is writing the button decision to the Serial Monitor. I would like to see the vote count print, line-named, "one for Democrats," or "one for Republicans," and the data copied or downloaded from the Serial Monitor window and tallied. That's how voting machines work, right?
You do not have the required permissions to view the files attached to this post.