树莓派中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获取远程文件大小的函数代码分享
May 13 Python
python错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
Aug 22 Python
python中readline判断文件读取结束的方法
Nov 08 Python
Python中的ctime()方法使用教程
May 22 Python
Django自定义用户认证示例详解
Mar 14 Python
django-rest-framework解析请求参数过程详解
Jul 18 Python
Python编程中类与类的关系详解
Aug 08 Python
Python 文件数据读写的具体实现
Jan 24 Python
PyCharm无法识别PyQt5的2种解决方法,ModuleNotFoundError: No module named 'pyqt5'
Feb 17 Python
如何安装并在pycharm使用selenium的方法
Apr 30 Python
Python如何进行时间处理
Aug 06 Python
Python偏函数实现原理及应用
Nov 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
phpmyadmin操作流程
2006/10/09 PHP
简单的php缓存类分享     php缓存机制
2014/01/22 PHP
PHP mkdir()无写权限的问题解决方法
2014/06/19 PHP
android上传图片到PHP的过程详解
2015/08/03 PHP
yii2中结合gridview如何使用modal弹窗实例代码详解
2016/06/12 PHP
PHP中函数gzuncompress无法使用的解决方法
2017/03/02 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
javascript 中对象的继承〔转贴〕
2007/01/22 Javascript
jquery判断单个复选框是否被选中的代码
2009/09/03 Javascript
向大师们学习Javascript(视频与PPT)
2009/12/27 Javascript
基于jquery库的tab新形式使用
2012/11/16 Javascript
一个获取第n个元素节点的js函数
2014/09/02 Javascript
jquery中ready()函数执行的时机和window的load事件比较
2015/06/22 Javascript
jquery实现简单的banner轮播效果【实例】
2016/03/30 Javascript
Vue实现动态添加或者删除对象和对象数组的操作方法
2018/09/21 Javascript
Vue自定义指令写法与个人理解
2019/02/09 Javascript
javascript(基于jQuery)实现鼠标获取选中的文字示例【测试可用】
2019/10/26 jQuery
浅析 Vue 3.0 的组装式 API(一)
2020/08/31 Javascript
Python序列之list和tuple常用方法以及注意事项
2015/01/09 Python
Python中实现的RC4算法
2015/02/14 Python
在Docker上开始部署Python应用的教程
2015/04/17 Python
新手常见6种的python报错及解决方法
2018/03/09 Python
TensorFlow实现模型评估
2018/09/07 Python
python调用c++传递数组的实例
2019/02/13 Python
python中的print()输出
2019/04/12 Python
Python实现蒙特卡洛算法小实验过程详解
2019/07/12 Python
使用python执行shell脚本 并动态传参 及subprocess的使用详解
2020/03/06 Python
Python学习之路之pycharm的第一个项目搭建过程
2020/06/18 Python
企业演讲稿范文
2013/12/28 职场文书
管理信息系学生的自我评价
2014/01/11 职场文书
勤俭节约倡议书
2014/04/14 职场文书
幼儿园评语大全
2014/04/17 职场文书
民族团结先进个人事迹材料
2014/06/02 职场文书
公务员中国梦演讲稿
2014/08/19 职场文书
研讨会致辞
2015/07/31 职场文书
Redis 异步机制
2022/05/15 Redis