未來板MicroPython編程2:板載感應器
導入未來板庫
需要先導入未來板的庫才可以使用未來板的硬件。
from future import *
02: 板載感應器類
1. 按鍵
sensor.btnValue(btn)
btn代表按鍵,a或b。返回True或False。
2. 亮度感應器
sensor.getLight()
返回0~4095。
3. 溫度感應器
sensor.getTemp()
返回攝氏溫度,範圍由-40~85度。
1~3使用範例
# 按A顯示亮度,按B顯示溫度
from future import *
from time import sleep
screen.fill((0, 0, 0))
while True:
if sensor.btnValue('a'):
screen.text(str("Light: ")+str(sensor.getLight()),5,10,1,(0, 119, 255))
sleep(0.5)
if sensor.btnValue('b'):
screen.text(str("Temp: ")+str(sensor.getTemp()),5,30,1,(0, 119, 255))
sleep(0.5)
4 加速度計
sensor.accX()
sensor.accY()
sensor.accZ()
獲取加速度計3個軸的讀數,單位為G(重力加速度)。
5. 姿勢角度
sensor.roll()
sensor.pitch()
分別獲取加速度計的橫滾度與旋轉度。
4~5使用範例
from future import *
from time import sleep
screen.sync = 0
while True:
screen.fill((0, 0, 0))
screen.text(str("X: ")+str(sensor.accX()),5,10,1,(0, 119, 255))
screen.text(str("Y: ")+str(sensor.accY()),5,25,1,(0, 119, 255))
screen.text(str("Z: ")+str(sensor.accZ()),5,40,1,(0, 119, 255))
screen.text(str("Roll: ")+str(sensor.roll()),5,55,1,(0, 119, 255))
screen.text(str("Pitch: ")+str(sensor.pitch()),5,70,1,(0, 119, 255))
screen.refresh()
sleep(0.2)
6. 姿勢檢測
sensor.gesture(gesture)
未來板能偵測8種姿勢。返回True或False。
‘shake’ : 搖晃
‘freefall’ : 自由落體
‘tilt_up’ : 正立
‘tilt_down’ : 倒立
‘tilt_left’ : 左傾
‘tilt_right’ : 右傾
‘face_up’ : 朝上
‘face_down’ : 朝下
7. 姿勢檢測觸發事件
sensor.gesTrig[ges] = fn
sensor.startSchedule()
6~7使用範例
# 屏幕顯示姿勢的狀態,搖晃未來板更改背景顏色為白色。
from future import *
from time import sleep
def onGesture_shake():
buzzer.melody(JUMP_UP)
sensor.gesTrig['shake']=onGesture_shake
sensor.startSchedule()
screen.sync = 0
while True:
screen.fill((0, 0, 0))
screen.text(str("Face Up: ")+str(sensor.gesture('face_up')),5,10,1,(0, 119, 255))
screen.text(str("Face Down: ")+str(sensor.gesture('face_down')),5,25,1,(0, 119, 255))
screen.refresh()
sleep(0.2)
8. 磁場校正
calibrateCompass()
使用磁力計或者指南針前必須要校正。
9. 獲取磁力計讀數
sensor.magX()
sensor.magY()
sensor.magZ()
sensor.magStrength()
分別獲取三軸的磁力強度和平均強度。單位為uT。
10. 指南針指向
sensor.heading()
獲取當前方位,範圍為0~360,0為北方。
8~10使用範例
from future import *
import math
calibrateCompass()
screen.sync = 0
ds = ''
while 1:
d = int(math.fabs(360-sensor.heading()))
screen.fill(44)
if (d<20) | (d>340):
ds = '北'
elif (d<70):
ds = '東北'
elif (d<110):
ds = '東'
elif (d<160):
ds = '東南'
elif (d<200):
ds = '南'
elif (d<250):
ds = '西南'
elif (d<290):
ds = '西'
else:
ds = '西北'
screen.text(d, 5,5)
screen.textCh(ds,5,30)
screen.text(str('Strength: ')+str(sensor.magStrength()),5,80)
screen.refresh()
Last updated