感谢核桃派和电子发烧友论坛提供的这次机会让我有机会体验核桃派(WalnutPi)ZeroW这款linux开发板,希望可以借这个机会好好学习一下。
I2C,全称为Inter-Integrated Circuit,即“集成电路间”通信,是一种嵌入式总线,用于连接低速度外围设备到处理器和微控制器。I2C总线由Philips(现在的NXP Semiconductors)在1980年代初期开发,目的是简化电子系统中的设备连接。
I2C总线由两根线组成:数据线(SDA)和时钟线(SCL)。这种设计使得I2C总线非常灵活,可以连接多个设备(从设备),并且只需要两根线即可实现通信。
I2C总线的主要特点包括:
I2C总线广泛应用于各种电子设备中,如传感器、EEPROM、实时时钟(RTC)和其他许多类型的外围设备。由于其简单性和灵活性,I2C成为了嵌入式系统中非常流行的通信协议之一。
因为I2C可以接同一个不会有影响,所以都接在I2C1
上,接着上代码:
'''
实验名称:小小气象站雏形
实验平台:核桃派ZeroW
'''
import time,board,busio,adafruit_ssd1306,adafruit_ahtx0,adafruit_bmp280
from digitalio import DigitalInOut
from PIL import Image, ImageDraw, ImageFont
i2c = busio.I2C(board.SCL1, board.SDA1)
sensor = adafruit_ahtx0.AHTx0(i2c)
# #构建BMP280,模块I2C地址为默认的0x76.
bmp280 = adafruit_bmp280.Adafruit_BMP280_I2C(i2c,address=0x76)
disp = adafruit_ssd1306.SSD1306_I2C(128, 64, i2c, addr=0x3C)
bmp280.sea_level_pressure = 1013.25
# 清屏
disp.fill(0)
disp.show()
width = disp.width
height = disp.height
# 单色位图
image = Image.new("1", (width, height))
# 定义绘图对象
draw = ImageDraw.Draw(image)
# 绘制一个黑色填充的矩形以清屏
draw.rectangle((0, 0, width, height), outline=0, fill=0)
top = -2
# 定义字体
font = ImageFont.load_default()
while True:
draw.rectangle((0, 0, width, height), outline=0, fill=0)
draw.text((0, top + 0), "temp: %.2fC" %(sensor.temperature), font=font, fill=255)
draw.text((0, top + 8), "humi: %.2f" %(sensor.temperature), font=font, fill=255)
draw.text((0, top + 16), "Press: %.2fhPa" %(sensor.temperature), font=font, fill=255)
draw.text((0, top + 25), "Alti: %.2fmeters" %(sensor.temperature), font=font, fill=255)
# 显示信息
disp.image(image)
disp.show()
time.sleep(1)
运行一下:
更多回帖