KittenBlock图形化编程
编程指令介绍
普通执行器 | |
---|---|
设置电机速度 | |
停止电机 | |
设置电机速度(双) | |
设置2kg舵机角度 | |
同一套占空比角度转换规则并不适用于所有型号的舵机,这种情况下,可以使用此积木块更具您的舵机数据表直接设置脉宽。 | |
编码电机(单) | |
设置速度 | |
停止运转 | |
读取当前速度 | |
以指定转速,设置旋转圈数 | |
以指定转速,设置旋转时间,受到起始阶段的加速度与结束阶段的减速度影响,此积木并不适合精确设置 | |
以指定转速,设置旋转角度 | |
编码电机(双) | |
初始化(双) | |
以指定速度,设置前进距离 | |
指定转向速度,幅度会根据前进速度而变化,前进速度为零则会原地旋转 | |
喇叭 | |
录制音频 | |
播放音频 | |
电池电压 | |
返回扩展盒电池电压 |
案例程序
电机控制
指定电机会在运行三秒之后停止运行。
舵机控制
运行程序后舵机角度会在180°和90°之间切换
电机(单):速度控制
- 通过未来板按钮控制电机速度
- 设置速度并且指定运行时间可以直接这个积木来完成
编码电机(单):指定角度与圈数
运行程序之后电机会选装两圈之后停下
编码电机(双)
编码电机双控的初始化积木,一些描述不大好理解,此处进行解释。
- 轮子直径
- 轮间距,为两个轮子中心之间的距离
- 左右视角相对于?
小车行驶姿态放于地面,面朝小车尾部。
运行程序之后,小车会先原地掉头,之后会以指定的速度和距离前进一段时间
录制与播放
按下按钮a开始录制,按下按钮b播放录制好的文件,如果再次按下按钮a会替换掉之前的同名录音文件。
案例-方糖模块控制
01-语音识别模块
电路连接
软件准备
打开Kittenblock1.88,对未来板插件版本进行更新(最新插件集成了方糖语音识别模块的控制)
硬件选择未来板,连接串口,首次连接软件会提示你更新未来板固件,选择是,进行固件更新
编程控制
1、编写一个简单的程序
2、点击运行,模块会进行语音播报“现在温度是,34,摄氏度”。再用唤醒词把模块唤醒,如“智能管家”,再说出“打开台灯”,“关闭台灯”,未来板屏幕会显示不同信息。
使用注意:
语音播报语句后,必须增加适当的延时,具体的延时时长需要自己尝试,一般词语之间2秒,长句子一般是4秒以上。语音播报指令是抢占式的,两条语音播报之间如果没有延时,第一条语音播报会被第二条语音播报覆盖过去。
3、如果想把程序下载到板子上,脱离电脑运行,点击代码,调出下载弹窗,点击下载。稍等片刻,下载完毕后,实现的效果和在线运行效果一致,但现在能脱离电脑运行了。
更多的语音控制命令
可以直接通过我们Kittenblock的未来板插件 ASR项目积木块或者下方的指令文档进行查看,点击查看原文
https://www.yuque.com/kittenbot/hardwares/mgx5l380f73wxpgv
进阶——自定义唤醒词
简介:自定义唤醒词,默认只能新增一个,如果再次录入,会提醒你重置学习数据。唤醒词的口令不一定是普通话,可以是各种方言,甚至是拟声词。
1、给语音识别模块通电
2、使用默认唤醒词对模块进行唤醒(“你好小喵”、“小喵小喵”、“智能管家”)
3、准备开始进行自定义唤醒词,口令“开始学习唤醒词”,等待模块语音引导提示,说出你要新增的唤醒词,例如粤语的“靓仔”,录入两遍后,“靓仔”就成为你新的唤醒词了!
4、尝试用“靓仔”唤醒你的模块吧!
进阶——自定义命令词
简介:自定义命令词,默认有十条空指令和五条有IO动作的指令,一共十五条,平时推荐使用前10条空指令
1、给语音识别模块通电
2、使用默认唤醒词对模块进行唤醒(“你好小喵”、“小喵小喵”、“智能管家”)
3、准备开始进行自定义命令词,如,口令“学习第一条命令词”,等待模块语音引导提示,说出你要新增的命令词,例如潮汕话的“胶己人”,录入两遍后,“胶己人”就成为你新的第一条命令词了!同理,你可以录入第二、第三条命令词等
4、进行编程,下载
5、使用唤醒词唤醒模块后,尝试用“胶己人”命令词测试,如果测试正确,未来板屏幕会显示“识别到第一条命令词”
02-方糖数码管模块
编程积木
积木-功能说明
序号 | 积木图 | 积木功能 |
---|---|---|
1 | 控制数码管的冒号打开 | |
2 | 控制数码管的单独位显示 |
电路连接
Microbit接口 | 使用线材 | |||
---|---|---|---|---|
方糖数码管模块 | I2C | 黑色PH2.0-4Pin接口线 |
案例1:按键计分-十进制
03-方糖LED模块
电路连接
编程
使用Kittenblock
选择在线运行或离线上传的方式运行程序查看效果
如果还不清楚如何在线运行或离线上传请参照 快速开始
效果展示
实现LED灯间隔一秒亮灭并接着呼吸灯效果一轮,循环往复。
由于呼吸灯效果是用过pwm实现,人眼能够明显观察到效果;但视频拍帧率较低,不同步会导致视觉闪烁
Micropython api
电机
电机运转
sugarbox.motor(电机序号,速度)
- 电机序号:0(所有电机),1~4(分别对应MA1,M1B,M2A,M2B);
- 速度:-255~255(转/分钟),正负数表示两个方向;
#运行程序之后,点机会开始运转
import sugarbox
sugarbox.motor(1,120)
电机停止
sugarbox.stop(电机序号)
- 电机序号:0(所有电机),1~4(分别对应MA1,M1B,M2A,M2B);
#运行此代码之后电机会在三秒后停止
import time
sugarbox.motor(1,120)
time.sleep(3)
sugarbox.stop(1)
舵机
角度设置
sugarbox.servo(舵机序号,角度/脉宽)
- 电机序号:1~4(对应S1~S4);
- 角度:0~180度;
- 脉宽:根据舵机数据表设置;
注:角度与脉宽选填一个即可
#舵机将会在90度与180度之间来回旋转
import sugarbox
import time
#sugarbox.servo(1,us=1500)
while True:
sugarbox.servo(1,degree=180)
time.sleep(1)
sugarbox.servo(1,degree=90)
time.sleep(1)
编码电机(单)
初始化
sugarbox.EMotor(电机序号)
- 电机序号:1或2
import sugarbox
em1 = sugarbox.EMotor(1)
em2 = sugarbox.EMotor(2)
电机运转
em1.run(速度)
- 速度:-230~230,正负数值表示两个方向
em1.run(160)
电机停止
em1.stop()
#编码电机em1会在运行三秒钟之后停止
import time
em1.run(160)
time.sleep(3)
em1.stop()
读取电机速度
返回电机速度,float类型
em1.get_speed()
em1.get_speed()
指定旋转圈数
em1.run_for_rotations(圈数, 速度, 是否阻塞)
- 圈数:指定旋转圈数;
- 速度:-230~230,设置旋转时的速度;
- 是否阻塞:bool类型,如果为True,则会等待车轮完成旋转圈数之后再继续往后执行,反之;
#电机以120转/分钟的速度旋转一圈
em1.run_for_rotations(round=1, speed=120, wait=True)
指定运行时间
em1.run_for_seconds(时间, 速度, 是否阻塞)
- 时间:指定旋转时间(秒);
- 速度:-230~230,设置旋转时的速度;
- 是否阻塞:bool类型,如果为True,则会等待车轮完成旋转时间之后再继续往后执行,反之;
#以120转/分钟的速度运行5秒
em1.run_for_seconds(sec=5, speed=120, wait=True)
指定旋转角度
em1.run_for_degrees(时间, 角度, 是否阻塞)
- 圈数:指定旋转时间(秒);
- 角度:0°~360°;
- 是否阻塞:bool类型,如果为True,则会等待车轮完成旋转时角度之后再继续往后执行,反之;
#电机以120转/分钟的速度旋转180度
em1.run_for_degrees(degree=180, speed=120, wait=True)
编码电机(双)
初始化
sugar_robot = sugarbox.EMotorDual(车轮直径, 轮间距, 左轮序号, 右轮序号, 方向)
- 车轮直径;
- 轮间距:两个后轮中点之间的距离;
- 左轮序号:1或2;
- 右轮序号:1或2;
- 反向:bool类型参数,默认为False
注:两个轮子的序号参数不能一样
sugar_robot = sugarbox.EMotorDual(diameter=6.5, gauge=14, left=1, right=2, dir=0)
指定前进距离
sugar_robot.run(速度, 距离, 阻塞)
- 速度:前进速度(转/分钟)
- 距离:前进距离(厘米)
- 是否阻塞:bool类型,如果为True,则会等待车轮完成前进距离之后再继续往后执行,反之;
#以120转/分的速度前进10厘米
sugar_robot.run(speed=120, distance=10, wait=True)
指定转向角度
sugar_robot.drive(转向速度, 转向角度, 速度, 阻塞)
- 转向速度:小车转向速度(度/秒);
- 转向角度:预计达到的转向角度;
- 前进速度:小车前进速度(转/分钟),配合转向速度达到让小车通过预期角度的弯道;如果前进速度为0,那么小车会原地旋转
- 阻塞:是否阻塞:bool类型,如果为True,则会等待车轮完成旋转时角度之后再继续往后执行,反之;
#转向角度为360度/秒,原地旋转180度
sugar_robot.drive(steer=360, degree=180, speed=0, wait=True)
音频
音频录制
sugarbox.audio.savewav(文件名, 时长)
- 文件名:录制之后生成的文件名称
- 时长:录制时长
import sugarbox
sugarbox.audio.savewav("filename.wav", sec=1)
播放音频
sugarbox.audio.playwav(文件名)
- 文件名:选择要播放的文件名
sugarbox.audio.playwav("filename.wav")