树莓派中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批量下载图片的三种方法
Apr 22 Python
使用BeautifulSoup爬虫程序获取百度搜索结果的标题和url示例
Jan 19 Python
python列表list保留顺序去重的实例
Dec 14 Python
谈谈Python中的while循环语句
Mar 10 Python
Python 生成一个从0到n个数字的列表4种方法小结
Nov 28 Python
python实现随机加减法生成器
Feb 24 Python
python实现低通滤波器代码
Feb 26 Python
Python批量获取并保存手机号归属地和运营商的示例
Oct 09 Python
Django自定义YamlField实现过程解析
Nov 11 Python
Python字符串的15个基本操作(小结)
Feb 03 Python
Python基础之元编程知识总结
May 23 Python
python运算符之与用户交互
Apr 13 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
客户端脚本中常常出现的一些问题和调试技巧
2007/01/09 Javascript
jquery图片延迟加载 前端开发技能必备系列
2012/06/18 Javascript
javascript使用isNaN()函数判断变量是否为数字
2013/09/21 Javascript
Javascript 命名空间模式
2013/11/01 Javascript
js常用系统函数用法实例分析
2015/01/12 Javascript
NodeJS使用jQuery选择器操作DOM
2015/02/13 NodeJs
JavaScript文档碎片操作实例分析
2015/12/12 Javascript
微信小程序动态显示项目倒计时效果
2017/06/13 Javascript
vue2.0组件之间传值、通信的多种方式(干货)
2018/02/10 Javascript
JS实现的缓冲运动效果示例
2018/04/30 Javascript
vue-cli3中vue.config.js配置教程详解
2019/05/29 Javascript
jQuery+css实现的点击图片放大缩小预览功能示例【图片预览 查看大图】
2020/05/29 jQuery
关于ES6尾调用优化的使用
2020/09/11 Javascript
微信小程序组件生命周期的踩坑记录
2021/03/03 Javascript
[06:16]《DAC最前线》之地区预选赛全面回顾
2015/01/19 DOTA
python用模块zlib压缩与解压字符串和文件的方法
2016/12/16 Python
简单的python协同过滤程序实例代码
2018/01/31 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
2020/04/07 Python
如何实现一个python函数装饰器(Decorator)
2020/10/12 Python
日本民宿预约平台:STAY JAPAN
2017/07/01 全球购物
送给他或她的礼物:FUN.com
2018/08/17 全球购物
美国球迷装备的第一来源:FOCO
2020/07/03 全球购物
JAVA中的关键字有什么特点
2014/03/07 面试题
js正则匹配markdown里的图片标签的实现
2021/03/24 Javascript
外贸销售员求职的自我评价
2013/11/23 职场文书
金融行业职业生涯规划范文
2014/01/17 职场文书
语文课外活动总结
2014/08/27 职场文书
校运动会广播稿(100篇)
2014/09/12 职场文书
贯彻落实“八项规定”思想汇报
2014/09/13 职场文书
个人作风建设总结
2014/10/23 职场文书
好媳妇事迹材料
2014/12/24 职场文书
2015年学校安全工作总结
2015/04/22 职场文书
公文写作:工伤事故分析报告怎么写?
2019/11/05 职场文书
go语言中fallthrough的用法说明
2021/05/06 Golang
python树莓派通过队列实现进程交互的程序分析
2021/07/04 Python
redis数据一致性的实现示例
2022/03/18 Redis