Easy Project 19c Raspberry PI Zero W board - LED and push button

of Acoptex.com in Raspberry Pi Zero W

Raspberry basics: Project 19c

 Project name: Raspberry PI Zero W board - LED and push button

Tags: Raspberry, Raspberry PI Zero W board, vers 1.1, v 1.1, LED, push button, momentary switch, button, RPi.GPIO library

Attachments: btnled1.py, btnled2.py

Raspberry Pi
Monitor or TV
HDMI cable
USB keyboard
USB mouse
Power supply
8GB SD card

In this project, you needed these parts (Dear visitors. You can support our project buy clicking on the links of parts and buying them or donate us to keep this website alive. Thank you):

1. Raspberry PI Zero W board 1 pc

2. Micro SD card with NOOBS and SD card adapter 1 pc

3. Micro USB power supply (2 A 5V or 5V 3A) 1 pc

4. USB keyboard 1 pc

5. USB mouse 1 pc

6. TV or PC monitor 1 pc

7. HDMI cable 1 pc

8. T-Cobbler Breakout and GPIO Cable 1 pc

9. Micro USB 2.0 OTG Cable 1 pc

10. Mini HDMI to HDMI Adapter (HDMI to Mini HDMI Adapter) 1 pc

11. 4-Port USB 2.0 Hub 1 pc

12. Breadboard 1 pc

13. LED 1 pc

14. Resistor  2pcs (220 Ohm and 10 KOhm)

15. Momentary switch 1 pc

16. Jumper cables F-M, M-M


We will learn how to turn an LED on or off by a button with Raspberry PI Zero W board.

Use a normally open button as an input of Raspberry Pi Zero W board, when the button is pressed, the GPIO (General Purpose Input/Output) connected to the button will turn into low level (0V). We can detect the state of the GPIO connected to the button through programming. That is, if the GPIO turns into low level, it means the button is pressed, you can run project, we make the LED light up.

Understanding the momentary switch (button)

You can read more about it here.

Understanding the LED

Semiconductor light-emitting diode is a type of component which can turn electric energy into light energy via PN junctions. According to its wavelength, semiconductor lightemitting diode can be categorized into laser diode, infrared light-emitting diode and visible light-emitting diode which, called light-emitting diode for short, is usually known as LED. When we supply 2V-3V forward voltage to an LED, it will blink if only forward currents flow through the LED. Usually we have red, yellow, green, blue and color-changing LED which can change its colors with different voltages. LEDs are widely used due to its low operating voltage, low current, luminescent stability and small size.

LEDs are diodes too. Hence they have a voltage drop which usually varies between 1V-3V depending on their types. Likewise, LEDs usually can emit light if supplied 5mA-30mA current, and generally we use 10mA-20mA. So when an LED is used, it is necessary to connect a current-limiting resistor to protect the LED from over-burning.

The operating voltage of the LED is 1.8V and the operating current is 10mA-20mA. The Arduino Uno board can supply 5V or 3.3V power. We will use 5V for this project, so the minimum resistance of the current limiting resistor should be (5 V to 1.8 V)/20 = 160 Om. The 220 Om offered in the kit is suitable and you can also choose other resistors that meet the condition. The larger the resistance is, the dimmer the LED will get.

Understanding the Raspberry PI Zero W board

You can read more about it here.

Signals and connections of momentary switch (button)

You can read more about it here.

Signals and connections of the Raspberry PI Zero W board

Step by Step instruction

We recommend using a high-performance SD card for increased stability as well as plugging your device into an external display to see the default application booting up.

1. Setup and preparation

We assume that you have Windows 10 installed on your PC and Raspbian OS installed on your Raspberry Pi Zero W board. 

  1. Do wiring.
  2. Insert your micro SD card with Raspbian OS into the TF card slot on the Raspberry Pi Zero W board. It will only fit one way.
  3. Connect Raspberry PI Zero W board mini HDMI port to your TV or Monitor HDMI (DVI) port (use HDMI cable and mini HDMI to HDMI adapter and/or HDMI to DVI adapter).
  4. Make sure that your monitor or TV is turned on, and that you have selected the right input (e.g. HDMI/DVI,  etc).
  5. Plug in micro USB 2.0 OTG Cable to USB data port of Pi Zero and 4-Port USB 2.0 Hub to micro USB 2.0 OTG Cable. 
  6. Plug in your USB mouse and USB keyboard to 4-Port USB 2.0 Hub.
  7. If you intend to connect your Raspberry Pi Zero vers 1.2 or vers 1.3 to the internet, connect a WiFi dongle to one of the 4-Port USB 2.0 Hub ports.
  8. Connect Micro USB power supply to Raspberry PI Zero board micro USB input.
  9. The Raspberry PI desktop will start up.
  10. Open Terminal window and type the command: sudo apt-get update
  11. Then type the command: sudo apt-get install 

2. Making the program

  1. Type this command in the Terminal: sudo nano btnled1.py or sudo nano btnled2.py
  2. Copy and paste the code from btnled1.py or btnled2.py to opened window. Since it is a Python code, you need to be careful with the Tab characters as it is important to group the instruction as blocks in Python.

  3. Press Ctrl+X, Y, Enter buttons to save the file.
  4. Type the command in the Terminal: sudo python btnled1.py or sudo python btnled2.py

  5. When you press the button, the LED will light up; when you release the button, the LED will go out.


In the Python program, first we have imported package RPi.GPIO, it will help us in controlling the GPIO Pins of the Raspberry Pi.

The first important function of the RPi.GPIO Module is the setmode(). Using GPIO.setmode(), we can select either GPIO Numbering of the Pins or Physical Numbering. By using GPIO.setmode(GPIO.BOARD), we are selecting the Physical Numbering Scheme.

NOTE: For GPIO Numbering, you can use GPIO.setmode(GPIO.BCM).

The next function is the setup(pin,mode). This function will allow us to set the pin as either input (GPIO.IN) or as output (GPIO.OUT). In the program, I have set the ledPin as output by using GPIO.setup(ledPin, GPIO.OUT).

After setting the LED Pin as OUTPUT, now we need to set the state of this OUTPUT i.e. HIGH (GPIO.HIGH) or LOW (GPIO.LOW). For this, we need to use the function output(pin, state). So, in our program, we need to use GPIO.output(ledPin, GPIO.HIGH) for turning ON the LED and GPIO.output(ledPin, GPIO.LOW) for turning it OFF.

Each GPIO pin in Raspberry Pi has software configurable pull-up and pull-down resistors. When using a GPIO pin as an input, you can configure these resistors so that one or either or neither of the resistors is enabled, using the optional pull_up_down parameter to GPIO.setup

If it is set to GPIO.PUD_UP , the pull-up resistor is enabled; if it is set to GPIO.PUD_DOWN , the pull-down resistor is enabled. GPIO.setup(BtnPin, GPIO.IN, pull_up_down=GPIO.PUD_UP)  will set BtnPin's mode as input, and pull up to high level (3.3V)

if GPIO.input(BtnPin) == GPIO.LOW will check whether the button is pressed or not.

The last function is the GPIO.cleanup(). With the help of this function, we can make a clean exit from the program as it will clean all the resources that are used in the program.


We have learnt how to turn an LED on or off by a button with Raspberry PI Zero W board.

Libraries in use

  • RPi.GPIO


  • Look for attached code on the begining of this project

Other projects of Acoptex.com
Medium Basics: Project 083w Sipeed Maixduino board - Using PlatformIO IDE of Acoptex.com in Sipeed Maixduino 08-08-2019
Medium Basics: Project 083e Sipeed Maixduino board - Uploading MaixPy of Acoptex.com in Sipeed Maixduino 04-08-2019
Medium Basics: Project 083f Sipeed Maixduino board - Using MycroPython of Acoptex.com in Sipeed Maixduino 04-08-2019

Published at 23-12-2018
Viewed: 4609 times