这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » Let‘s do 第三季 [电子测光表] 过程帖-驱动屏幕,按键,BH1750

共1条 1/1 1 跳转至

Let‘s do 第三季 [电子测光表] 过程帖-驱动屏幕,按键,BH1750

菜鸟
2024-11-23 03:35:22     打赏

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.

image.png

在上文中, Adafruit主要对TFT屏幕的特性进行了介绍,比如说分辨率为114 * 240. 由于CircuitPython的缘故,如果使用REPL,那么输出会直接显示在屏幕上.比如说运行简单输出时的效果如下所示.

import time
while True:
  print("Hello, World!")
  time.sleep(4)


image.png

 

之后便演示了几种使用TFT显示内容的几种方式, 第一种使用TFT显示简单的文字信息.我们可以点击页面上的Download project bundle 来直接下载project.

 

在我们直接使用这个project之前,还需要注意的一点是: 确认自己的CircuitPython的版本, 我们可以在Thonny中先按下Ctrl + c 来进入REPL然后输入下面的代码

 

import os
print(os.uname())

输出如下所示

image.png

之后找到下载的project中对应版本的库,将其拷贝到开发版的LIB目录下(如果lib目录下没有其他文件也可以直接替换)

image.png

由于我显示的release 版本为9.+, 所以我选择是 9.x的lib.

image.png

 

此时如果重启开发板的话,既可看到屏幕上已经显示了 Hello, world的字符.如下图所示

image.png

此时我们还可以根据上述的教程来使其TFT屏幕显示图片信息.我们可以下载https://learn.adafruit.com/elements/3111122/download?type=zip 的project.然后根据上述的步骤进行工程文件的替换. 此时可以看到屏幕上已经可以显示一个蟒蛇的图片.

image.png

至此屏幕显示的部分已经结束.

 

按键读取


CirclePython的按键读取主要分为两

l  根据board库 找到板载的资源定义,初始化PIN

l  读取PIN状态

image.png

 

我们将按键模块连接到开发版上, 黑色接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的状态并且显示在屏幕上.

image.png

屏幕显示部分

image.png

至此按键部分完成.

 

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.下载工程文件

image.png

 

下载完成后,将项目工程中的adafruit_bh1750.py 拷贝到开发版的lib目录下,同时将demo下的bh1750_simpletest.py 也拷贝到开发版的根目录下.

 image.png

之后我们便可以运行simpletest文件.

接线图如下

image.png

只需要保证SCL接到开发板的SCL SDA接到SDA即可.

运行bh1750_simpletest.py. 便可以在开发板上看到当前的环境光信息.

 image.png

此时BH1750读取任务完成.

 

总结



在本次任务的实现过程中,我通过 CircuitPython 官网学习了其基础用法,包括如何使用 board 模块访问引脚与操作 GPIO,利用 REPL 交互式环境进行调试,以及下载并导入外部库将其集成到驱动程序中。这些技能的掌握让我能够更加高效地完成任务,同时对 CircuitPython 的生态系统有了更深入的理解。

 





关键词: Let‘s do 第三季     电子测光表     BH175    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]