树莓派中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中使用gzip模块压缩文件的简单教程
Apr 08 Python
老生常谈Python startswith()函数与endswith函数
Sep 08 Python
Python实现对文件进行单词划分并去重排序操作示例
Jul 10 Python
python使用matplotlib画饼状图
Sep 25 Python
python3实现点餐系统
Jan 24 Python
OpenCV-Python 摄像头实时检测人脸代码实例
Apr 30 Python
树莓派动作捕捉抓拍存储图像脚本
Jun 22 Python
基于Python实现签到脚本过程解析
Oct 25 Python
Python使用进程Process模块管理资源
Mar 05 Python
Python读取xlsx数据生成图标代码实例
Aug 12 Python
Python如何读写CSV文件
Aug 13 Python
Python制作简单的剪刀石头布游戏
Dec 10 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 echo 输出字符串函数详解
2010/05/13 PHP
php中stream(流)的用法
2014/03/25 PHP
php版微信公众平台开发之验证步骤实例详解
2016/09/23 PHP
Flash+XML滚动新闻代码 无图片 附源码下载
2007/11/22 Javascript
用XMLDOM和ADODB.Stream实现base64编码解码实现代码
2010/11/28 Javascript
Javascript Request获取请求参数如何实现
2012/11/28 Javascript
javascript返回顶部效果(自写代码)
2013/01/06 Javascript
使用jQuery避免鼠标双击的解决方案
2013/08/21 Javascript
jquery实现的图片点击滚动效果
2014/04/29 Javascript
js+csss实现的一个带复选框的下拉框
2014/09/29 Javascript
Node.js开发之访问Redis数据库教程
2015/01/14 Javascript
深入理解JavaScript系列(46):代码复用模式(推荐篇)详解
2015/03/04 Javascript
AngularJS使用angular-formly进行表单验证
2015/12/27 Javascript
关于js原型的面试题讲解
2016/09/25 Javascript
Angular2从搭建环境到开发步骤详解
2016/10/17 Javascript
jQuery阻止移动端遮罩层后页面滚动
2017/03/15 Javascript
jQuery实现手机号正则验证输入及自动填充空格功能
2018/01/02 jQuery
vue-router相关基础知识及工作原理
2018/03/16 Javascript
跟老齐学Python之使用Python操作数据库(1)
2014/11/25 Python
分享Python字符串关键点
2015/12/13 Python
Python GUI编程完整示例
2019/04/04 Python
Python3 串口接收与发送16进制数据包的实例
2019/06/12 Python
python利用re,bs4,requests模块获取股票数据
2019/07/29 Python
Python selenium的基本使用方法分析
2019/12/21 Python
Jupyter notebook快速入门教程(推荐)
2020/05/18 Python
keras实现多GPU或指定GPU的使用介绍
2020/06/17 Python
python asyncio 协程库的使用
2021/01/21 Python
女孩每月服装订阅盒:kidpik
2019/04/17 全球购物
一套VC试题
2015/01/23 面试题
材料化学应届生求职信
2013/10/09 职场文书
医药大学生求职简历的自我评价
2013/10/17 职场文书
财产公证书
2014/04/10 职场文书
中国梦演讲稿5分钟
2014/08/19 职场文书
产品委托授权书范本
2014/09/16 职场文书
孕妇病假条怎么写
2015/08/17 职场文书
Java并发编程之原子性-Atomic的使用
2022/03/16 Java/Android