Wokwi硬件在线仿真

Wokwi

  • WoKwi是一个很酷的支持Arduino、ESP32、树莓派Pico在线仿真学习网站。

  • 尤其适合手上没有硬件的,可以用这个网站搭建电路进行仿真,接下来介绍一个Micropython+esp32+数码管的一个电路。

官网,官方帮助文档

支持大部分arduino框架的板子,以及micropython

具体使用大家自己摸索一下就ok,网站上还有很多有意思的例程,大家可以进去学习,很快就可以掌握这个网站的使用方法。

Micropython+ESP32+数码管

如图

1 数码管

数码管也就是由几个led组成,数码管显示数字本质上,就是点亮led,在图形上构成数字。

我们想要显示1,那么 adefg dp数码管灭,bc数码管亮就ok了,代码也很简单,接下来我没们来分析代码。

  • 1 管脚

对应8个led,给他们在esp32上分配管脚,你可以根据你的爱好改变。

import machine
import time
A = machine.Pin(13, machine.Pin.OUT)   
B = machine.Pin(12, machine.Pin.OUT)   
C = machine.Pin(14, machine.Pin.OUT)   
D = machine.Pin(27, machine.Pin.OUT)  
E = machine.Pin(26, machine.Pin.OUT) 
F = machine.Pin(25, machine.Pin.OUT)   
G = machine.Pin(33, machine.Pin.OUT)   
H = machine.Pin(32, machine.Pin.OUT)   
  • 2 显示数组

如果我们要显示9,我们分别对8个led进行操作,那么显示一个数字就需要8行代码,还很麻烦,但如果我们提前把每一个数字所对应led的状态列出来,当需要的时候通过提前存放的这样一个关系进行点亮,是不是就很方便了

number_led = [A, B, C, D, E, F, G, H]
number_dict = {
    0: "11111100",
    1: "01100000",
    2: "11011010",
    3: "11110010",
    4: "01100110",
    5: "10110110",
    6: "10111110",
    7: "11100000",
    8: "11111110",
    9: "11110110",
    "open": "11111111",
    "close": "00000000"
}
  • 3 来显示一个数字9吧

来显示一个数字9吧

#共阳数码管
import machine
import time
A = machine.Pin(13, machine.Pin.OUT)   
B = machine.Pin(12, machine.Pin.OUT)   
C = machine.Pin(14, machine.Pin.OUT)   
D = machine.Pin(27, machine.Pin.OUT)  
E = machine.Pin(26, machine.Pin.OUT) 
F = machine.Pin(25, machine.Pin.OUT)   
G = machine.Pin(33, machine.Pin.OUT)   
H = machine.Pin(32, machine.Pin.OUT)   

number_led = [A, B, C, D, E, F, G, H]
number_dict = {
    0: "11111100",
    1: "01100000",
    2: "11011010",
    3: "11110010",
    4: "01100110",
    5: "10110110",
    6: "10111110",
    7: "11100000",
    8: "11111110",
    9: "11110110",
    "open": "11111111",
    "close": "00000000"
}
def show_num(num):
    if number_dict.get(num):
        i = 0
        for bit in number_dict.get(num):
            if bit == "0":
                number_led[i].value(1)
            else:
                number_led[i].value(0)
            i += 1

def main():
    for i in range(0,10):
        show_num(i)
        time.sleep(0.3)
    

if __name__ == "__main__":
    main()

项目地址1,项目地址2

ESP32开发板实现跑马灯,Wokwi仿真及数码管使用

posted @ 2023-06-21 13:01  Sunny_SunShine  阅读(1069)  评论(0编辑  收藏  举报