本期的App Inventor 机器人专栏将结合Android 应用程序中常见的QRCode 扫描功能,让机器人可以读取QRCode 中的信息后执行对应的动作。您也会学到如何使用ZXing 的QRCode 产生网站来产生各种不同内容的二维条形码。 我们针对机器人来发展了一种特殊的二维条形码指令:「B,50,10,C,50,10」,依序代表了「左侧马达,左侧马达电力,左侧马达转动距离,右侧马达,右侧马达电力,右侧马达转动距离」。
什么是QRCode?如何产生二维条形码? QR 码是一种条形码, 比我们去便利商店买东西时,店员所扫描的传统条形码相比,可以储存更多数据。另一方面,QRCode 还可以说明现在这笔数据的型态,例如是电话号码、超链接、纯文本或是地理坐标等等,智能型手机就可以根据这些数据型态来开启对应的程序(如果是电话号码就会询问是否要拨号或是发送简讯), 非常方便。现在您在街头巷尾都可以看到各种QRCode ,扫瞄之后就可以造访网站或是作为折价劵,QRCode 在日本已经是一项非常普遍的技术。请到ZXing 的QRCode 网站,先选择数据类型为URL 超链接( 图1a), 输入您想要的网址后点选「Generate」就可以看到QRCode了。接着您就能使用手机上任何一种QRCode 扫描软件来扫瞄了( 图1b), 还没有的话请上Play下载。
图1a 选择数据类型为URL 后按下Generate 产升条形码。 图1b 使用ZXing 条形码扫描程序来辨识QRCode 。开始玩机器人 首先请把NXT 机器人准备好,并将左侧马达接在NXT 的输出端B , 右侧则是输出端C(注1)。请确认NXT主机的蓝牙是启动的,接着将NXT 主机与Android 手机进行蓝牙配对(注2),完成之后就可以把机器人放到一边了,启动蓝牙之后您可以从NXT 主机的屏幕左上角看到蓝牙的符号。
接下来依序介绍程序的各个功能:
STEP1:程序初始化与选取NXT主机 在程序初始化(Screen1.Initialize事件)时,将NXTList 清单指定为蓝牙配对装置列表(图2a)。等到联机成功后( 图2b), 才会显示触摸板,原本无法按下的「扫描二维条形码」以及「断线」等按钮这时也都可以操作了。
图2a 指定蓝牙配对装置列表。 图2b 程序进入画面。 点选主机完成并确认联机成功的话,会在画面中间的黄色区块显示所联机的NXT 主机蓝牙地址与名称。 图3a 联机成功后设定相关组件与显示设备名称。 图3b 联机完成后才可以扫描条形码。 STEP2:开启QRCode扫描程序本次程序使用了App Inventor 的BarcodeScanner 组件来进行扫描,虽然说是一个程序组件, 但其实也只是呼叫手机上预安装的条形码扫瞄程序而已。请到Play 上搜寻「ZXing」, 您可找到由ZXing 团队所开发的QRCode 扫描程序。按下「扫描二维条形码」按钮之后就会开启条形码扫瞄程序进行扫描。ZXing 扫描仪连结:
图4a 点选按钮来启动条形码扫瞄程序。 图4b 扫描中。 扫描完成后,会将扫描结果显示在Label_msg 上, 并透过split at any指令将扫描结果以「,」分割成6 段。例如「B,50,10,C,50,10」就会被切成「B」、「50」、「10」、「C」、「50」与「10」等六个文字后存入qrcode_list 这个文字数组中。 图5a 扫描完成后显示扫描结果。 图5b 正确显示扫描结果。 STEP3:机器人动起来! 按下「执行」按钮就会让机器人动起来, 在此使用了NxtDrive 中的MoveForward 指令, 接着将上一步中从扫瞄结果切出来的文字依序塞到MoveForward 指令的component、power与distance字段。 图6 填入MoveForward 指令的对应字段。 STEP4:断线 按下[ 断线] 按钮之后, 会中止蓝牙联机(BluetoothClient.Disconnect指令),并使按钮恢复到未联机时的状态。这时候您可以再次发起联机。 图7 按下[ 断线] 按钮时中断蓝牙联机。 STEP5:造访CAVE教育团队网站 点选画面下方的CAVE 教育团队图案就能造访我们的网站, 这是透过ActivityStarter 组件将网址指定给浏览器所完成的。为了避免用户误触按钮就直接跳出程序,我们使用了Notifer 组件来产生一个确认窗口(图9),当使用者点选「YES」时就会跳离程序,并启动手机上的浏览器来造访网站。 图8 按下CAVE 图像后显示对话窗口,点选OK则开启网站。 图9 显示对话窗口来询问是否跳离程序。 操作: 实际执行的时候,请先确认NXT 已经开机且蓝牙也启动了。请先点选「选择装置」来选择NXT 主机,接着点选「扫描二维条形码」按钮来扫描本文中所附的二维条形码,最后再按下「执行」按钮。机器人是否顺利地动起来了呢?本范例结合Android 程序中常用的二维条形码扫描功能控制机器人,您可以运用巧思制作一系列条形码让机器人进行寻宝大作战。使用条形码产生网站来设计更多条形码内容来丰富您的机器人!原文来源至: BC马达以电力50前进 BC马达以电力30后退 BC马达以电力60原地右旋转 BC马达以电力(40, 80)朝左前方移动