Skip to content

Instantly share code, notes, and snippets.

@idriszmy
Last active March 1, 2022 05:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save idriszmy/559d77f2485e8fb2742f4ffe173a4b51 to your computer and use it in GitHub Desktop.
Save idriszmy/559d77f2485e8fb2742f4ffe173a4b51 to your computer and use it in GitHub Desktop.
Program your Raspberry Pi Zero 2 W (with CircuitPython) without OS.
"""
Program your Raspberry Pi Zero 2 W (with CircuitPython) without OS.
Items:
- Raspberry Pi Zero 2 W
https://my.cytron.io/p-raspberry-pi-zero-2-w-wch
- MakerDisk microSD Card
https://my.cytron.io/p-raspberry-pi-approved-makerdisk-microsd-with-rpi-os
- Maker pHAT
https://my.cytron.io/p-maker-phat-simplifying-raspberry-pi-for-education
- USB Micro B Cable
https://my.cytron.io/p-usb-micro-b-cable
- 3D Printing products
https://my.cytron.io/c-3d-modeling
References:
- https://circuitpython.org/board/raspberrypi_zero2w/
Last update: 1 Mar 2022
"""
import time
import board
import digitalio
print("CircuitPython (without OS) on RPi Zero 2 W")
led1 = digitalio.DigitalInOut(board.D17)
led1.direction = digitalio.Direction.OUTPUT
led2 = digitalio.DigitalInOut(board.D18)
led2.direction = digitalio.Direction.OUTPUT
led3 = digitalio.DigitalInOut(board.D27)
led3.direction = digitalio.Direction.OUTPUT
led4 = digitalio.DigitalInOut(board.D22)
led4.direction = digitalio.Direction.OUTPUT
led5 = digitalio.DigitalInOut(board.D25)
led5.direction = digitalio.Direction.OUTPUT
led6 = digitalio.DigitalInOut(board.D12)
led6.direction = digitalio.Direction.OUTPUT
led7 = digitalio.DigitalInOut(board.D13)
led7.direction = digitalio.Direction.OUTPUT
led8 = digitalio.DigitalInOut(board.D19)
led8.direction = digitalio.Direction.OUTPUT
sw1 = digitalio.DigitalInOut(board.D21)
sw1.direction = digitalio.Direction.INPUT
sw2 = digitalio.DigitalInOut(board.D16)
sw2.direction = digitalio.Direction.INPUT
sw3 = digitalio.DigitalInOut(board.D20)
sw3.direction = digitalio.Direction.INPUT
buzzer = digitalio.DigitalInOut(board.D26)
buzzer.direction = digitalio.Direction.OUTPUT
NONE = 0
INCREASE = 1
DECREASE = 2
ALL_OFF = 9
ALL_ON = 10
def beep(times, seconds):
for x in range(times):
buzzer.value = True
time.sleep(seconds)
buzzer.value = False
time.sleep(seconds)
def led(led_number):
if led_number == 1 or led_number == ALL_ON:
led1.value = True
else:
led1.value = False
if led_number == 2 or led_number == ALL_ON:
led2.value = True
else:
led2.value = False
if led_number == 3 or led_number == ALL_ON:
led3.value = True
else:
led3.value = False
if led_number == 4 or led_number == ALL_ON:
led4.value = True
else:
led4.value = False
if led_number == 5 or led_number == ALL_ON:
led5.value = True
else:
led5.value = False
if led_number == 6 or led_number == ALL_ON:
led6.value = True
else:
led6.value = False
if led_number == 7 or led_number == ALL_ON:
led7.value = True
else:
led7.value = False
if led_number == 8 or led_number == ALL_ON:
led8.value = True
else:
led8.value = False
mode = NONE
led_position = 0
led(ALL_ON)
beep(1, 0.1)
led(ALL_OFF)
while True:
if sw1.value == False and mode != DECREASE:
beep(2, 0.07)
mode = DECREASE
elif sw2.value == False and mode != INCREASE:
beep(2, 0.07)
mode = INCREASE
elif sw3.value == False and mode != NONE:
beep(1, 0.07)
mode = NONE
if mode == INCREASE:
if led_position < 8:
led_position = led_position + 1
else:
led_position = 0
elif mode == DECREASE:
if led_position > 0:
led_position = led_position - 1
else:
led_position = 8
led(led_position)
time.sleep(0.05)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment