Things used in this project
Story
Introduction
Wokwi Arduino simulator is useful here for you to simulate your Micropython projects. In this project, you will simulate Raspberry Pi Pico on Micropython. You can run your Micropython code. You can use several peripherals such as temperature and humidity sensors, PIR sensors, light sensors, and more. In this project, you will connect a Pi Pico to a seven-segment display. To make this interesting, you will write code to toggle the counting up and down. You can display numbers from 0 to 9 and alphabets from A to F corresponding to hexadecimal values of 16 values. 0-F.
Components needed
- Raspberry Pi Pico
- Seven segment display
- Slide switch
- Wires
Project / Live simulation
https://wokwi.com/arduino/projects/300210834979684872
The code
# My first MicroPython example of a 7-segment
# ascending/descending hexadecimal counter
# by Anderson Costa, created on 05.06.2021
from machine import Pin
from utime import sleep
# A
# ---
# F | G | B
# ---
# E | | C
# ---
# D
pins = [
Pin(2, Pin.OUT), # A
Pin(3, Pin.OUT), # B
Pin(4, Pin.OUT), # C
Pin(5, Pin.OUT), # D
Pin(6, Pin.OUT), # E
Pin(8, Pin.OUT), # F
Pin(7, Pin.OUT), # G
Pin(0, Pin.OUT) # DP (not connected)
]
# Common anode 7 segment
digits = [
[0, 0, 0, 0, 0, 0, 1, 1], # 0
[1, 0, 0, 1, 1, 1, 1, 1], # 1
[0, 0, 1, 0, 0, 1, 0, 1], # 2
[0, 0, 0, 0, 1, 1, 0, 1], # 3
[1, 0, 0, 1, 1, 0, 0, 1], # 4
[0, 1, 0, 0, 1, 0, 0, 1], # 5
[0, 1, 0, 0, 0, 0, 0, 1], # 6
[0, 0, 0, 1, 1, 1, 1, 1], # 7
[0, 0, 0, 0, 0, 0, 0, 1], # 8
[0, 0, 0, 1, 1, 0, 0, 1], # 9
[0, 0, 0, 1, 0, 0, 0, 1], # a
[1, 1, 0, 0, 0, 0, 0, 1], # b
[0, 1, 1, 0, 0, 0, 1, 1], # C
[1, 0, 0, 0, 0, 1, 0, 1], # d
[0, 1, 1, 0, 0, 0, 0, 1], # E
[0, 1, 1, 1, 0, 0, 0, 1], # F
]
def reset():
for pin in pins:
pin.value(1)
reset()
switch = Pin(11, Pin.IN)
while True:
if switch.value() == 1:
for i in range(len(digits)):
if switch.value() == 0:
break;
for j in range(len(pins) - 1):
pins[j].value(digits[i][j])
sleep(1)
else:
for i in range(len(digits) - 1, -1, -1):
if switch.value() == 1:
break;
for j in range(len(pins)):
pins[j].value(digits[i][j])
sleep(1)
The Connection Diagram
The simulation
Raspberry Pi Pico Simulator
Schematics
firefox_hpb8xepaev_AtgCnEQ5kX.png
Code
- Untitled file
Untitled file
Python
# My first MicroPython example of a 7-segment# ascending/descending hexadecimal counter# by Anderson Costa, created on 05.06.2021from machine import Pinfrom utime import sleep# A# ---# F | G | B# ---# E | | C# ---# Dpins = [ Pin(2, Pin.OUT), # A Pin(3, Pin.OUT), # B Pin(4, Pin.OUT), # C Pin(5, Pin.OUT), # D Pin(6, Pin.OUT), # E Pin(8, Pin.OUT), # F Pin(7, Pin.OUT), # G Pin(0, Pin.OUT) # DP (not connected)]# Common anode 7 segmentdigits = [ [0, 0, 0, 0, 0, 0, 1, 1], # 0 [1, 0, 0, 1, 1, 1, 1, 1], # 1 [0, 0, 1, 0, 0, 1, 0, 1], # 2 [0, 0, 0, 0, 1, 1, 0, 1], # 3 [1, 0, 0, 1, 1, 0, 0, 1], # 4 [0, 1, 0, 0, 1, 0, 0, 1], # 5 [0, 1, 0, 0, 0, 0, 0, 1], # 6 [0, 0, 0, 1, 1, 1, 1, 1], # 7 [0, 0, 0, 0, 0, 0, 0, 1], # 8 [0, 0, 0, 1, 1, 0, 0, 1], # 9 [0, 0, 0, 1, 0, 0, 0, 1], # a [1, 1, 0, 0, 0, 0, 0, 1], # b [0, 1, 1, 0, 0, 0, 1, 1], # C [1, 0, 0, 0, 0, 1, 0, 1], # d [0, 1, 1, 0, 0, 0, 0, 1], # E [0, 1, 1, 1, 0, 0, 0, 1], # F ]def reset(): for pin in pins: pin.value(1)reset()switch = Pin(11, Pin.IN)while True: if switch.value() == 1: for i in range(len(digits)): if switch.value() == 0: break; for j in range(len(pins) - 1): pins[j].value(digits[i][j]) sleep(1) else: for i in range(len(digits) - 1, -1, -1): if switch.value() == 1: break; for j in range(len(pins)): pins[j].value(digits[i][j]) sleep(1)
Credits
Hack star
75 projects • 101 followers
an Arduino enthusiast and an electronic hobbyist