文档章节

MicroPython控制8*8LED点阵显示温度

bodasisiter
 bodasisiter
发布于 2016/09/24 16:53
字数 882
阅读 122
收藏 1

    MicroPython顾名思义就是可以在单片机上跑的Python,借助Micro Python,用户完全可以通过Python脚本语言实现硬件底层的访问和控制,比如说控制LED灯泡、LCD显示器、读取电压、控制电机、访问SD卡等。目前支持MicroPython的开发板有好几种,下面就以TPYBoard为例,简单介绍一下简易温度传感器的制作方法。

                    

    1、实验目的


    1. 学习在PC机系统中扩展简单I/O 接口的方法。
    2. 进一步学习编制数据输出程序的设计方法。
    3. 学习DS18B20的接线方法,并利用DS18B20检测当前温度
    3. 学习8*8LED点阵接线方法,并将当前温度显示


    2、所需元器件


    TPYBoard板子一块
    数据线一条
    杜邦线若干
    8*8LED点阵一个
    DS18B20温度传感器一个


    3、学习DS18B20的接线方法,检测当前温度

                  

    先看一下DS18B20针脚含义,如上图:


    TPYBoard的针脚与DS18B20的针脚对应关系如下:


    TPYBoard       DS18B20
    ----------------
    # 3V3   or any Pin  => VDD
    # any   Pin        =>   DO
    #   GND           => GND


    还是看不明白的话,直接上针脚编号


    TPYBoard       LCD5110
    ----------------------------
    3.3v        =>   VDD
    GND        =>   GND
    Y10         =>   DO


    接线ok后,在MicroPython的源码目录中,进入drivers\onewire\目录,然后将目录下的文件ds18x20.py和onewire.py复制到PYBFLASH磁盘的根目录。复制文件后要安全退出磁盘,然后重新接入,不然找不到文件,即可运行main.py文件了,打印温度,即可用Putty看到当前的温度。


    main.py源代码:

#main.py
import pyb
from pyb import Pin
from ds18x20 import DS18X20
Pin("Y11",Pin.OUT_PP).low()#GND
Pin("Y9",Pin.OUT_PP).high()#VCC
pyb.delay(100)
DQ=DS18X20(Pin('Y10'))#DQ
while True:
       tem = DQ.read_temp()
       print(tem)
       pyb.delay(1000)

    4、点亮8*8LED点阵

    点阵后面有两排针脚,一排以1开头,即1-8针脚,一排以9开头,即9-16针脚,上图中〇中的数字对应的即为针脚的对应的数字,当ROW 的PIN NO.高电平,COL PIN NO.低电平时候,我们的LED即全部点亮了,为了方便操作行和列,我们可以将ROW的8个引脚接到我们TPYBoard的X1-X8,COL的8个引脚接到我们TPYBoard的Y1-Y8,这样我们控制X引脚Y引脚就可以控制哪个点亮跟灭了,想显示任何字都没问题,快来试试吧。


    5、点将温度显示在8*8LED点阵上


    接线成功以后,我们将测试出温度通过分割函数将十位,个位,小数点,以及后面的数字显示出来,代码如下:

import pyb
from pyb import Pin
from ds18x20 import DS18X20
x_PIN = [Pin(i, Pin.OUT_PP) for i in ['X1','X2','X3','X4','X5','X6','X7','X8']]
y_PIN = [Pin(i, Pin.OUT_PP) for i in ['Y1','Y2','Y3','Y4','Y5','Y6','Y7','Y8']]
temp=['0000,0110,0110,0110,0110,0110,0110,0000','1101,1101,1101,1101,1101,1101,1101,1101,
'0000,1110,1110,0000,0111,0111,0111,0000','0000,1110,1110,0000,1110,1110,1110,0000',
'0101,0101,0101,0000,1101,1101,1101,1101','0000,0111,0111,0000,1110,1110,1110,0000',
'0000,0111,0111,0000,0110,0110,0110,0000','0000,1110,1110,1110,1110,1110,1110,1110',
'0000,0110,0110,0000,0110,0110,0110,0000','0000,0110,0110,0000,1110,1110,1110,0000']
tempValue=0
def show(l_num,r_num):
    flag=0
    for x_ in range(0,8):
        for x_ in range(0,8):
            if x_!=flag:
                x_PIN[x_].value(0)
        left_ = temp[l_num]
        left_item=left_.split(',')
        right_ = temp[r_num]
        right_item=right_.split(',')
        li_l=left_item[flag]
        li_r=right_item[flag]
        y_PIN[0].value(int(li_l[:1]))
        y_PIN[1].value(int(li_l[1:2]))
        y_PIN[2].value(int(li_l[2:3]))
        y_PIN[3].value(int(li_l[3:4]))
        y_PIN[4].value(int(li_r[:1]))
        y_PIN[5].value(int(li_r[1:2]))
        y_PIN[6].value(int(li_r[2:3]))
        y_PIN[7].value(int(li_r[3:4]))
        x_PIN[flag].value(1)
        flag=flag+1
        pyb.delay(2)
def display(time_,l_num,r_num):
    for x in range(0,time_):
        for y in range(0,110):
            show(l_num,r_num)
if __name__=='__main__':
    #time_t=Timer(4,freq=5,callback=randSensor)
    DQ=DS18X20(Pin('Y10'))#DQ
    while 1:
        tempValue =int(DQ.read_temp())
        print(tempValue)
        l_n=tempValue//10
        r_n=tempValue%10
        print(l_n)
        print(r_n)
        display(60,l_n,r_n)
        for i in x_PIN:
            i.value(0)

 

© 著作权归作者所有

共有 人打赏支持
bodasisiter
粉丝 19
博文 176
码字总数 158043
作品 0
潍坊
私信 提问
[Micropython]TPYBoard v10x拼插编程实验 点亮心形点阵

一、什么是TPYBoard开发板 TPYBoard是以遵照MIT许可的MicroPython为基础,由TurnipSmart公司制作的一款MicroPython开发板,它基于STM32F405单片机,通过USB接口进行数据传输。该开发板内置4...

bodasisiter
04/17
0
0
人生苦短,用 RT-Thread MicroPython 享受编程的乐趣

在 i.MX RT1050 EVK 开发板上实现这样的一个读取板载的 6 轴传感器信息和系统 CPU 利用率等信息,实时显示到网页中效果,你猜需要多少代码? 事实上 RT-Thread 的同事利用 RT-Thread MicroP...

RTThread物联网操作系统
05/02
0
0
[MicroPython]STM32F407开发板控制BMP180测量气压

1.实验目的 1. 学习在PC机系统中扩展简单I/O 接口的方法。 2. 学习BMP180测量气压的方法。 3. 学习F407 Micropython开发板 I2C接口的用法。 2.所需元器件 F407 Micropython开发板一块 BMP180...

bodasisiter
08/09
0
0
MicroPython拼插编程实例:点亮心形8x8点阵

一、什么是TPYBoard开发板 TPYBoard是以遵照MIT许可的MicroPython为基础的一款MicroPython开发板,它基于STM32F405单片机,通过USB接口进行数据传输。该开发板内置4个LED灯、一个加速传感器,...

bodasisiter
09/04
0
0
当520遇到MicroPython,单身创客狗也能很开“芯”~

  520即将到达战场!极客狗特别是单身极客狗表示即将受到一万点暴击伤害。和大多数单身狗一样,小编此时内心的阴影面积是无法计算的!就连极客狗们的最爱——开发板都“坐”不住了,在520...

bodasisiter
2017/05/20
4
0

没有更多内容

加载失败,请刷新页面

加载更多

错误: 找不到或无法加载主类

在IDEA的使用过程中,经常断掉服务或者重启服务,最近断掉服务重启时突然遇到了一个启动报错: 错误:找不到或无法加载主类 猜测:1,未能成功编译; 尝试:菜单---》Build---》Rebuild Pro...

安小乐
17分钟前
1
0
vue路由传参,刷新页面,引发的bug

最近遇到一个bug 通过vue路由跳转到页面, 然后接参控制(v-if ),成功显示 而刷新页面,显示失败。 苦苦地找了半天原因,打印参数发现正确,再打印下类型......,路由跳过来会保持传参时的...

hanbb
18分钟前
0
0
【58沈剑 架构师之路】InnoDB,select为啥会阻塞insert?

MySQL的InnoDB的细粒度行锁,是它最吸引人的特性之一。 但是,如《InnoDB,5项最佳实践》所述,如果查询没有命中索引,也将退化为表锁。 InnoDB的细粒度锁,是实现在索引记录上的。 一,Inn...

张锦飞
21分钟前
0
0
冒泡,选择和插入排序比较

/** * 冒泡排序,两层嵌套循环,内层局部比较后,找出最大或者最小数据并交换数据,使其局部有序,外层用于比较剩余元素,相较于选择排序,选择排序相当于是冒泡的一个优化版本(减少了交换...

strict_nerd
22分钟前
0
0
html内联(行内)元素、块级(块状)元素和行内块元素分类

HTML可以将元素分类方式分为内联(行内)元素、块级(块状)元素和行内块元素三种。 注:HTML是标签语言,那么既然是标签,就可以自己定义一些自己元素(如<wode>自定义的元素</wode>等),自...

NB-One
28分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部