樹莓派使用python獲取GY-85九軸模組資訊
連線方法請移步這裡 http://www.cnblogs.com/hangxin1940/archive/2013/04/05/3000395.html
這裡使用Python的curses包開發cli視窗程式,用來實時重新整理感測器的讀數
最終的效果
![gy85](http://images.cnblogs.com/cnblogs_com/hangxin1940/466697/o_GY-85.jpg "gy85")
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樹莓派
- 樹莓派使用樹莓派
- 樹莓派使用入門:如何更新樹莓派樹莓派
- 樹莓派使用入門:用樹莓派學 Linux樹莓派Linux
- 樹莓派使用入門:如何用樹莓派來娛樂樹莓派
- 樹莓派使用入門:如何購買一個樹莓派樹莓派
- 樹莓派使用入門:慶祝樹莓派的 14 天樹莓派
- 樹莓派入門指南——資訊圖樹莓派
- 樹莓派:開機使用樹莓派
- 樹莓派OLED模組的使用教程大量例程詳解樹莓派
- 樹莓派使用入門:如何為樹莓派社群做出貢獻樹莓派
- 【.NET 與樹莓派】小風扇模組樹莓派
- 樹莓派是什麼 樹莓派能做什麼 樹莓派的功能用途樹莓派
- 樹莓派使用入門:如何啟動一個新的樹莓派樹莓派
- 樹莓派使用入門:進入物理世界 —— 如何使用樹莓派的 GPIO 針腳樹莓派
- 【.NET 與樹莓派】六軸飛控感測器(MPU 6050)樹莓派
- 樹莓派的另類用途,三名男子因使用樹莓派盜取ATM機錢款而被逮捕樹莓派
- 【.NET 與樹莓派】使用 GPIO 庫樹莓派
- 樹莓派CM4(四):樹莓派映象替換核心樹莓派
- 樹莓派筆記樹莓派筆記
- 樹莓派與FileZilla樹莓派
- 折騰樹莓派樹莓派
- 樹莓派裝opencv樹莓派OpenCV
- 新樹莓派入手樹莓派
- 樹莓派電臺樹莓派
- 軟體工程師樹莓派獲取室內溫溼度的坎坷之旅軟體工程工程師樹莓派
- 樹莓派3B--4*4矩陣按鍵模組的使用樹莓派矩陣
- 「玩轉樹莓派」樹莓派 3B+ 配置無線WiFi樹莓派WiFi
- 樹莓派搭建git伺服器 | 樹莓派小無相系列樹莓派Git伺服器
- 樹莓派使用入門:透過樹莓派和 kali Linux 學習電腦保安樹莓派Linux
- 使用樹莓派搭建Ubuntu伺服器樹莓派Ubuntu伺服器
- 使用樹莓派製作智慧小車樹莓派
- 樹莓派使用buildroot生成系統映象樹莓派UI
- 樹莓派 Zero WH 初使用體驗樹莓派
- 如何這沒有顯示器的情況下獲取樹莓派IP?樹莓派
- 5、樹莓派3 Model B ——— 樹莓派PWM控制直流電機速度樹莓派
- 樹莓派 | 修改樹莓派3熱點的名稱和密碼樹莓派密碼
- 樹莓派使用入門:教孩子們用樹莓派學程式設計的 5 種方法樹莓派程式設計