树莓派中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实现监控程序执行时间并将其写入日志的方法
Jun 30 Python
各种Python库安装包下载地址与安装过程详细介绍(Windows版)
Nov 02 Python
快速了解python leveldb
Jan 18 Python
Python用 KNN 进行验证码识别的实现方法
Feb 06 Python
详解Python3中ceil()函数用法
Feb 19 Python
python 将字符串完成特定的向右移动方法
Jun 11 Python
flask框架jinja2模板与模板继承实例分析
Aug 01 Python
twilio python自动拨打电话,播放自定义mp3音频的方法
Aug 08 Python
Python Collatz序列实现过程解析
Oct 12 Python
使用python无账号无限制获取企查查信息的实例代码
Apr 17 Python
python中time、datetime模块的使用
Dec 14 Python
Python基础之进程详解
May 21 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中防止SQL注入攻击和XSS攻击的两个简单方法
2010/04/15 PHP
探讨PHP删除文件夹的三种方法
2013/06/09 PHP
php简单实现屏蔽指定ip段用户的访问
2015/04/29 PHP
PHP检测数据类型的几种方法(总结)
2017/03/04 PHP
IE中jscript/javascript的条件编译
2006/09/07 Javascript
使用jQuery轻松实现Ajax的实例代码
2010/08/16 Javascript
js对象数组按属性快速排序
2011/01/31 Javascript
JS增加行复制行删除行的实现代码
2013/11/09 Javascript
简单js代码实现selece二级联动(推荐)
2014/02/18 Javascript
js实现的GridView即表头固定表体有滚动条且可滚动
2014/02/19 Javascript
浅谈javascript属性onresize
2015/04/20 Javascript
第六篇Bootstrap表格样式介绍
2016/06/21 Javascript
jQuery+CSS3实现仿花瓣网固定顶部位置带悬浮效果的导航菜单
2016/09/21 Javascript
Javascript封装id、class与元素选择器方法示例
2017/03/13 Javascript
underscore之Collections_动力节点Java学院整理
2017/07/10 Javascript
Three.js如何用轨迹球插件(trackball)增加对模型的交互功能详解
2017/09/25 Javascript
Bootstrap模态对话框中显示动态内容的方法
2018/08/10 Javascript
微信小程序实现简单评论功能
2018/11/28 Javascript
three.js搭建室内场景教程
2018/12/30 Javascript
ES6基础之默认参数值
2019/02/21 Javascript
基于Vue2-Calendar改进的日历组件(含中文使用说明)
2019/04/14 Javascript
node.js express框架实现文件上传与下载功能实例详解
2019/10/15 Javascript
jQuery实现的图片点击放大缩小功能案例
2020/01/02 jQuery
vue 路由缓存 路由嵌套 路由守卫 监听物理返回操作
2020/08/06 Javascript
vue封装自定义指令之动态显示title操作(溢出显示,不溢出不显示)
2020/11/12 Javascript
vue 在单页面应用里使用二级套嵌路由
2020/12/19 Vue.js
python 线性回归分析模型检验标准--拟合优度详解
2020/02/24 Python
Python定时器线程池原理详解
2020/02/26 Python
python matplotlib包图像配色方案分享
2020/03/14 Python
python小技巧——将变量保存在本地及读取
2020/11/13 Python
美国网上花店:JustFlowers
2017/02/12 全球购物
servlet面试题
2012/08/20 面试题
刊首寄语大全
2014/04/11 职场文书
学校欢迎标语
2014/06/18 职场文书
2015年教师业务工作总结
2015/05/26 职场文书
Python可视化神器pyecharts之绘制地理图表练习
2022/07/07 Python