7734| 8
|
[项目] AppInventor+掌控板做的遥控小车 |
将AppInventor与掌控板互联成功后,开始尝试扩展更多的应用,图形化编程也能做好多内容。下面和大家分享一下遥控小车的案例。 一、App Inventor与掌控板的协作原理分析 手机与掌控板的协作过程中,掌控板充当了服务器的角色,而手机上的App则是客户端,客户端通过ip地址访问服务器,从而实现两者之间的信息往来。当客户端发出保存数据请求时,请求信息中会携带两个参数: 标记和数据,服务器会将“标记”解释为掌控板上的输出资源,例如,当标记为buzz时,输出资源为蜂鸣器,并将“数值”解释为具体的输出值,如蜂鸣器的鸣响频率。同样,当客户端发出读取数据请求时,会携带一个“标记”参数,服务器会将参数解释为掌控板上的某个资源,并将该资源的状态返回给客户端,例如,当标记为“buttona”时,掌控板将返回按键A的状态(1为断开,0为连通)。 由此可知,如果想在安卓应用中获取掌控板的状态数据,或控制掌控板的输出,就必须清楚地知道掌控板上各项资源的标记、名称,以及接收数据的规格,这也正是本文的目的所在。下面表格中列出的相关信息,可以帮助开发者实现安卓应用与掌控板之间的协作。 资料出处:https://mp.weixin.qq.com/s/o5KvA-7mjRTvaaHqk9wZUA(感谢金从军老师、谢作如老师!) 二、硬件准备与连接: 启动掌控板:编写程序(使用mpythonX),启动后屏幕上显示掌控板在局域网中的 IP地址,如图所示: 设计好一辆小车并组装好: 采用了M20马达、电机驱动模块(盛思)、LED(盛思)、N+电池盒和拓展板 三、AppInventor设计用户界面。 设想功能: 1、控制小车前后左右 2、控制车灯开关 3、传输文本信息至掌控板显示屏显示 根据以上三点,设计好用户界面: 四、程序思路剖析: 本程序是向掌控板发出保存数据请求,故需要用到以下模块: 当客户端发出保存数据请求时,请求信息中会携带两个参数: 标记和数据,服务器会将“标记”解释为掌控板上的输出资源,例如,当标记为buzz时,输出资源为蜂鸣器,并将“数值”解释为具体的输出值,如蜂鸣器的鸣响频率。 根据TinyWebIO服务协议表,我们本次要用到的标签有:oled和pina两类。 (1)设置IP地址 (2)传输文本信息及坐标 (3)清屏 (4)开灯、关灯(灯接到了扩展板p1引脚) (5)前后左右 这里原本的思路是:手机按下按钮,改变掌控板某个引脚的模拟值,然后再从掌控板入手,读取当前模拟值,判断后执行不同的操作。但是发现无法再从掌控板中读取数据,因为“发送→改变”这个过程是一气呵成的,在浅层面上无法进行读取这个操作。所以决定分析驱动电机模块的代码,在AppInventor上面完成。 幸运的是,Bluebit里面电机驱动模块的代码并不复杂: 我们可以发现,其实就是通过改变两个引脚之间的模拟信号差值来调整速度及方向,所以编程如下: 小小尝试,若有不足,请不吝赐教 |
© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed