树莓派中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中method的参数传递过程
Apr 02 Python
详解Python发送邮件实例
Jan 10 Python
shelve  用来持久化任意的Python对象实例代码
Oct 12 Python
详解Python3中字符串中的数字提取方法
Jan 14 Python
Python实现的插入排序算法原理与用法实例分析
Nov 22 Python
Django框架教程之正则表达式URL误区详解
Jan 28 Python
Django实现登录随机验证码的示例代码
Jun 20 Python
python flask解析json数据不完整的解决方法
May 26 Python
解决pyqt5中QToolButton无法使用的问题
Jun 21 Python
python 实现单通道转3通道
Dec 03 Python
python从内存地址上加载python对象过程详解
Jan 08 Python
在pycharm中debug 实时查看数据操作(交互式)
Jun 09 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
PHP4与PHP3中一个不兼容问题的解决方法
2006/10/09 PHP
在PHP中执行系统外部命令
2006/10/09 PHP
php Mysql日期和时间函数集合
2007/11/16 PHP
PHP处理CSV表格文件的常用操作方法总结
2016/07/01 PHP
使用Zttp简化Guzzle 调用
2017/07/02 PHP
PHP模版引擎原理、定义与用法实例
2019/03/29 PHP
修改发贴的编辑功能
2007/03/07 Javascript
javascript 写类方式之五
2009/07/05 Javascript
js中复制行和删除行的操作实例
2013/06/25 Javascript
jQuery控制iFrame(实例代码)
2013/11/19 Javascript
自定义jquery模态窗口插件无法在顶层窗口显示问题
2014/05/29 Javascript
解决自定义$(id)的方法与jquery选择器$冲突的问题
2014/06/14 Javascript
jquery获取选中的文本和值的方法
2014/07/08 Javascript
浅谈javascript中关于日期和时间的基础知识
2016/07/13 Javascript
AngularJS中$apply方法和$watch方法用法总结
2016/12/13 Javascript
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
2016/12/14 Javascript
vue.js的computed,filter,get,set的用法及区别详解
2018/03/08 Javascript
微信小程序上传图片实例
2018/05/28 Javascript
JavaScript求一个数组中重复出现次数最多的元素及其下标位置示例
2018/07/23 Javascript
JavaScript数据结构与算法之二叉树遍历算法详解【先序、中序、后序】
2019/02/21 Javascript
浅谈react-router@4.0 使用方法和源码分析
2019/06/04 Javascript
[01:28:24]NAVI vs VG Supermajor 败者组 BO3 第三场 6.5
2018/06/06 DOTA
Python3.6 Schedule模块定时任务(实例讲解)
2017/11/09 Python
python实现定时自动备份文件到其他主机的实例代码
2018/02/23 Python
基于Django与ajax之间的json传输方法
2018/05/29 Python
python使用 zip 同时迭代多个序列示例
2019/07/06 Python
python 魔法函数实例及解析
2019/09/25 Python
完美解决Pycharm中matplotlib画图中文乱码问题
2021/01/11 Python
皇马官方商城:Real Madrid Store
2016/09/02 全球购物
南非最大的在线时尚商店:Zando
2019/07/21 全球购物
abstract class和interface有什么区别
2013/08/04 面试题
董事长秘书岗位职责
2013/11/29 职场文书
我未来的职业规划范文
2014/01/11 职场文书
幼儿园保育员岗位职责
2014/04/13 职场文书
常务副县长“四风”个人对照检查材料思想汇报
2014/10/02 职场文书
面试通知短信
2015/04/20 职场文书