BUILDING A FLASHLIGHT
In this project, we'll put together the work we did in the previous projects -- getting GPIO input from the button and controlling the LED with GPIO output -- to create a "flashlight" circuit that will illuminate an LED when the button is pressed. The flashlight will rely on software for both input and output.
I/O (Input/Output) RaspberrySTEM Cell
IF-ELSE STATEMENTS
Having issues? Check out the Troubleshooting Guide.

In the GPIO AS INPUTS (READING BUTTONS) project, we were able to get button input from a GPIO. In the GPIO AS OUTPUTS (CONTROLLING LEDS) project, we were able to control an LED using GPIO. In this project, we're going to put those concepts together to read a button input using one GPIO and use that information toggle an LED using another GPIO.

Step #1: Wire the button and LED to GPIOs

For the hardware in this project, we’re going to wire two completely independent circuits:

  1. The first circuit will consist of a button wired to a GPIO (like we did in GPIO AS INPUTS (READING BUTTONS));

  2. The second circuit will consist of an LED wired to a separate GPIO (like we did in GPIO AS OUTPUTS (CONTROLLING LEDS))

Here is what the breadboard should look like with the two circuits wired. If you have any questions about how to wire either of these two circuits, refer back to the projects referenced above.

You’ll notice that our button is wired to GPIO18 and our LED is wired to GPIO14.

Step #2: Write the code.

Now that we have the circuits built and ready to go, it’s time to write our software. For this project, our software is going to do two things:

  1. Read the state of the button (pressed or released) using a GPIO as input

  2. If the button is pressed, turn on the LED using a GPIO as output, and if the button is not pressed, turn off the LED using the GPIO as output

Here is the code that will accomplish this:

Let's to through the code line-by-line and take a look at what it's doing:

Notice that with this code, the button status is only read one time when the program is run. So, if you want the LED to illuminate, you need to be holding the button when you run the code. If you’re not holding down the button at the time the program is run, the code will see that the button is released and the LED will not illuminate.

Step #3: Improve the code.

To make this program more useful, we can put the code that reads the button into a loop so that it will continually read the button state and update the LED every time it changes. To do this, we simply put the last four lines of the code (the lines that test the state of the button and turn the LED on or off) in a while True: loop, like this:

Give it a try. The flashlight will continue to work until you manually stop the program.

home | prev | next