树莓派中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(一)Python环境安装
Aug 20 Python
在Python中使用HTMLParser解析HTML的教程
Apr 29 Python
Python编程中的for循环语句学习教程
Oct 14 Python
Python实现的递归神经网络简单示例
Aug 11 Python
python中kmeans聚类实现代码
Feb 23 Python
Python3自动签到 定时任务 判断节假日的实例
Nov 13 Python
Python 实现子类获取父类的类成员方法
Jan 11 Python
python3实现字符串操作的实例代码
Apr 16 Python
Django 创建新App及其常用命令的实现方法
Aug 04 Python
Python3打包exe代码2种方法实例解析
Feb 17 Python
使用Keras 实现查看model weights .h5 文件的内容
Jun 09 Python
只用20行Python代码实现屏幕录制功能
Jun 02 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
apache+mysql+php+ssl服务器之完全安装攻略
2006/09/05 PHP
php下的权限算法的实现
2007/04/28 PHP
PHP,ASP.JAVA,JAVA代码格式化工具整理
2010/06/15 PHP
php park、unpark、ord 函数使用方法(二进制流接口应用实例)
2010/10/19 PHP
PHP的array_diff()函数在处理大数组时的效率问题
2011/11/27 PHP
PHP实现把文本中的URL转换为链接的auolink()函数分享
2014/07/29 PHP
从零开始学习jQuery (三) 管理jQuery包装集
2011/02/23 Javascript
js中对象的声明方式以及数组的一些用法示例
2013/12/11 Javascript
基于vue2实现左滑删除功能
2017/11/28 Javascript
jquery实现掷骰子小游戏
2019/10/24 jQuery
使用React代码动态生成栅格布局的方法
2020/05/24 Javascript
如何在Express4.x中愉快地使用async的方法
2020/11/18 Javascript
vue开发chrome插件,实现获取界面数据和保存到数据库功能
2020/12/01 Vue.js
[00:52]DOTA2齐天大圣预告片
2016/08/13 DOTA
[01:20]2018DOTA2亚洲邀请赛总决赛战队LGD晋级之路
2018/04/07 DOTA
python文件读写操作与linux shell变量命令交互执行的方法
2015/01/14 Python
Python实现从百度API获取天气的方法
2015/03/11 Python
Python使用Pycrypto库进行RSA加密的方法详解
2016/06/06 Python
python去除空格和换行符的实现方法(推荐)
2017/01/04 Python
python绘制双柱形图代码实例
2017/12/14 Python
python+opencv+caffe+摄像头做目标检测的实例代码
2018/08/03 Python
Python使用sort和class实现的多级排序功能示例
2018/08/15 Python
解决Python selenium get页面很慢时的问题
2019/01/30 Python
Canvas波浪花环的示例代码
2020/08/21 HTML / CSS
Yahoo-PHP面试题2
2014/12/06 面试题
一家外企的面试题目(C/C++面试题,C语言面试题)
2014/03/24 面试题
请说出这段代码执行后a和b的值分别是多少
2015/03/28 面试题
会计主管岗位职责范文
2013/11/08 职场文书
赡养老人协议书
2014/04/21 职场文书
小型婚礼主持词
2015/06/30 职场文书
婚宴致辞
2015/07/28 职场文书
幼儿园教师教育随笔
2015/08/14 职场文书
CentOS8.4安装Redis6.2.6的详细过程
2021/11/20 Redis
详解JSON.parse和JSON.stringify用法
2022/02/18 Javascript
netty 实现tomcat的示例代码
2022/06/05 Servers
使用compose函数优化代码提高可读性及扩展性
2022/06/16 Javascript