We'll use 4.7 kΩ resistors: by Ohm's law, 5 v / 4700 Ω = 1.06383 mA, which will mean out LEDs are visible while keeping our current well below the ~20mA current they're rated at.

The Buttons

When reading from the input pins on the Arduino, we'll need to keep some things in mind.

First, the input pins are digital, so the Arduino expects ~5V, which we'll provide from the 5V rail. You could get away with down to around 3.5V, but after that the Arduino isn't likely to consistently read the input pin as a logical 1.

Second, you might be tempted to neglect the 10kΩ resistors between the input pins and ground, but you'd figure out soon enough why they are important. They're "pull-down" resistors, and allow the input pin to settle at logical 0 (ground). With nothing attached to the pin, any transient voltage could easily cause the pin to read as a logical 1.

Third, buttons, like all electrical components are imperfect. Our simple push button has a spring inside it, and when we release it after pressing it, it's likely to vibrate, or "bounce" a little before opening back up. We'll need to make sure to add some debounce in our code to account for this.