02 內建感應器的使用
(2020/01/04)
前陣子已完成了第一章的MicroPython的入門篇,今天有空再把第二章有關內建感應器的使用的MicroPython的指令也大致完成了,由於只是要在國小做簡單的教學,所以這樣的內容應該就夠了!
一、溫度感測器
常使用到的指令
temperature() 量測到的溫度
顯示目前溫度
makecode程式
micropython程式
from microbit import *
while True:
display.scroll(temperature())
sleep(500)
運動溫度計
當溫度>32,顯示 X
當溫度<28,顯示 V
否則, 顯示三角形
makecode程式
micropython程式
from microbit import *
while True:
if temperature() > 32:
display.show(Image.NO)
elif temperature() < 28:
display.show(Image.YES)
else:
display.show(Image.TRIANGLE)
二、光線感測器
MicroPython並沒有提供偵測光線的函式 ?
三、蜂鳴器的使用
常使用到的指令
music.play() 播放內建音樂或自己填譜
music.pitch() 播放頻率的聲音
播放內建音樂
makecode程式
micropython程式
import music # 不需要用到 from microbit import *
music.play(music.DADADADUM)
僅能播放一次,沒有像積木可以重複幾次
按A鍵播放DADADAAUM,按B鍵播放ENTERTAINER
makecode程式
micropython程式
from microbit import *
import music
while True:
if button_a.is_pressed():
music.play(music.DADADADUM)
if button_b.is_pressed():
music.play(music.ENTERTAINER)
必須等音樂結束,按鍵才有聲音出來
內建的音樂
music.DADADADUM
music.ENTERTAINER
music.PRELUDE
music.ODE
music.NYAN
music.RINGTONE
music.FUNK
music.BLUES
music.BIRTHDAY
music.WEDDING
music.FUNERAL
music.PUNCHLINE
music.PYTHON
music.BADDY
music.CHASE
music.BA_DING
music.WAWAWAWAA
music.JUMP_UP
music.JUMP_DOWN
music.POWER_UP
music.POWER_DOWN
音樂名稱均為大寫
播放小蜜蜂填譜音樂
makecode程式
micropython程式
import music
tune = ["G4:4", "E4:4", "E4:8", "F4:4", "D4:4", "D4:8"]
music.play(tune)
NOTE[octave][:duration]
NOTE:C D E F G A B 就是音 階
octave: 4 (中音部分)、8(高音部分)?
duration:時間長度,4代表bmp=120的1拍,也就是0.125秒的4倍;8就是2拍
也可簡化為
import music
tune = ["G4:4", "E4", "E4:8", "F4:4", "D4", "D4:8"]
music.play(tune)
時間被省略的,代表它的拍子與前面的相同
播放頻率出聲
音階--頻率對照表(單位:Hz)
makecode程式
micropython程式
import music
music.pitch(392,500)
music.pitch(330,500)
music.pitch(330,1000)
music.pitch(349,500)
music.pitch(294,500)
music.pitch(294,1000)
music.pitch(頻率,時間(毫秒)
模擬人聲
makecode程式
無積木可用
micropython程式
from microbit import *
import speech
# You need a reason to do it.
speech.say("My name is Peter")
sleep(1000)
speech.say("I am a student")
sleep(1000)
speech.say("You are so beautiful")
sleep(1000)
speech.say("words", pitch=64, speed=72, mouth=128, throat=128) 預設值
四、加速度感測器的使用
常使用到的指令
accelerometer.get_x() 取得加速度X方向的值,往左翻轉最大值-1024、往右翻轉最大值1024
accelerometer.get_y() 取得加速度Y方向的值,往前翻轉最大值-1024、往後翻轉最大值1024
accelerometer.current_gesture() 取得目前的手勢動作
accelerometer.is_gesture()
compass.calibrate() 先做指北針的校正
compass.heading() 方位角
左右翻轉
makecode程式
micropython程式
from microbit import *
while True:
x = accelerometer.get_x()
if x > 50:
display.show("R")
elif x < -50:
display.show("L")
else:
display.show("-")
accelerometer.get_x() 取得加速度X方向的值,往左翻轉最大值-1024、往右翻轉最大值1024
accelerometer.get_y() 取得加速度Y方向的值,往前翻轉最大值-1024、往後翻轉最大值1024
正面朝上呈現笑臉,否則生氣的臉
makecode程式
micropython程式
from microbit import *
while True:
gesture = accelerometer.current_gesture()
if gesture == "face up": # 正面朝上
display.show(Image.HAPPY)
else:
display.show(Image.ANGRY)
accelerometer.current_gesture() 取得目前的手勢動作
也可以如下寫法
from microbit import *
while True:
if accelerometer.is_gesture("face up"): # 正面朝上
display.show(Image.HAPPY)
else:
display.show(Image.ANGRY)
各方向的英文
晃動(shake)、下側偏低(up)、下側偏低(down)、正面朝上(face up)
背面朝上(face down)、左側偏低(left)、右側偏低(right)、自由掉落(freefall)
3g、6g、8g
顯示方向
顯示方位角
makecode程式
micropython程式
from microbit import *
compass.calibrate()
while True:
display.scroll(compass.heading())
sleep(1000)
compass.calibrate() 先做指北針的校正
compass.heading() 方位角
五、金手指腳位使用
常使用到的指令
pin0.is_touched() 觸摸到PIN0腳位
pin0.write_digital(1) 給予PIN0腳位高電位
pin5.read_digital() 讀取PIN5數位腳位的值
觸摸PIN1出現愛心圖示
makecode程式
micropython程式
from microbit import *
while True:
if pin0.is_touched():
display.show(Image.HEART)
else:
display.show(Image.HAPPY)
pin0.is_touched() 觸摸到PIN0腳位
讓接在Pin0的LED燈一亮一滅
makecode程式
micropython程式
from microbit import *
while True:
pin0.write_digital(1) # 亮
sleep(1000)
pin0.write_digital(0) # 滅
sleep(1000)
pin0.write_digital(1) 給予PIN0腳位高電位
顯示Pin5(A鍵)的值
makecode程式
怪怪的,一開始的值為1,按下A鍵後為0,理論上放開A鍵就要回復為1,但沒有變成1,真奇怪,不知哪裡出問題?
micropython程式
from microbit import *
while True:
display.show(pin5.read_digital())
pin5.read_digital() 讀取PIN5數位腳位的值
一開始的值為1,按下A鍵後為0,放開A鍵又回復為1,沒有問題