找回密码
 马上注册

QQ登录

只需一步,快速开始

查看: 16799|回复: 4

用Appinverntor编程蓝牙控制NXT小车

[复制链接]
发表于 2013-1-14 01:22:36 | 显示全部楼层 |阅读模式
本帖最后由 ntwuhui 于 2013-1-14 01:48 编辑

此处以8547默认搭建中Shooterbot为例。其余小车也可使用,只要注意所有端口均采用默认连接即可。(左马达:C,右马达:B,超声波:4号端口)
程序运行前,请先进行蓝牙配对。
另外Appinventor环境搭建及新建新的工程不在此赘述,详细过程参考这里

重要说明:部分手机由于蓝牙制式问题可能无法使用此程序。可先下载 TestNXT.rar (1.22 MB, 下载次数: 437) 测试下再继续!

本人手机在下载运行时,单击连接按钮显示已匹配列表后,选择一项时出现" Runtime Error Need BLUETOOTH_ADMINpermission: Neither user XXXXX nor current process hasandroid.permission.BLUETOOTH_ADMIN.",其中XXXXX为随机出现的5位数,查找多方资料说明是程序缺少BLUETOOTH_ADMIN权限(蓝牙管理权限),无法继续运行,经大蒜头的手机测试反馈可以使用。在此表示感谢!

控制小车运动源码: TestNXT.zip (3.09 KB, 下载次数: 162)
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
 楼主| 发表于 2013-1-14 01:24:39 | 显示全部楼层
本帖最后由 ntwuhui 于 2013-1-14 01:49 编辑

步骤1:设计程序界面(模块及相关属性)
先设置界面如图所示,模块及其属性设置如下:

1.jpg

先设计
不可见模块:
2.jpg
作用及目的可参考表格或上面的图示。
  
模块类型
  
所属组
命名
目的
BluetoothClient
Other Stuff
BluetoothClient1
连接到NXT
NxtDrive
LEGO MINDSTORMS
NxtDriver1
驱动小车车轮
NxtUltrasonicSensor
LEGO MINDSTORMS
NxtUltrasonicSensor1
检测物体
Notifier
Other Stuff
Notifier1
显示错误信息

模块相关属性:
  
名称
  
属性
属性值
作用
NxtDrive1
BluetoothClient
BluetoothClient1
将马达关联到蓝牙设备
DriveMotors
CB(默认值)
  
格式:XY,其中XY)为左(右)侧马达对应端口号
设置马达对应端口号
NxtUltrasonicSensor1
BluetoothClient
BluetoothClient1
将超声波关联到蓝牙设备
BelowRangeEventEnabled
True
允许超声波低于预设范围时激发BelowRange事件
SensorPort
4(默认)
设置超声波连接端口

可见模块:
3.jpg
  
模块类型
  
所属组
命名
目的
ListPicker
Basic
ConnectListPicker
选择已配对的设备进行连接
VerticalArrangement
ScreenArrangement
VerticalArrangement1
一种容器,用于存储垂直放置的模块
Button
Basic
ForwardButton
小车前进
HorizonalArrangement
ScreenArrangement
HorizonalArrangement1
一种容器,用于存储水平放置的模块
Button
Basic
LeftButton
小车左转
Button
Basic
StopButton
小车停止
Button
Basic
RightButton
小车右转
Button
Basic
BackwardButton
小车后退
Button
Basic
DisConnentButton
断开连接
模块相关属性:
  
名称
  
属性
属性值
作用
Screen1
Scrollable
False
禁止屏幕滚动
Title
NXT远程遥控
设置窗口文字
ConnentListPicker
FontSize
30
设置文字大小
Text
连接
设置文字内容
Width
Fill parent
设置宽度为充满屏幕
VerticalArrangement1
Width
Fill parent
设置宽度为充满屏幕
Height
Fill parent
设置高度为充满屏幕
ForwardButton
FontSize
40
设置文字大小
Text
设置文字内容
Width
Fill parent

Height
Fill parent

HorizontalArrangement1
Width
Fill parent

Height
Fill parent

LeftButton
FontSize
40

Text

Width
Fill parent

Height
Fill parent

StopButton
FontSize
40

Text

Width
Fill parent

Height
Fill parent

RightButton
FontSize
40

Text

Width
Fill parent

Height
Fill parent

BackwardButton
FontSize
40

Text

Width
Fill parent

Height
Fill parent

DisconnectButton
FontSize
30

Text
断开

Width
Fill parent

上述属性设置完毕,最后将VerticalArrangement1Visible属性设置为hidden,我们将在程序中将控制按钮显示出来。
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2013-1-14 01:24:55 | 显示全部楼层
本帖最后由 ntwuhui 于 2013-1-14 01:55 编辑

步骤2:搭建程序代码
单击“Open the Blocks Editor”打开块编辑器。
(注:此处每单击一次均会提示下载AppInventorForAndroidCodeblocks.jnlp,若从未下载可先下载后再使用,否则可单击取消手工打开先前已下载的文件)
1、显示蓝牙可匹配列表
4.jpg
2、创建蓝牙连接
5.jpg
3、断开NXT蓝牙连接
6.jpg
4、驱动小车

7.jpg
5、使用超声波传感器检测物体
当超声波传感器检测到有物体时,如图,不超过30cm时,小车停止。
8.jpg
超声波传感器模块有两个属性:BottomOfRangeTopOfRange,分别定义检测范围的下限和上限。默认分别被设为30cm90cm
超声波传感器有3个事件:BelowRange(低于预设范围时激发),WithinRange(介于预设范围时激发),AboveRange(超过预设范围时激发)。

9.jpg
完整程序如图所示:
10.jpg
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

 楼主| 发表于 2013-1-14 01:25:57 | 显示全部楼层
步骤3:调试运行
由于程序中需要使用蓝牙设备进行NXT连接,所以还是用真机调试比较好。步骤如下:
1、将手机与电脑用USB相连
2、在块编辑器中单击“Connect to Device”选取已连接设备。
说明:我测试所使用手机未能显示在此处,解决方法是先下载“豌豆荚”或者“91手机助手”将手机与该软件相连。再启动块编辑器就能够在列表中显示出来。
3、稍许,手机上会同步显示与网页上相同的界面。并且可以在做程序的同时同步测试程序。
步骤4:程序打包
单击“Package for Phone”,单击第三项“Downloadto Connected Phone”,此时将会出现编译界面,编译完会自动下载到手机运行。

如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

发表于 2013-1-14 15:04:47 | 显示全部楼层
不错的东西哦……
如果您觉得我的帖子对您有用,请不吝给我一个“赞”!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

手机版|中文乐高 ( 桂ICP备13001575号-7 )

GMT+8, 2024-12-27 12:45 , Processed in 0.255748 second(s), 22 queries .

Powered by Discuz! X3.5

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表