用树莓派pico制作温度显示器
由于Pico有三个模数转换器,还有一个内部用于板载温度传感器的转换器,外设部分又有显示屏,所以想到用显示屏显示芯片的温度。
标签
PICO
姜宇航
更新2021-03-14
2691

近期树莓派发布微控制器领域的树莓派PICO,硬禾学堂又发布了一块带有显示屏的扩展板,正好赶上学校举行paiday的开放日,活动主题就是研究pico。我研究发现pico有一个内部用于板载温度传感器的转换器,所以就想到用显示屏显示芯片温度。

为了开始本次项目,我们需要做好软件和硬件两方面的准备。软件方面我们需要下载Thonny IDE软件来对pico进行编程,本软件是建立在micro python环境上的,编程语言与python基本相同,对新手非常友好。其次,我们要向pico中导入和显示屏有关的库st7789,以便于编程时调用。硬件方面我们要建立好电脑与pico之间的联系。在pico官网上能找到详细的教程,这里就不多做说明。

在建立好联系和准备好软件后,我们就可以开始编程了。作为面向对象的编程软件,我们首先要分配好管脚,确定好全局变量,以便于后期的编程。然后我们需要从屏幕功能有关的库中调用已经设计好的函数来初始化自己的函数:display,来便于我们在屏幕上显示出我们想要显示的东西。在这之后我使用了网络上对温度传感器的开源代码和换算公式算出了芯片所对应的摄氏度数值,将他们化成像素点的坐标,并将这些像素点依次地显示在屏幕上。然后在我的代码中是我使用了if语句来实现对点与点之间的连接。过程中调用了多个display的子函数来实现连线。具体的代码如下。

import uos
import machine
import utime
import st7789 as st7789
from fonts import vga2_8x8 as font1
from fonts import vga1_16x32 as font2
import random


st7789_res = 0
st7789_dc = 1

disp_width = 240
disp_height = 240
CENTER_Y = int(disp_width/2)
CENTER_X = int(disp_height/2)

print(uos.uname())

spi_sck=machine.Pin(2)
spi_tx=machine.Pin(3)
spi0=machine.SPI(0,baudrate=4000000, phase=0, polarity=1, sck=spi_sck, mosi=spi_tx)

print(spi0)
display = st7789.ST7789(spi0, disp_width, disp_width,
reset=machine.Pin(st7789_res, machine.Pin.OUT),
dc=machine.Pin(st7789_dc, machine.Pin.OUT),
xstart=0, ystart=0, rotation=0)

sensor_temp = machine.ADC(4)
conversion_factor = 3.3/(65535)
display.fill(st7789.YELLOW)
vertical=0
horizon=0
while True:
for i in range(80):
read = sensor_temp.read_u16() * conversion_factor
temperature1 = 27- (read - 0.706) / 0.001721
y=sensor_temp.read_u16()
display.pixel(3*i,10*(125-int(temperature1*4)),st7789.BLUE)
if(vertical>(10*(125-int(temperature1*4)))):
display.vline(3*i,10*(125-int(temperature1*4)),vertical-10*((125-int(temperature1*4))),st7789.BLUE)
display.hline(3*i,10*(125-int(temperature1*4)),3,st7789.BLUE)
else:
display.vline(3*i,vertical,10*((125-int(temperature1*4)))-vertical,st7789.BLUE)
display.hline(3*i,10*(125-int(temperature1*4)),3,st7789.BLUE)
vertical=10*(125-int(temperature1*4))
display.text(font2, str(temperature1), 0, 0)
utime.sleep(0.001)
display.fill(st7789.YELLOW)

软硬件
电路图
附件下载
st7789.py
vga1_16x32.py
vga2_8x8.py
团队介绍
个人项目
团队成员
姜宇航
西交利物浦大二电气系学生。
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号