得捷电子Follow me第2期+任务1234提交
[复制链接]
本帖最后由 王嘉翔 于 2023-11-11 21:52 编辑
感谢得捷电子,感谢电子工程论坛,提供这次活动。
内容一:视频提交
视频地址:【得捷电子Follow me第2期】任务1234提交
内容二:任务提交
任务1:控制屏幕显示中文
代码如下:首先导入相关库(板子,标签,字体),进行字体设置(字体,内容,颜色,位置,大小),最后进行显示。
#导入相关库
import board
from adafruit_display_text import label
from adafruit_bitmap_font import bitmap_font
#字体点阵设置
font = bitmap_font.load_font("/lib/XinYiGuanHeiTi-Regular.pcf")
#内容,颜色,位置,大小
text1 = label.Label(font, text="得捷电子第二期", color=0xFF0000,x = 20,y = 60,scale = 2)
#显示
while True:
board.DISPLAY.show(text1)
上板效果图:
任务2:网络功能使用
该任务分两部分:连接wifi,创建热点。
连接wifi:使用板子自带方式,在setting文件中添加WiFi名称和密码,自动连接。这个功能必须夸赞,如图
创建热点:使用wifi库,代码如下,导入wifi库,使用库函数创建热点,设备均可连接。
#导入库
import board
import wifi
from adafruit_display_text import label
from adafruit_bitmap_font import bitmap_font
#字体表示
font = bitmap_font.load_font("/lib/XinYiGuanHeiTi-Regular.pcf")
#创建wifi
wifi.radio.start_ap("my wifi", "00000000")
text = "wifi名称: my wifi \nwifi密码: 00000000"
text_wifi = label.Label(font, text=text, x=40,y=40,color=0xFFFFFF, scale=1)
while True:
board.DISPLAY.show(text_wifi)
效果图如下:
任务3:控制WS2812B
该任务是使用按键控制板载ws2812,我使用了外接的4*4矩阵按键,使用4个按键对应4种RGB颜色,同时在屏幕上显示相应字体。
代码如下:先导入相关库,重点是neopixel库,外置库;然后设置屏幕显示内容,按键的输入方式,均采用上拉电阻;最后屏幕显示。
#导入相关库
import time
import board
import digitalio
import neopixel
from adafruit_display_text import label
from adafruit_bitmap_font import bitmap_font
#字体点阵设置
font = bitmap_font.load_font("/lib/XinYiGuanHeiTi-Regular.pcf")
#内容,颜色,位置,大小
text_red = label.Label(font, text="红色", color=0xFF0000,x = 70,y = 40,scale = 3)
text_green = label.Label(font, text="绿色", color=0x00FF00,x = 70,y = 40,scale = 3)
text_bule = label.Label(font, text="蓝色", color=0x0000FF,x = 70,y = 40,scale = 3)
text_flow = label.Label(font, text="白色", color=0xFFFFFF,x = 70,y = 40,scale = 3)
#关于LED的定义**************************************************************************
pixe1 = neopixel.NeoPixel(board.NEOPIXEL,1)
# 亮度
pixe1.brightness = 0.1
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BULE = (0, 0, 255)
WHITE = (255,255,255)
pin1 = digitalio.DigitalInOut(board.A1)
# BOOT0按键设置为输入端
pin1.direction = digitalio.Direction.INPUT
# BOOT0按键设置为上拉电阻
pin1.pull = digitalio.Pull.UP
pin2 = digitalio.DigitalInOut(board.A2)
# BOOT0按键设置为输入端
pin2.direction = digitalio.Direction.INPUT
# BOOT0按键设置为上拉电阻
pin2.pull = digitalio.Pull.UP
pin3 = digitalio.DigitalInOut(board.A3)
# BOOT0按键设置为输入端
pin3.direction = digitalio.Direction.INPUT
# BOOT0按键设置为上拉电阻
pin3.pull = digitalio.Pull.UP
pin4 = digitalio.DigitalInOut(board.A4)
# BOOT0按键设置为输入端
pin4.direction = digitalio.Direction.INPUT
# BOOT0按键设置为上拉电阻
pin4.pull = digitalio.Pull.UP
while True:
#按A1键,显示红色
if pin1.value==False:
board.DISPLAY.show(text_red)
pixe1.fill(RED)
#按A2键,显示绿色
if pin2.value==False:
board.DISPLAY.show(text_green)
pixe1.fill(GREEN)
#按A3键,显示蓝色
if pin3.value==False:
board.DISPLAY.show(text_bule)
pixe1.fill(BULE)
#按A4键,显示白色
if pin4.value==False:
board.DISPLAY.show(text_flow)
pixe1.fill(WHITE)
任务4:WS2812B效果控制
该任务采用一个Neopixel(16灯珠)控制器,通过按键和屏幕切换展示,就是在上述任务3的基础上,增加了一个灯,我在此基础上,用python的for函数写了一个流水灯效果。
代码如下:先导入相关库,然后设置屏幕显示内容,按键的输入方式,均采用上拉电阻;最后屏幕显示。
显示效果链接:任务4效果
#导入相关库
import time
import board
import digitalio
import neopixel
from adafruit_display_text import label
from adafruit_bitmap_font import bitmap_font
#字体点阵设置
font = bitmap_font.load_font("/lib/XinYiGuanHeiTi-Regular.pcf")
#内容,颜色,位置,大小
text_red = label.Label(font, text="红色", color=0xFF0000,x = 70,y = 40,scale = 3)
text_green = label.Label(font, text="绿色", color=0x00FF00,x = 70,y = 40,scale = 3)
text_bule = label.Label(font, text="蓝色", color=0x0000FF,x = 70,y = 40,scale = 3)
text_flow = label.Label(font, text="流水灯", color=0xFFFFFF,x = 70,y = 40,scale = 3)
#关于LED的定义**************************************************************************
pixe1 = neopixel.NeoPixel(board.NEOPIXEL,1)
pixe2 = neopixel.NeoPixel(board.A0,16)
# 亮度
pixe1.brightness = 0.1
pixe2.brightness = 0.1
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BULE = (0, 0, 255)
WHITE = (255,255,255)
pin1 = digitalio.DigitalInOut(board.A1)
# BOOT0按键设置为输入端
pin1.direction = digitalio.Direction.INPUT
# BOOT0按键设置为上拉电阻
pin1.pull = digitalio.Pull.UP
pin2 = digitalio.DigitalInOut(board.A2)
# BOOT0按键设置为输入端
pin2.direction = digitalio.Direction.INPUT
# BOOT0按键设置为上拉电阻
pin2.pull = digitalio.Pull.UP
pin3 = digitalio.DigitalInOut(board.A3)
# BOOT0按键设置为输入端
pin3.direction = digitalio.Direction.INPUT
# BOOT0按键设置为上拉电阻
pin3.pull = digitalio.Pull.UP
pin4 = digitalio.DigitalInOut(board.A4)
# BOOT0按键设置为输入端
pin4.direction = digitalio.Direction.INPUT
# BOOT0按键设置为上拉电阻
pin4.pull = digitalio.Pull.UP
while True:
#按A1键,显示红色
if pin1.value==False:
board.DISPLAY.show(text_red)
pixe1.fill(RED)
pixe2.fill(RED)
#按A2键,显示绿色
if pin2.value==False:
board.DISPLAY.show(text_green)
pixe1.fill(GREEN)
pixe2.fill(GREEN)
#按A3键,显示蓝色
if pin3.value==False:
board.DISPLAY.show(text_bule)
pixe1.fill(BULE)
pixe2.fill(BULE)
#按A4键,显示流水灯
if pin4.value==False:
board.DISPLAY.show(text_flow)
pixe1.fill(WHITE)
a = 0
for i in range(0,15):
a = i % 15
b = (i+1) % 15
c = (i+2) % 15
d = (i+3) % 15
pixe2.fill((0,0,0))
pixe2[a] = ((255,0,0))
pixe2[b] = ((0,255,0))
pixe2[c] = ((0,0,255))
pixe2[d] = ((255,255,255))
time.sleep(0.1)
心得体会:因为我用FPGA板子比较多,所以简单做了对比,ESP32板子集成度非常高,优化了上手难度,尤其是非常多的库函数,在创意实现和功能实现上非常便捷,还有就是烧录非常容易,这款板子我将在明年送给高考完的弟弟,作为年轻人的第一块开发板!
内容三:代码提交
代码地址:【得捷电子第二期】任务1234代码
网站比较慢,可直接在附件中下载
|