树莓派中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编程中基本的数学计算使用
Feb 04 Python
Django 导出 Excel 代码的实例详解
Aug 11 Python
Python绘制七段数码管实例代码
Dec 20 Python
python中字符串的操作方法大全
Jun 03 Python
mac PyCharm添加Python解释器及添加package路径的方法
Oct 29 Python
Python简单获取二维数组行列数的方法示例
Dec 21 Python
Python中的 enum 模块源码详析
Jan 09 Python
linux中如何使用python3获取ip地址
Jul 15 Python
python实现拉普拉斯特征图降维示例
Nov 25 Python
python使用beautifulsoup4爬取酷狗音乐代码实例
Dec 04 Python
Python函数的迭代器与生成器的示例代码
Jun 18 Python
如何基于Django实现上下文章跳转
Sep 16 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
php设计模式 Visitor 访问者模式
2011/06/28 PHP
angular.element方法汇总
2015/01/07 Javascript
浅谈JSON中stringify 函数、toJosn函数和parse函数
2015/01/26 Javascript
javascript常用的方法整理
2015/08/20 Javascript
JS实现的竖向折叠菜单代码
2015/10/21 Javascript
JS弹出对话框实现方法(三种方式)
2015/12/18 Javascript
javascript实现起伏的水波背景效果
2016/05/16 Javascript
基于jQuery实现页面搜索功能
2020/03/26 Javascript
javascript之IE版本检测超简单方法
2016/08/20 Javascript
JavaScript关联数组用法分析【概念、定义、遍历】
2017/03/15 Javascript
JS通过位运算实现权限加解密
2018/08/14 Javascript
angular2组件中定时刷新并清除定时器的实例讲解
2018/08/31 Javascript
JS实现数组深拷贝的方法分析
2019/03/06 Javascript
JavaScript正则表达式验证登录实例
2020/03/18 Javascript
Vue项目前后端联调(使用proxyTable实现跨域方式)
2020/07/18 Javascript
解决echarts echarts数据动态更新和dataZoom被重置问题
2020/07/20 Javascript
vue-router路由懒加载及实现的3种方式
2021/02/28 Vue.js
在Linux系统上部署Apache+Python+Django+MySQL环境
2015/12/24 Python
python 根据pid杀死相应进程的方法
2017/01/16 Python
Python数据结构之单链表详解
2017/09/12 Python
Python利用正则表达式实现计算器算法思路解析
2018/04/25 Python
python使用matplotlib库生成随机漫步图
2018/08/27 Python
Python实现iOS自动化打包详解步骤
2018/10/03 Python
Python+OpenCV+pyQt5录制双目摄像头视频的实例
2019/06/28 Python
springboot配置文件抽离 git管理统 配置中心详解
2019/09/02 Python
Python实现多线程/多进程的TCP服务器
2019/09/03 Python
HTML5不支持frameset的两种解决方法
2016/11/14 HTML / CSS
PHP高级工程师面试问题推荐
2013/01/18 面试题
银行财务部实习生的自我鉴定
2013/11/27 职场文书
纪念建党演讲稿范文
2014/01/13 职场文书
细节决定成败演讲稿
2014/05/12 职场文书
教师暑期培训感言
2014/08/15 职场文书
小区的门卫岗位职责
2014/10/01 职场文书
先进工作者申报材料
2014/12/23 职场文书
复制别人的成功真的会成功吗?
2019/10/17 职场文书
python实现简单的名片管理系统
2021/04/26 Python