树莓派中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 相关文章推荐
SublimeText 2编译python出错的解决方法(The system cannot find the file specified)
Nov 27 Python
Python编程入门之Hello World的三种实现方式
Nov 13 Python
python中实现k-means聚类算法详解
Nov 11 Python
Python简单实现socket信息发送与监听功能示例
Jan 03 Python
Python 的字典(Dict)是如何存储的
Jul 05 Python
python使用 request 发送表单数据操作示例
Sep 25 Python
opencv3/python 鼠标响应操作详解
Dec 11 Python
python基于三阶贝塞尔曲线的数据平滑算法
Dec 27 Python
pytorch实现保证每次运行使用的随机数都相同
Feb 20 Python
django实现模板中的字符串文字和自动转义
Mar 31 Python
C++和python实现阿姆斯特朗数字查找实例代码
Dec 07 Python
Python中else的三种使用场景
Jun 16 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
分享下页面关键字抓取components.arrow.com站点代码
2014/01/30 PHP
php遍历类中包含的所有元素的方法
2015/05/12 PHP
CodeIgniter框架基本增删改查操作示例
2017/03/23 PHP
javascript 保存文件到本地实现方法
2012/11/29 Javascript
SwfUpload在IE10上不出现上传按钮的解决方法
2013/06/25 Javascript
javascript贪吃蛇完整版(源码)
2013/12/09 Javascript
jquery制作多功能轮播图插件
2015/04/02 Javascript
PHP+mysql+Highcharts生成饼状图
2015/05/04 Javascript
使用Javascript写的2048小游戏
2015/11/25 Javascript
RequireJS简易绘图程序开发
2016/10/28 Javascript
浅谈es6中export和export default的作用及区别
2018/02/07 Javascript
Vue cli构建及项目打包以及出现的问题解决
2018/08/27 Javascript
angularjs的单选框+ng-repeat的实现方法
2018/09/12 Javascript
vue服务端渲染页面缓存和组件缓存的实例详解
2018/09/18 Javascript
Vue指令指令大全
2019/02/09 Javascript
vue实现拖拽的简单案例 不超出可视区域
2019/07/25 Javascript
解决包含在label标签下的checkbox在ie8及以下版本点击事件无效果兼容的问题
2019/10/27 Javascript
Vue extend的基本用法(实例详解)
2019/12/09 Javascript
JS实现移动端可折叠导航菜单(现代都市风)
2020/07/07 Javascript
解决vant-UI库修改样式无效的问题
2020/11/03 Javascript
Python编程之属性和方法实例详解
2015/05/19 Python
Python中Iterator迭代器的使用杂谈
2016/06/20 Python
Python网络爬虫项目:内容提取器的定义
2016/10/25 Python
Python中的函数式编程:不可变的数据结构
2018/10/08 Python
python样条插值的实现代码
2018/12/17 Python
python实现IOU计算案例
2020/04/12 Python
tensorflow图像裁剪进行数据增强操作
2020/06/30 Python
python em算法的实现
2020/10/03 Python
python利用opencv保存、播放视频
2020/11/02 Python
在python中对于bool布尔值的取反操作
2020/12/11 Python
基于HTML5新特性Mutation Observer实现编辑器的撤销和回退操作
2016/01/11 HTML / CSS
汽车驾驶求职信
2013/10/25 职场文书
高一自我鉴定
2013/12/17 职场文书
最新的互联网创业计划书
2014/01/10 职场文书
心得体会格式及范文
2016/01/25 职场文书
详解JAVA的控制语句
2021/11/11 Java/Android