(三)MicroPython——数码管
2023-02-18 16:23:34 时间
目录
学习目标
本节我们来使用ESP32和MicroPython来控制数码管,包括一位数码管和四位数码管,具体的原理部分在51已经讲解的非常详细了,就不再赘述。
成果展示
https://player.bilibili.com/player.html?aid=859905932
数码管1
https://player.bilibili.com/player.html?aid=987384504
数码管4
硬件知识
https://blog.csdn.net/weixin_66578482/article/details/124769180
这就是硬件原理部分,不懂得可以看一下之前的笔记。
我觉得本节最难的对方就是面包板的使用,因为是第一次使用。但是后来了解了面包板的构造之后,就觉得比较简单,两边一列连通,中间半排连通,两边彼此不连通,记住这些基本操作之后就觉得简单许多了。
代码
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",
}
def show_number(number):
if number_dict.get(number):
i = 0
for bit in number_dict.get(number):
if bit == "1":
number_led[i].value(1)
else:
number_led[i].value(0)
i += 1
def main():
for i in range(10):
show_number(i)
time.sleep(1)
if __name__ == "__main__":
main()
import machine
import time
led1 = machine.Pin(5, machine.Pin.OUT)
led2 = machine.Pin(18, machine.Pin.OUT)
led3 = machine.Pin(19, machine.Pin.OUT)
led4 = machine.Pin(21, machine.Pin.OUT)
led1.value(0)
led2.value(0)
led3.value(0)
led4.value(0)
number_led_list = [led1, led2, led3, led4]
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"
}
def show_number(number):
if number_dict.get(number):
i = 0
for bit in number_dict.get(number):
if bit == "1":
number_led[i].value(1)
else:
number_led[i].value(0)
i += 1
def show_4_number(number):
if 0 <= number <= 9999:
i = 0
for num in "%04d" % number: # 转换为字符串1
print(num)
show_number(int(num)) # 控制显示数字
light_on(i) # 控制哪一个灯
time.sleep_ms(5)
led1.value(1)
led2.value(1)
led3.value(1)
led4.value(1)
i += 1
def light_on(i):
# 全部设置为0
for led in number_led_list:
led.value(1)
number_led_list[i].value(0)
for i in range(1000, 10000):
for j in range(10):
show_4_number(i)
总结
总体来说还是比较简单的,就是第一次使用面包板,有点不太会,但是学习一下就能正常操作了。
相关文章
- [Python] 函数基本
- [Python] 使用dict和set
- [Python] Python基础字符串
- Python入门:ChainMap 有效管理多个上下文
- 什么是MircoPython?
- [Python] 函数基本
- [Python] 使用dict和set
- [Python] Python基础字符串
- Python 绑定:从 Python 调用 C 或 C++
- Python 没有函数重载?如何用装饰器实现函数重载?
- [oeasy]python0028_直接运行_修改py文件执行权限_设置py文件打开方式
- 这15个顶级Python库,你必须要试试!
- ikun必学!python 画一个简单的只因
- 技术实践:教你用Python搭建gRPC服务
- 带你掌握4种Python 排序算法
- 一文讲全了Python 类和对象内容
- 什么是Python中的套接字编程?
- [Python]介绍
- [Python]第一章(建议收藏)
- 【Python】第二章(条件语句和循环语句)