- 2023-12-07
-
加入了学习《Follow me第三期任务展示视频》,观看 Follow me第三期任务展示视频
-
发表了主题帖:
【得捷电子Follow me第3期】任务提交
# 一、总结视频
[followme第三期任务视频展示](http://https://training.eeworld.com.cn/video/38578 "followme第三期任务视频展示")
[localvideo]e71ce1ac1f9fdccc55df11083a0a9a39[/localvideo]
# 二、任务总结报告
## 任务1:使用MicroPython系统
熟悉Seeed Studio XIAO ESP32C3开发板基本操作,安装esptool,并给开发板刷写MicroPython系统,完成入门程序的运行
搭配器件:Seeed Studio XIAO ESP32C3
在收到货以后我就直接下载了电脑上的Thonny,它是自带的一个ESP tool的安装环境,所以在我们把开发板插进电脑上之后,直接点击右下角的配置解释器。就可以看到右下角有蓝色字体显示安装或更新microPython(esptool)。
由于我在micro Python的官网上并没有找到这个开发板对应的完美固件,所以我就直接用了通用的ESP32C3的固件(ESP32_GENERIC_C3-20231005-v1.21.0)。可能这个固件有一点不合适吧,但是没办法自己编译,就这样先用着吧。然后选择对应的端口,其他的都保持默认,点击安装就好了
等待它的进度条走完,microPython固件就刷进去了。然后把数据线拔了重新接上,在界面右下角选择MicroPython(ESP32)就可以连上开发板了,接着新建一个main.py的文件,输入
```
import time
from machine import Pin
led = Pin(10,Pin.OUT)
while True :
led.value( not led.value())
time.sleep(1)
```
然后保存运行,可以看到对应接口的LED在闪烁,固件成功运行!
## 任务2:驱动扩展板上的OLED屏幕
使用扩展板上的OLED屏幕显示文字和图形
搭配器件:Seeed Studio XIAO ESP32C3、Seeed Studio Expansion Board Base for XIAO
启动thonny之后可以看到左上角有个工具,还有一个管理库的选项。在连接开发板后,点击管理库,可以下载并安装所需要的一些外置函数库。
但是不知道为什么我在更新了4.14版本后的thonny没有完全下载到SSD 1306的库,它只是最基本的函数,没有任何其他的函数。
所以我就参照网上大神的一些方案,自己重新编写了SSD 1306的函数库,可以画各种形状,还有画立方体,显示中文文字之类的功能。
### ssd1306.py
```
import framebuf
import fonts
class SSD1306():
def __init__(self,external_vcc):
self.width = 128
self.height = 64
self.external_vcc = external_vcc
self.pages = 8
self.init_display()
def init_display(self):
for cmd in (
0xae, # 熄屏
0x20, 0x00, # 水平寻址
0x40, # 显示起始行地址
0xa1, # 正常列扫描
0xa8, 63, # 复用率
0xc8, # 正常行扫描
0xd3, 0x00, #设置COM偏移量,即屏幕像上偏移的行数
0xda, 0x12, #使用备选引脚配置,并禁用左右反置
0xd5, 0x80, # 设置分频因子与振荡频率
0xd9, 0x22 if self.external_vcc else 0xf1,
0xdb, 0x30, # 设置vcomh电压为0.83*Vcc
0x81, 0xff, # 亮度最大
0xa4, # 使用GDDRAM中的数据显示
0xa6, # 设置GDDRAM中的0对应于像素点的暗
# 关闭电荷泵
0x8d, 0x10 if self.external_vcc else 0x14,
0xAD,
0x30,
0xAE | 0x01,
): # on#开屏
self.write_cmd(cmd)
self.fill(0)
self.show()
#设置水平滚动,参数:滚动区域(滚动起始页,滚动结束页),滚动方向(默认向左,填0向右),滚动速度(0-7)
def h_scroll(self,start=0,end=7,d=1,speed=0):
self.write_cmd(0x2e) # 关闭滚动
self.write_cmd(0x26+d) # 向左
self.write_cmd(0x00)
self.write_cmd(start) # 起始页
self.write_cmd(speed) # 滚动帧率
self.write_cmd(end) # 结束页
self.write_cmd(0x00)
self.write_cmd(0xff)
self.write_cmd(0x2f) # 开启滚动
#默认开启竖直向上滚动与水平向右滚动
def scroll(self,vScrollOn=0,vStart=0,vEnd=63,vSpeed=1,hScrollOn=1,direction=0,
hSpeed=0,hScrollStartPage=0,hScrollEndPage=7,hScrollStartColumn=0,hScrollEndColumn=127):
if vScrollOn:
self.write_cmd(0x2e)# 关闭滚动
self.write_cmd(0xa3)#设置竖直滚动命令
self.write_cmd(vStart)#竖直滚动开始行
self.write_cmd(vEnd)#竖直滚动结束行
self.write_cmd(0x29+direction)#水平滚动方向向右
self.write_cmd(hScrollOn) # 0,关闭水平滚动,1开启
self.write_cmd(hScrollStartPage)# 水平滚动起始页
self.write_cmd(hSpeed)#设置滚动速度0-7
self.write_cmd(hScrollEndPage)# 水平滚动结束页
self.write_cmd(vSpeed) # 每一帧的垂直偏移量
self.write_cmd(hScrollStartColumn)#水平滚动区域的起始列
self.write_cmd(hScrollEndColumn)#水平滚动区域的结束列
self.write_cmd(0x2f)# 开启滚动
#关闭oled
def poweroff(self):
self.write_cmd(0xae | 0x00)#熄屏
#亮度,0x00-0xff
def contrast(self, contrast):
self.write_cmd(0x81)
self.write_cmd(contrast)
#正反相显示,输入1则反相,默认正相
def invert(self, invert=0):
self.write_cmd(0xa6 | invert)
# 显示
def show(self):
self.write_cmd(0x21) # 告诉GDDRAM列数
self.write_cmd(0) # 列数从0-127
self.write_cmd(127)
self.write_cmd(0x22) # 告诉GDDRAM行数
self.write_cmd(0) # 页数从0-7
self.write_cmd(7)
self.write_framebuf() # 写入1bit地址和1024bit数据
# 水平翻转,0翻转,1正常(默认)
def hv(self,b=1):
self.write_cmd(0xc0 | b
- 2023-12-03
-
回复了主题帖:
有奖话题:聊聊,国产最能打的接口芯片?
CH340,不服来战哈哈哈
-
回复了主题帖:
【国产高性能运动控制MCU 先楫HPM5361】基于RT-Thread Studio搭建开发环境
上手方便吗,有没有代码提示的功能
-
上传了资料:
follow me 3任务源代码
- 2023-11-22
-
发表了主题帖:
强求这个M0驱动LVGL还是有点小马拉大车,拉不动了。。。。
内存还是少了点,太极限了,刚刚够LVGL门槛,得花大时间精简代码,太折腾了