ESP32 Micropython编程(Thonny)02---- Wokwi仿真及数码管使用

本文在上文的基础上,进一步体验一下micropython的使用,如果大家手上没有硬件也不要紧。
给这里大家介绍一个免费在线仿真网站,以及用这个网站搭建一个Micropython+esp32+数码管的一个电路

一. Wokwi

WOKWI 是一个很酷的支持Arduino、ESP32、树莓派Pico在线仿真学习的网站。 :
官网
官方帮助文档
支持大部分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吧

仔细体会一下,很方便的一种方式。

#共阳数码管
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()

这一篇就到这里喽,下面会更新esp32的特色,网络方面的内容,以及使用电脑通过udp控制esp32led的亮灭。

猜你喜欢

转载自blog.csdn.net/amimax/article/details/127826015