【得捷电子Follow me第2期】i2c读取SHT40 & MCP4725
[复制链接]
最近又有一些时间做diy,之前follow me活动,有个SHT40温湿度探头,还有MCP4723 DAC可以读取温湿度
一、SHT40温湿度探头程序
做个程序,加到之前的天气时钟里。下面是一些心得跟大家分享。具体可以参考
Python & CircuitPython | Adafruit Sensirion SHT40, SHT41 & SHT45 Temperature & Humidity Sensors | Adafruit Learning System
先看看最终程序效果:
下面简单说一下程序。
首先还是引入官方库
import adafruit_sht4x
然后简单初始化SHT40
i2c = board.I2C()
hasSht40 = False
sensor = adafruit_sht4x.SHT4x(i2c)
while not i2c.try_lock():
pass
try:
while True and not hasSht40:
for device_addr in i2c.scan():
print(
"I2C addresses found:",
[hex(device_addr)]
)
if device_addr == 0x44:
hasSht40 = True
print('SHT40 found!')
if not hasSht40:
time.sleep(5)
finally:
i2c.unlock()
规格书里的默认地址
再屏幕上创建两个label
text_temp = label.Label(FONT_CALENDAR, text="",color=0xff0000,
x=130,y=20,
line_spacing=0.7,scale=1)
text_humi = label.Label(FONT_CALENDAR, text="",color=0x00ff00,
x=130,y=50,
line_spacing=0.7,scale=1)
然后就显示在屏幕上
if hasSht40:
temperature, relative_humidity = sensor.measurements
text_humi.text = '%0.1f %%' % relative_humidity
text_temp.text = '%0.1f C' % temperature
二、MCP4725 DAC程序
想了好久DAC能做什么,最后想到做一个信号发生器(当然是很简陋简单版本的,因为我发现这DAC转换的时间还是比较长的)
参考以下的网址驱动MCP4725
Python & CircuitPython | MCP4725 12-Bit DAC Tutorial | Adafruit Learning System
我简单解释一下程序,首先还是引用对应的库,然后初始化MCP4725
import board
import busio
import adafruit_mcp4725
# Initialize I2C bus.
i2c = busio.I2C(board.SCL, board.SDA)
# Initialize MCP4725.
dac = adafruit_mcp4725.MCP4725(i2c)
MCP4725的使用也非常简单,只要更改dac.raw_value的值就可以,这个值的范围是0-4095,不能超过范围,不然会报错
然后其他就没什么好说了,我简单加了个按键切换波形,产生了三个几赫兹的波形(有些丢人),后面再想想DAC可以做什么东东。波形图如下
正弦波只要引入math库就有正弦函数可以使用,输入的值是弧度制的,要转换一下
代码已经上传了,有需要的朋友可以看看,有什么问题可以回帖问问我哈
circuitPython SHT40 MCP4725-嵌入式开发相关资料下载-EEWORLD下载中心
|