Let‘s do 第三季[电子测光表] 过程贴简介
本章节我们将来学习如何点亮板载的TFT屏幕, 以及使用I2C驱动BH1750. 驱动360度舵机, 以及按键的读取.
板载的TFT屏幕显示.
在点亮屏幕的时候我们可以根据Adafruit的教程来进行,我们可以根据自己的板子在Adafruit的官网中找到对应的tutorial. 由于我使用的板子为ESP-32S3 feature, 所以对应的点亮TFT屏幕的教程链接在
https://learn.adafruit.com/adafruit-esp32-s2-tft-feather/tft-basics.
在上文中, Adafruit主要对TFT屏幕的特性进行了介绍,比如说分辨率为114 * 240. 由于CircuitPython的缘故,如果使用REPL,那么输出会直接显示在屏幕上.比如说运行简单输出时的效果如下所示.
import time while True: print("Hello, World!") time.sleep(4)
之后便演示了几种使用TFT显示内容的几种方式, 第一种使用TFT显示简单的文字信息.我们可以点击页面上的Download project bundle 来直接下载project.
在我们直接使用这个project之前,还需要注意的一点是: 确认自己的CircuitPython的版本, 我们可以在Thonny中先按下Ctrl + c 来进入REPL然后输入下面的代码
import os print(os.uname())
输出如下所示
之后找到下载的project中对应版本的库,将其拷贝到开发版的LIB目录下(如果lib目录下没有其他文件也可以直接替换)
由于我显示的release 版本为9.+, 所以我选择是 9.x的lib.
此时如果重启开发板的话,既可看到屏幕上已经显示了 Hello, world的字符.如下图所示
此时我们还可以根据上述的教程来使其TFT屏幕显示图片信息.我们可以下载https://learn.adafruit.com/elements/3111122/download?type=zip 的project.然后根据上述的步骤进行工程文件的替换. 此时可以看到屏幕上已经可以显示一个蟒蛇的图片.
至此屏幕显示的部分已经结束.
按键读取
CirclePython的按键读取主要分为两
l 根据board库 找到板载的资源定义,初始化PIN
l 读取PIN状态
我们将按键模块连接到开发版上, 黑色接GND, 红色接3V3, 其他的两根线则是为按钮的除法按键,我们可以把它们接到任意的可用IO上. 我这里接的是D12 和 D13
import board import digitalio import time # 初始化 D13 和 D12 引脚为输入 pin_d13 = digitalio.DigitalInOut(board.D13) pin_d13.direction = digitalio.Direction.INPUT pin_d13.pull = digitalio.Pull.UP # 可选:启用上拉电阻 pin_d12 = digitalio.DigitalInOut(board.D12) pin_d12.direction = digitalio.Direction.INPUT pin_d12.pull = digitalio.Pull.UP # 可选:启用上拉电阻 while True: # 读取输入状态 d13_state = pin_d13.value # True 表示高电平,False 表示低电平 d12_state = pin_d12.value time.sleep(0.5) print(f"D13: {'HIGH' if d13_state else 'LOW'}, D12: {'HIGH' if d12_state else 'LOW'}") |
代码如上所示, 当按钮按下的时候即可读取,IO的状态并且显示在屏幕上.
屏幕显示部分
至此按键部分完成.
BH1750 数据读取
BH1750介绍
BH1750一款高精度环境光强传感器,基于 I²C 接口,广泛应用于各种需要测量光照强度的场景,例如智能家居、手持设备、显示器背光调节以及户外光线监测设备。
BH1750 提供三种工作模式以适应不同的测量需求:
l 连续高分辨率模式 (H-Resolution Mode),分辨率为 1 lx,典型测量时间为 120ms;
l 连续低分辨率模式 (L-Resolution Mode),分辨率为 4 lx,典型测量时间为 16ms;
l 以及单次测量模式 (One-Time Measurement Mode),在完成测量后自动进入休眠状态以节省功耗。
如何使用
根据教程文档, 找到GITHUB的仓库https://github.com/adafruit/Adafruit_CircuitPython_BH1750/tree/main.下载工程文件
下载完成后,将项目工程中的adafruit_bh1750.py 拷贝到开发版的lib目录下,同时将demo下的bh1750_simpletest.py 也拷贝到开发版的根目录下.
之后我们便可以运行simpletest文件.
接线图如下
只需要保证SCL接到开发板的SCL SDA接到SDA即可.
运行bh1750_simpletest.py. 便可以在开发板上看到当前的环境光信息.
此时BH1750读取任务完成.
总结
在本次任务的实现过程中,我通过 CircuitPython 官网学习了其基础用法,包括如何使用 board 模块访问引脚与操作 GPIO,利用 REPL 交互式环境进行调试,以及下载并导入外部库将其集成到驱动程序中。这些技能的掌握让我能够更加高效地完成任务,同时对 CircuitPython 的生态系统有了更深入的理解。