到目前为止,可以看到有些 Arduino 的函式,由于受到 mBlock 提供的积木功能而无法直接使用,照理来说,因为 mBlock 是基于 Scratch,应可以撰写Scratch Extensions,而按照Scratchbot新功能介绍的说明,可以透过 mBlock 中 ext 中 s2e 等档案的载入来自行扩充积木,不过,要修改的不是 mBlock 安装目录下的东西,而是 C:\Users\使用者\Documents\mBlock\libraries 下的档案,这点要注意!
升级至 mBlock 2.1.4
在 mBlock 2.1.4 中,可以使用“编辑/Arduino mode”,这可以看到积木程式转换为 Arduino 官方语言后的写法:
当检视画面转换为 Arduino mode 时,Arduino 不支援的指令,对应的 Scratch 积木方块就不能使用,因此,“事件”中的“当绿旗被点一下”的积木,要改成“Arduino 主程式”积木,而上图是〈mBlock & Arduino(8)光敏电阻、亮度感应器与光线追踪器〉中的程式,在 Arduino mode 中转换的结果。
这对于写程式不怎么熟的人来说还不错,大部份的时间还是可以使用积木来搭建程式,并看看 Arduino 的对应程式码,逐渐熟悉官方语言的写法,就算不想使用官方语言,也可以在积木程式搭建好之后,按下“用 Arduino IDE 编辑”,作些小修改,照样可以完成想要的功能,这样应该比写扩充来得简单一些 … XD
只是,这样就不能使用 Arduino 与 Scratch 直接互动,不过,程式写好了,就可以直接上传至 Arduino,不需要使用 USB 连接电脑了,只要透过 USB 或者是 2.1 mm 的 power jack 来外接电源,就可以执行了。
用 Arduino IDE 编辑
如果想要在 mBlock 的 Arduino mode 中,按下“用 Arduino IDE 编辑”来修改程式,必须下载、安装Arduino IDE,安装好之后,可以在“工具/板子”中设定你的 Arduino 板子,在“工具/序列埠”中设定连接埠:
在上传至 Arduino 之前,要先取消 mBlock 中的连接埠指定,这样才不会造成这两个软体要同时存取连接埠的冲突,接着执行“档案/上传”,就可以将程式上传至 Arduino 了!
如果你的程式码不需要经由 Arduino IDE 修改,也可以直接在 Arduino mode 下,按下“上传至 Arduino”按钮,这会将程式码编译并直接上传至 Arduino。
如果自行上传程式至 Arduino 了,无论是使用 Arduino IDE 上传,或者是在 mBlock 中按下“上传至 Arduino”按钮,想要再度使用 mBlock 控制 Arduino 的话,得记得重新上传 mBlock 的韧体(也就是在指定连接埠之后,再执行一次“串口连接/更新固件”)。
使用 PWM 控制伺服马达
在〈mBlock & Arduino(9)伺服马达控制〉中我们谈过,可使用 PWM 来控制伺服马达转动角度,不过,这要使用到delayMicroseconds函式,而 mBlock 中没有对应的方块,不过,你可以先设计以下的程式:
如果“等待”方块可以支援到如图设定的秒数,在切换至 Arduino mode 之后,直接按下“上传至 Arduino”按钮,伺服马达应该会转动 90 度,不过,等待方块对应的是delay函式,显然没办法支援到这么小的秒数设定,以我实际的测试为例,马达会转动,不过没有转动到 90 度左右。
这时可以按下“使用 Arduino IDE”编辑,找出delay(1000 * 0.0015),将之修改为delayMicroseconds(1500),之后执行“档案/上传”,在程式完成上传后,你的马达应该就可以转动 90 度左右了!
升级 mBlock 2.1.4 后的小问题
附带一提的是,mBlock 2.1.4 的“设置伺服马达脚位…”的角度指定,改成了下拉选单的方式:
这样的设计下,还是可以自行指定角度,不过,之前版本是只有自行指定角度而没有下拉选单,也因此,如果你开启之前 mBlock 版本下写的程式,而其中用到了“设置伺服马达脚位…”的话,新版的 mBlock 就不认得了:
这时记得修正为新的积木方块就是了 … XD
感谢CodeData用户:caterpillar的贡献 著作权归作者所有
整理:宁波家电物联网云平台,中科极动云
网友评论