树莓派中python获取GY-85九轴模块信息示例


Posted in Python onDecember 05, 2013

先看效果图

GY-85.py:

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import curses
from time import *
from i2clibraries import i2c_itg3205, i2c_adxl345, i2c_hmc5883l
#==========================================================
#                       GY-85传感器监控
#==========================================================

def displayITG3205(screen, col, temp, x, y, z):
    """
    显示ITG3205读数的方法
    """
    screen.addstr(1, col, "%.1f°℃    " % temp)
    screen.addstr(2, col, "%.1f°/s    " % x)
    screen.addstr(3, col, "%.1f°/s    " % y)
    screen.addstr(4, col, "%.1f°/s    " % z)
def displayADXL345(screen, col, x, y, z):
    """
    显示ADXL345读数的方法
    """
    screen.addstr(1, col, "%.2fmg    " % x)
    screen.addstr(2, col, "%.2fmg    " % y)
    screen.addstr(3, col, "%.2fmg    " % z)
def displayHMC5883L(screen, col, heading, declination, x, y, z):
    """
    显示MC5883L读数的方法
    """
    screen.addstr(1, col, heading + "   ")
    screen.addstr(2, col, declination + "   ")
    screen.addstr(3, col, "%.2f   " % x)
    screen.addstr(4, col, "%.2f   " % y)
    screen.addstr(5, col, "%.2f   " % z)

try:
    myscreen = curses.initscr() #初始化curses
    myscreen.border(0)
    (screen_h, screen_w) = myscreen.getmaxyx() #获得屏幕高宽
    curses.start_color() #设置颜色
    curses.init_pair(1, curses.COLOR_BLACK, curses.COLOR_GREEN) #绿底黑字
    curses.init_pair(2, curses.COLOR_RED, curses.COLOR_BLACK) #白底蓝字
    curses.init_pair(3, curses.COLOR_MAGENTA,curses.COLOR_BLACK) #黑底什么字
    myscreen.clear() #清除画布
    # 计算每块的坐标, 屏幕分3列, 每列显示一个传感器
    col1 = screen_w / 3 * 0
    col2 = screen_w / 3 * 1
    col3 = screen_w / 3 * 2
    # 屏幕横向分三块,每块中间写上标题
    myscreen.addstr(0, int(col1 + screen_w / 3 / 2 - 3), "IGT3205", curses.color_pair(1))
    myscreen.addstr(0, int(col2 + screen_w / 3 / 2 - 4), "ADXL345", curses.color_pair(1))
    myscreen.addstr(0, int(col3 + screen_w / 3 / 2 - 4), "HMC5883L", curses.color_pair(1))

    #画分割线,把屏幕分为3列
    for col in range(1, screen_h):
        myscreen.addstr(col, int(col2), "│")
        myscreen.addstr(col, int(col3), "│")
    # 事先打印IGT3205的各项值的名称
    myscreen.addstr(1, int(col1), "Temp:", curses.color_pair(2))
    myscreen.addstr(2, int(col1), "X   :", curses.color_pair(2))
    myscreen.addstr(3, int(col1), "Y   :", curses.color_pair(2))
    myscreen.addstr(4, int(col1), "z   :", curses.color_pair(2))
    # 事先打印ADXL345的各项值的名称
    myscreen.addstr(1, int(col2) + 1, "X:", curses.color_pair(2))
    myscreen.addstr(2, int(col2) + 1, "Y:", curses.color_pair(2))
    myscreen.addstr(3, int(col2) + 1, "z:", curses.color_pair(2))
    # 事先打印HMC5883L的各项值的名称
    myscreen.addstr(1, int(col3) + 1, "Heading:    ", curses.color_pair(2))
    myscreen.addstr(2, int(col3) + 1, "Declination:", curses.color_pair(2))
    myscreen.addstr(3, int(col3) + 1, "X:          ", curses.color_pair(2))
    myscreen.addstr(4, int(col3) + 1, "Y:          ", curses.color_pair(2))
    myscreen.addstr(5, int(col3) + 1, "z:          ", curses.color_pair(2))
    # 初始化传感器
    itg3205 = i2c_itg3205.i2c_itg3205(0)
    adxl345 = i2c_adxl345.i2c_adxl345(0)
    hmc5883l = i2c_hmc5883l.i2c_hmc5883l(0)
    hmc5883l.setContinuousMode() #设置为持续更新模式
    hmc5883l.setDeclination(9,54) #设置真北磁偏角补偿
    while True:
        #读取itg3205数据
        (itgready, dataready) = itg3205.getInterruptStatus()    
        if dataready:
            temp = itg3205.getDieTemperature()
            (x, y, z) = itg3205.getDegPerSecAxes() 
            displayITG3205(myscreen, 6, temp, x, y, z) #刷新画布
        #读取adxl345数据
        (x, y, z) = adxl345.getAxes()
        displayADXL345(myscreen, int(col2) + 4, x, y, z) #刷新画布
        #读取hmc5883l数据
        (x, y, z) = hmc5883l.getAxes()
        heading = hmc5883l.getHeadingString() #获取指向角度
        declination = hmc5883l.getDeclinationString() #获取磁偏角补偿信息
        displayHMC5883L(myscreen, int(col3) + 13, heading, declination, x, y, z) #刷新画布
        myscreen.refresh() #应用画布
        sleep(0.1) #暂停0.1秒
    myscreen.getch()
finally:
    curses.endwin()
Python 相关文章推荐
python批量下载图片的三种方法
Apr 22 Python
python实现dict版图遍历示例
Feb 19 Python
数据挖掘之Apriori算法详解和Python实现代码分享
Nov 07 Python
Python判断变量是否为Json格式的字符串示例
May 03 Python
Python程序员面试题 你必须提前准备!
Jan 16 Python
python 将有序数组转换为二叉树的方法
Mar 26 Python
docker django无法访问redis容器的解决方法
Aug 21 Python
python小程序基于Jupyter实现天气查询的方法
Mar 27 Python
服务器端jupyter notebook映射到本地浏览器的操作
Apr 14 Python
Python web如何在IIS发布应用过程解析
May 27 Python
pandas 数据类型转换的实现
Dec 29 Python
python爬虫用request库处理cookie的实例讲解
Feb 20 Python
python线程锁(thread)学习示例
Dec 04 #Python
pyv8学习python和javascript变量进行交互
Dec 04 #Python
python使用PyV8执行javascript代码示例分享
Dec 04 #Python
python解析xml文件实例分享
Dec 04 #Python
python抓取某汽车网数据解析html存入excel示例
Dec 04 #Python
python共享引用(多个变量引用)示例代码
Dec 04 #Python
python函数返回多个值的示例方法
Dec 04 #Python
You might like
页面利用渐进式JPEG来提升用户体验度
2014/12/01 PHP
php获取网页上所有链接的方法
2015/04/03 PHP
PHP封装的Twitter访问类实例
2015/07/18 PHP
PHP环境搭建(php+Apache+mysql)
2016/11/14 PHP
比较简单实用的使用正则三种版本的js去空格处理方法
2007/11/18 Javascript
js内置对象 学习笔记
2011/08/01 Javascript
javascript实现设置、获取和删除Cookie的方法
2015/06/01 Javascript
JavaScript获取当前cpu使用率的方法
2015/12/15 Javascript
谈谈JS中常遇到的浏览器兼容问题和解决方法
2016/12/17 Javascript
获取JavaScript异步函数的返回值
2016/12/21 Javascript
浅谈jQuery的bind和unbind事件(绑定和解绑事件)
2017/03/02 Javascript
微信小程序 上传头像的实例详解
2017/10/27 Javascript
Angular实现类似博客评论的递归显示及获取回复评论的数据
2017/11/06 Javascript
深入理解JavaScript 中的执行上下文和执行栈
2018/10/23 Javascript
详解使用mocha对webpack打包的项目进行"冒烟测试"的大致流程
2020/04/27 Javascript
[03:20]2015国际邀请赛全明星表演赛
2015/08/08 DOTA
[01:56]无止竞 再出发——中国军团出征2017年DOTA2国际邀请赛
2017/07/05 DOTA
[01:03:51]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第三场
2018/04/09 DOTA
Python实现图像几何变换
2015/07/06 Python
python 系统调用的实例详解
2017/07/11 Python
Python判断文件或文件夹是否存在的三种方法
2017/07/27 Python
python利用urllib和urllib2访问http的GET/POST详解
2017/09/27 Python
opencv实现图片模糊和锐化操作
2018/11/19 Python
Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围
2019/06/25 Python
PyQt5下拉式复选框QComboCheckBox的实例
2019/06/25 Python
使用python切片实现二维数组复制示例
2019/11/26 Python
python drf各类组件的用法和作用
2021/01/12 Python
Sephora丝芙兰澳洲官方网站:国际知名化妆品购物
2016/10/27 全球购物
保洁主管岗位职责
2013/11/20 职场文书
追悼会子女答谢词
2014/01/28 职场文书
教学实验楼管理制度
2014/02/01 职场文书
会议邀请书范文
2014/02/02 职场文书
知识竞赛活动方案
2014/02/18 职场文书
五一口号
2014/06/19 职场文书
党小组鉴定意见
2015/06/02 职场文书
使用CSS设置滚动条样式
2022/01/18 HTML / CSS