====== Elfshield Micropython API Reference ====== ===== microbit 模块 ===== 在使用Elfshield扩展板驱动直流电机、舵机时,请在你的脚本前加入: from microbit import * ==== 直流电机驱动API ==== **motor.init()**\\ 描述:电机驱动前初始化。\\ 参数:无\\ 返回值:无 **motor.runSpeed(index,speed)**\\ 描述:设置电机接口及速度。\\ 参数: ^index|设置电机接口,1为M1接口,2为M2接口| ^speed|设置电机速度,正速度为顺时针转,负速度为逆时针转,速度范围:-255~255,**速度只能为整数**| 返回值:无 示例:\\ 电机M1、M2正传5s,反转5s。 from microbit import * import time motor.init() speed = 255 while True: motor.runSpeed(1,value) motor.runSpeed(2,value) time.sleep_ms(5000) motor.runSpeed(1,-value) motor.runSpeed(2,-value) time.sleep_ms(5000) \\ ==== 舵机驱动API ==== **servo.init()**\\ 描述:舵机驱动前初始化。\\ 参数:无\\ 返回值:无 **servo.angle(index,angle)**\\ 描述:设置舵机接口及角度。\\ 参数: ^index|设置舵机接口,1为Servo1,2为Servo2| ^angle|设置舵机旋转角度,范围:0~180,**角度只能为整数**| 返回值:无 示例:\\ 舵机Servo1、Servo2在0和180度之间往回旋转。 from microbit import * import time servo.init() while True: servo.angle(1,0) servo.angle(2,0) time.sleep_ms(1000) servo.angle(1,180) servo.angle(2,180) time.sleep_ms(1000) \\ ===== music模块(蜂鸣器驱动API) ===== 在使用Elfshield扩展板上驱动板载的蜂鸣器时,请在你的脚本前写入: import music Elfshield驱动蜂鸣器所使用的是官方提供的music模块,相关api可点击以下链接查看:\\ music模块参考(英文):[[https://microbit-micropython.readthedocs.io/en/latest/tutorials/music.html#]]\\ music模块参考(中文):[[http://docs.dfrobot.com.cn/bxy/music.html]]\\ 示例1: import music import time while True: music.play('c2:2') time.sleep_ms(100) 示例2: import music import time music.set_tempo(bpm=220) # play Prelude in C. notes = [ 'c4:1', 'e', 'g', 'c5', 'e5', 'g4', 'c5', 'e5', 'c4', 'e', 'g', 'c5', 'e5', 'g4', 'c5', 'e5', 'c4', 'd', 'a', 'd5', 'f5', 'a4', 'd5', 'f5', 'c4', 'd', 'a', 'd5', 'f5', 'a4', 'd5', 'f5', 'b3', 'd4', 'g', 'd5', 'f5', 'g4', 'd5', 'f5', 'b3', 'd4', 'g', 'd5', 'f5', 'g4', 'd5', 'f5', 'c4', 'e', 'g', 'c5', 'e5', 'g4', 'c5', 'e5', 'c4', 'e', 'g', 'c5', 'e5', 'g4', 'c5', 'e5', 'c4', 'e', 'a', 'e5', 'a5', 'a4', 'e5', 'a5', 'c4', 'e', 'a', 'e5', 'a5', 'a4', 'e5', 'a5', 'c4', 'd', 'f#', 'a', 'd5', 'f#4', 'a', 'd5', 'c4', 'd', 'f#', 'a', 'd5', 'f#4', 'a', 'd5', 'b3', 'd4', 'g', 'd5', 'g5', 'g4', 'd5', 'g5', 'b3', 'd4', 'g', 'd5', 'g5', 'g4', 'd5', 'g5', 'b3', 'c4', 'e', 'g', 'c5', 'e4', 'g', 'c5', 'b3', 'c4', 'e', 'g', 'c5', 'e4', 'g', 'c5', 'a3', 'c4', 'e', 'g', 'c5', 'e4', 'g', 'c5', 'a3', 'c4', 'e', 'g', 'c5', 'e4', 'g', 'c5', 'd3', 'a', 'd4', 'f#', 'c5', 'd4', 'f#', 'c5', 'd3', 'a', 'd4', 'f#', 'c5', 'd4', 'f#', 'c5', 'g3', 'b', 'd4', 'g', 'b', 'd', 'g', 'b', 'g3', 'b3', 'd4', 'g', 'b', 'd', 'g', 'b' ] music.play(notes) \\ ===== neopixel模块(RGB灯驱动API) ===== 在使用Elfshield扩展板上驱动板载的3颗RGB灯,或者通过PORT_A~PORT_D驱动灯带时,请在你的脚本前写入: from elfshield import * import neopixel Elfshield驱动RGB灯所使用的是官方提供的neopixel模块,elfshield模模块只提供IO口的封装: ^elfshield ^microbit^ |OnBoard\_RGB | pin8 | | PORT\_A | pin13| | PORT\_B | pin14| | PORT\_C | pin15| | PORT\_D | pin16| 关于neopixel块的api请参考(英文版):[[https://microbit-micropython.readthedocs.io/en/latest/neopixel.html]]\\ 关于neopixel块的api请参考(中文版):[[http://docs.dfrobot.com.cn/bxy/neopixel.html]] 示例: from microbit import * from elfshield import * import time import neopixel from random import randint np = neopixel.NeoPixel(OnBoard_RGB,3) #创建一个RGB灯对象np,设置接口为板载RGB,数量为3 while True: for pixel_id in range(0, len(np)): # 为当前RGB灯指定0到60之间的随机红色,绿色和蓝色值 red = randint(0, 50) green = randint(0, 50) blue = randint(0, 50) np[pixel_id] = (red, green, blue) # 显示Neopixel条带上的当前像素数据 np.show() time.sleep_ms(500) np.clear() time.sleep_ms(500) \\ ===== elfshield模块 ===== 在使用Elfshield扩展板时,为了方便,请在脚本前写入: from elfshield import * ==== 板载声音传感器API ==== **volume_level()**\\ 描述:获取板载声音传感器的值\\ 参数:无\\ 返回值:0~1023的整数 示例: from microbit import * #write your program: from elfshield import * import time while True: value = volume_level() print(value) sleep(100) \\ ==== RGB超声波传感器模块API ==== **ultrasonic_setColor(port,index,red,green,blue)**\\ 描述:设置超声波内置RGB灯的颜色并显示\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| ^index|选择RGB灯,范围1~3,1为左,,2为右边,3为全选| ^red|红色分量| ^green|绿色分量| ^blue|蓝色分量| 返回值:无 **ultrasonic_setLED(port,index,status)**\\ 描述:mini RGB超声波上两颗黄色LED灯驱动(**仅适用于mini RGB超声波**)\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| ^index|选择LED灯,范围1~3,1为左边,2为右边,3为全选| ^status|设置LED灯的状态,0为灭,1为亮| 返回值:无 **ultrasonic_getDistance(port)**\\ 描述:获取超声波测距数据\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| 返回值:3~500(单位:cm) 示例: from elfshield import * import time while True: ultrasonic_setColor(PORT_A,3,255,255,255) r = ultrasonic_getDistance(PORT_A) print(r) time.sleep_ms(100) \\ ==== 双路巡线传感器API ==== **lineFollower_read(port,index)**\\ 描述:获取巡线传感器的值\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| ^index|选择探头,1为S1,2为S2| 返回值:0~1023,整数 示例: from elfshield import * import time while True: print("S1: ",lineFollower_read(PORT_A,1)) print("S2: ",lineFollower_read(PORT_A,2)) time.sleep_ms(100) \\ ==== 数码管模块API ==== **digitalModule_showNumber(port,number)**\\ 描述:数码管显示数字\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| ^number|设置需要显示的数字| 返回值:无 示例: from elfshield import * import time while True: digitalModule_showNumber(PORT_A,123) time.sleep_ms(1000) digitalModule_showNumber(PORT_A,1.26) time.sleep_ms(1000) digitalModule_showNumber(PORT_A,-100) time.sleep_ms(1000) digitalModule_showNumber(PORT_A,-1.04) time.sleep_ms(1000) \\ ==== 雾化器模块API ==== **waterAtomizer_set(port,status)**\\ 描述:设置雾化器模块工作状态\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| ^status|工作状态,0不工作,1工作| 返回值:无 示例: from elfshield import * import time while True: waterAtomizer_set(PORT_A,1) time.sleep_ms(200) waterAtomizer_set(PORT_A,0) time.sleep_ms(200) \\ ==== MP3模块API ==== **mp3_setDevice(port,device)**\\ 描述:设置MP3模块从哪个存储设备播放\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| ^device|2为选TF卡,4为选MP3模块板载FLASH| 返回值:无 **mp3_setVolume(port,value)**\\ 描述:设置MP3模块播放音量\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| ^value|音量值| 返回值:无 **mp3_playMusic(port,index)**\\ 描述:选择播放第index首\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| ^index|选择曲目,范围:1~3000| 返回值:无 **mp3_play(port)**\\ 描述:MP3播放\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| 返回值:无 **mp3_pause(port)**\\ 描述:MP3暂停播放\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| 返回值:无 **mp3\_prevMusic(port)**\\ 描述:上一曲\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| 返回值:无 **mp3\_nextMusic(port)**\\ 描述:下一曲\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| 返回值:无 **mp3\_isOver(port)**\\ 描述:判断音频是否播放完\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| 返回值:True或者False 示例:\\ MP3与4位按键模块组成简易MP3播放器 from elfshield import * import time mp3_setVolume(PORT_A,20) mp3_playMusic(PORT_A,3) display.show(Image.HAPPY) while True: r = led4button_readKey(PORT_B) print(r) if(r == 1): time.sleep_ms(100) if (r == 1): mp3_play(PORT_A) elif(r == 2): time.sleep_ms(100) if (r == 2): mp3_pause(PORT_A) elif(r == 3): time.sleep_ms(100) if (r == 3): mp3_nextMusic(PORT_A) elif(r == 4): time.sleep_ms(100) if (r == 4): mp3_prevMusic(PORT_A) time.sleep_ms(10) \\ ====5V 130电机模块API ==== **dc130motor_speed(port,speed)**\\ 描述:驱动130电机\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| ^speed|设置电机速度,正速度为顺时针转,负速度为逆时针转,速度范围:-255~255,**速度只能为整数**| 返回值:无 示例: from elfshield import * import time while True: dc130motor_speed(PORT_A,255) time.sleep_ms(1000) dc130motor_speed(PORT_A,-255) time.sleep_ms(1000) \\ ==== 继电器模块API ==== **relayModule_set(port,status)**\\ 描述:设置继电器状态\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| ^status|设置继电器状态,0为常闭接通,1为常开接通| 返回值:无 示例: from elfshield import * import time while True: relayModule_set(PORT_A,0) time.sleep_ms(1000) relayModule_set(PORT_A,1) time.sleep_ms(1000) \\ ==== RGBLED-5模块API ==== **RGBLED_setColor(port,index,red,green,blue)**\\ 描述:设置RGBLED-5模块所亮颜色并显示\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| ^index|选择RGB灯,范围0~5,0为全选| ^red|红色分量| ^green|绿色分量| ^blue|蓝色分量| 返回值:无 示例: from elfshield import * import time display.show(Image.HEART) while True: RGBLED_setColor(PORT_A,1,0,0,20) time.sleep_ms(100) RGBLED_setColor(PORT_A,2,0,0,20) time.sleep_ms(100) RGBLED_setColor(PORT_A,3,0,0,20) time.sleep_ms(100) RGBLED_setColor(PORT_A,4,0,0,20) time.sleep_ms(100) RGBLED_setColor(PORT_A,5,0,2,20) time.sleep_ms(100) RGBLED_setColor(PORT_A,0,20,20,20) time.sleep_ms(100) RGBLED_setColor(PORT_A,0,0,0,0) time.sleep_ms(100) \\ ==== 温湿度传感器API ==== **humitureSensor_readTemperature(port)**\\ 描述:温湿度传感器读取温度\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| 返回值:0~50(单位:℃) **humitureSensor_readHumidity(port)**\\ 描述:温湿度传感器读取湿度\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| 返回值:20~90(单位:百分比) 示例: from elfshield import * display.show(Image.HAPPY) while True: print("Humidity:",humitureSensor_readHumidity(PORT_A),"%") print("Temperature:",humitureSensor_readTemperature(PORT_A)) time.sleep_ms(500) \\ ==== 倾斜开关传感器API ==== **tiltSwitch_read(port,index)**\\ 描述:读取模块倾斜状态\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| ^index|选择需要读取的传感器,1或2| 返回值:True或者False 示例: from elfshield import * import time while True: print("Sw1: ",tiltSwitch_read(PORT_A,1)) print("Sw2: ",tiltSwitch_read(PORT_A,2)) time.sleep_ms(100) \\ ==== 火焰传感器API ==== **flameSensor_readValue(port,index)**\\ 描述:读取火焰传感器探头的值\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| ^index|选择需要读取的传感器,1~3| 返回值:0~255,整数 示例: from elfshield import * import time while True: print("flameSensor1: ",flameSensor_readValue(PORT_A,1)) print("flameSensor2: ",flameSensor_readValue(PORT_A,2)) print("flameSensor3: ",flameSensor_readValue(PORT_A,3)) time.sleep_ms(100) \\ ==== 可燃气体传感器API ==== **gasSensor_readValue(port)**\\ 描述:读取可燃气体浓度值\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| 返回值:0~255 示例: from elfshield import * import time while True: print(gasSensor_readValue(PORT_B)) time.sleep_ms(100) \\ ==== 人体红外传感器API ==== **PIRsensor_read(port)**\\ 描述:检测人体红外传感器状态\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| 返回值:布尔值,True或者False 示例: from elfshield import * import time while True: print(PIRsensor_read(PORT_A)) time.sleep_ms(100) \\ ==== 颜色识别传感器API ==== **colorSensor_setLight(port,status)**\\ 描述:设置颜色识别传感器上面LED灯的状态\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| ^status|0为灭,1为亮| 返回值:无 **colorSensor_whiteBalance(port)**\\ 描述:白平衡设置\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| 返回值:无 **colorSensor_readRed(port)**\\ 描述:读取红色分量\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| 返回值:0~65535,整数 **colorSensor_readGreen(port)**\\ 描述:读取绿色分量 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| 返回值:0~65535,整数 **colorSensor_readBlue(port)**\\ 描述:读取蓝色分量\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| 返回值:0~65535,整数 **colorSensor_readLight(port)**\\ 描述:读取光强\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| 返回值:0~65535,整数 示例: import machine from microbit import * #write your program: from elfshield import * import time import music colorSensor_setLight(PORT_A,1) time.sleep_ms(1000) colorSensor_setLight(PORT_A,0) time.sleep_ms(1000) colorSensor_setLight(PORT_A,1) time.sleep_ms(1000) colorSensor_whiteBalance(PORT_A) while True: print("Red: ",colorSensor_readRed(PORT_A)) print("Blue: ",colorSensor_readBlue(PORT_A)) print("Green: ",colorSensor_readGreen(PORT_A)) print("Light: ",colorSensor_readLight(PORT_A)) time.sleep_ms(100) \\ ==== 旋转电位器API ==== **potentiometer_value(port)**\\ 描述:读取旋转电位器返回值\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| 返回值:0~255,整数 示例: from elfshield import * import time while True: print(potentiometer_value(PORT_A)) time.sleep_ms(100) \\ ==== 滑动电位器API ==== **slidingPotentiometer_value(port)**\\ 描述:读取滑动电位器返回值\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| 返回值:0~255,整数 示例: from elfshield import * import time while True: print(slidingPotentiometer_value(PORT_A)) time.sleep_ms(100) \\ ==== 全向摇杆模块API ==== **joystick\_readX\_axis(port)**\\ 描述:读取摇杆X轴方向的值\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| 返回值:0~255,整数 **joystick\_readY\_axis(port)**\\ 描述:读取摇杆Y轴方向的值\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| 返回值:0~255,整数 示例: from elfshield import * import time while True: print("X: ",joystick_readX_axis(PORT_A)) print("Y: ",joystick_readY_axis(PORT_A)) time.sleep_ms(100) \\ ==== 单路触摸传感器API ==== **touchSensor_setMode(port,mode)**\\ 描述:设置触摸传感器工作模式\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| ^mode|模式0(默认)为当触摸时为True,释放为False;1为触摸后释放,保持True状态,再触摸释放,保持False状态| 返回值:无 **touchSensor_read(port)**\\ 描述:读取触摸传感器状态\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| 返回值:布尔值,True或False 示例: from elfshield import * import time touchSensor_setMode(PORT_A,0) while True: r = touchSensor_read(PORT_A) print(r) time.sleep_ms(100) \\ ==== 4位LED按键模块API ==== **led4button_readKey(port)**\\ 描述:按键检测,读取按键值\\ 参数: ^port|选择PORT口,范围PORT\_A~PORT\_D| 返回值:0~4,0无按键按下 示例: from elfshield import * import time while True: print(led4button_readKey(PORT_A)) time.sleep_ms(100)