树莓派中python获取GY-85九轴模块信息示例
发布时间:2021-01-21 18:48:15
先看效果图
![]() |
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()


猜你喜欢
- 远程连接access数据库的几个方法: 1.建立VPN(Virtual Private Network),这样你的电脑和主机的连接
- PDOStatement::nextRowsetPDOStatement::nextRowset — 在一个多行集语句句柄中推进到下一个行集
- 一、引言老猿从来没有录播个视频课件,但最近有要求在一周内必须录制一个视频课件,为此花了3天时间准备ppt,花了一个小时录播了一个20多分钟的
- 一、测试平台:解决分散用例执行方式,提供统一测试用例执行过程、用例管理、测试报告主要是基于: fastapi+vu
- 本文实例讲述了PHP商品秒杀问题解决方案。分享给大家供大家参考,具体如下:引言假设num是存储在数据库中的字段,保存了被秒杀产品的剩余数量。
- 然后给脚本文件运行权限,方法(1)chmod +x ./*.py方法(2)chmod 755 ./*.py (777也无所谓啦)这个命令不去
- 下面的教程总结了Javascript在网页定位方面的相关知识。一、网页的绝对大小和相对大小首先,要明确两个基本概念。一张网页的全部面积,就是
- 前一阵子工作项目上的事情忙的焦头烂额,最近要进行部门调整将要去做新的项目。又要学习很多新的知识了,还是很兴奋激动的。今天下班回来查看了一下V
- function nohtml(str) dim re Set re=new 
- 多线程:在同一个时间做多件事守护线程:如果在程序中将子线程设置为守护线程,则该子线程会在主线程结束时自动退出,设置方式为thread.set
- 项目发布版本会遇到经常需要清理缓存的问题,以下是项目禁用缓存的实际方法1.public文件夹中修改 index.html文件meta配置 &
- 一 什么是XML?python与json数据的交互详情 在这篇文章中我们介绍了json是一种独立于编程语言和平台的数据存储和交换方
- python 打开浏览器,可以做简单的刷网页的小程序。仅供学习,别用非法用途。python的webbrowser模块支持对浏览器进行一些操作
- mysql 8.0.11 winx64安装教程记录如下,分享给大家1.进入地址: 下载mysql-8.0.11-winx642.解
- up.htm'::::::: 此程序属扬子原创 ::::::::::::::::::':::::: 在sql2000,200
- 我就废话不多说了,大家还是看代码吧! import PyPDF2 import repdf_file = open('xxx.pdf
- 本文实例讲述了Python基于checksum计算文件是否相同的方法。分享给大家供大家参考。具体如下:假设有2个二进制文件(0.bin, 1
- socket编程过程中往往会遇到这样那样的问题,出现了这些问题,有的是由于并发访问量太大造成的,有些却是由于代码中编程不慎造成的。比如说,最
- 对网站的LOGO设计做了一些归纳,希望得到批评,发现写的太长了,又不忍心删减,就分成两部分了,第一部分是有关设计基础的。第二部分是关于网站L
- 前言今天制作的这一款能在B站能指定直播间、自动发弹幕的功能的脚本,因为没做那么多的功能,所以代码很简单,适合刚入门的同学学习先打开一个直播间