2022/10/03
2022/10/04
マイクロビット(e_33)ZIP Halo Compass(2)
ZIP Halo 地磁気センサー
kitronikのZIP Haloを使ってみました。
micro:bitに搭載されている地磁気センサー(I2CデバイスMAG3110)の測定データからZIP HaloとImageで表示してCompassにしました。
具体的には、compass.heading()で得た値から北の方向を求めてImageの矢印とZIP Haloの周縁LED点滅で示すようにしました。
スクリプト
スクリプト例は以下のようにしました。※thonny-microbitのMicroPythonを使っています。
halo_01_compass_image.py
from microbit import *
import neopixel
# ZIP Helo 方位 北をImageの矢印とLED(24)で示す
# 方位の略記文字データ
d=['N','NE','E','SE','S','SW','W','NW']
# 色データ
RED=(255, 0, 0)
YELLOW=(255, 150, 0)
PURPLE=(180, 0, 255)
Colors=[PURPLE,YELLOW,YELLOW,YELLOW,YELLOW,YELLOW]*4 # Pixel 24pcs に合わす(6x4)
display.clear()
np = neopixel.NeoPixel(pin0,24) # pin0(MOSIにする)で24pcs RGB-LED 24pcsを操作
np.clear()
sleep(1000)
while True:
hdeg=compass.heading() # micro:bit搭載の磁気センサで方位測定
#print(hdeg)
drc=int((hdeg+22.5)/45) % 8 # ZIP Helo 円周LED(24)を選択
ds='Image.ARROW_'+d[-drc] # N方向を矢印で示す(方位のマイナス)
display.show(eval(ds))
l_num=(24-int((hdeg+7.5)/15)) % 24 # N方向にあるLED番号
print(hdeg,d[drc],l_num) # 方位角、向き、LED番号 Thonnyのshellに表示
div=16 # 明るさ(PWM値)調整 電流値も抑制
div2=8
for i in range(6*4): # LED数(Colorsx4)
pwm=[[0]*3]6*4 # pwm(r,g,b) *LED数
for s in range(3):
pwm[i][s]=int(Colors[i][s]/div) # PWM値を1/div
np[i]=pwm[i]
np[l_num]= (int(RED[0]/div2),0,0) # 方位にあるLEDを赤で点滅
np.show()
sleep(1000)
np[l_num]= (0,0,0)
np.show()
sleep(500)
# Button(A)でbreak # Aボタンでブレーク停止
if button_a.was_pressed():
np.clear()
display.clear()
print('break')
break
実行結果
>>> %Run halo_01b_compass_image.py
320 NW 3 # 320°はNW(Northwest) 北はLED(3)
319 NW 3
17 N 23
356 N 0
break # Aボタンで停止
>>>
まとめ
micro:bitの地磁気センサデータをZIP Haloでコンパス表示にできました。