树莓派中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编程实现控制cmd命令行显示颜色的方法示例
Aug 14 Python
Python语言描述KNN算法与Kd树
Dec 13 Python
纯python实现机器学习之kNN算法示例
Mar 01 Python
python简单商城购物车实例代码
Mar 15 Python
python使用Flask操作mysql实现登录功能
May 14 Python
python re模块的高级用法详解
Jun 06 Python
python tkinter实现彩球碰撞屏保
Jul 30 Python
python带参数打包exe及调用方式
Dec 21 Python
解决python运行启动报错问题
Jun 01 Python
Python应用实现处理excel数据过程解析
Jun 19 Python
Python爬虫设置ip代理过程解析
Jul 20 Python
Python中requests做接口测试的方法
May 30 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
新浪新闻小偷
2006/10/09 PHP
php str_pad 函数用法简介
2009/07/11 PHP
ThinkPHP3.1新特性之查询条件预处理简介
2014/06/19 PHP
Yii核心组件AssetManager原理分析
2014/12/02 PHP
PHP Primary script unknown 解决方法总结
2019/08/22 PHP
php适配器模式简单应用示例
2019/10/23 PHP
jquery中eq和get的区别与使用方法
2011/04/14 Javascript
初学js 新节点的创建 删除 的步骤
2011/07/04 Javascript
让ie6也支持websocket采用flash封装实现
2013/02/18 Javascript
javascript 使用 NodeList需要注意的问题
2013/03/04 Javascript
简单js代码实现selece二级联动(推荐)
2014/02/18 Javascript
再谈JavaScript线程
2015/07/10 Javascript
Javascript中的return作用及javascript return关键字用法详解
2015/11/05 Javascript
JavaScript中关键字 in 的使用方法详解
2016/10/17 Javascript
使用JS读取XML文件的方法
2016/11/25 Javascript
jquery 校验中国身份证号码实例详解
2017/04/11 jQuery
让nodeJS支持ES6的词法----babel的安装和使用方法
2017/07/31 NodeJs
基于jQuery的表单填充实例
2017/08/22 jQuery
JavaScript实现数组全排列、去重及求最大值算法示例
2018/07/30 Javascript
vue组件通信传值操作示例
2019/01/08 Javascript
Vue CLI3.0中使用jQuery和Bootstrap的方法
2019/02/28 jQuery
Element Alert警告的具体使用方法
2020/07/27 Javascript
python判断端口是否打开的实现代码
2013/02/10 Python
使用Python实现在Windows下安装Django
2018/10/17 Python
pytorch 调整某一维度数据顺序的方法
2018/12/08 Python
python set内置函数的具体使用
2019/07/02 Python
使用selenium和pyquery爬取京东商品列表过程解析
2019/08/15 Python
python的等深分箱实例
2019/11/22 Python
三陽商会官方网站:Sanyo iStore
2019/05/15 全球购物
银行存款证明样本
2014/01/17 职场文书
公司授权委托书格式样本
2014/10/01 职场文书
企业法人代表授权委托书
2014/10/02 职场文书
2015年学生会工作总结范文
2015/03/31 职场文书
2015年乡镇卫生院妇幼保健工作总结
2015/05/19 职场文书
mybatis 获取无数据的字段不显示的问题
2021/07/15 Java/Android
windows server2012 R2下安装PaddleOCR服务的的详细步骤
2022/09/23 Servers