智能手机遥控器

在之前的两篇文章中,我谈到了使用智能手机直接通过语音或使用另一个蓝牙智能手机来控制玩具车。 但是控制是原始的-发出了命令,汽车执行了该命令,停止并等待下一个命令。 这是由于在室内条件下汽车的高速行驶(大约1.2 m / s),以及发出命令的时间较长,以及无法使用菜单快速干预运动。 即使是标准遥控器也不允许控制。 在带有图形界面的新版遥控器中,我决定使用PWM来调节速度并模拟转向。



该图显示了智能手机控制的机器,以及在智能手机下方带有有效蓝牙遥控器程序的机器。

屏幕顶部是一个用手指移动的滑块(绿色圆圈)。

图片

当您从屏幕上移开手指时,从滑块到屏幕左边界的相对距离将传输到控制智能手机,在该智能手机上形成脉冲信号的横向调制。

GR.GET.POSITION c1, xx, yy r6=(xx-xc)*(xx-xc)+(yy-yc)*(yy-yc) IF r6<rkn THEN GR.TOUCH touched, x, y IF y < 120 THEN DO GR.TOUCH touched, x, y GR.GET.POSITION c1, x1,z1 GR.MOVE c1 ,x-x1, y1 GR.RENDER UNTIL !touched ENDIF GR.GET.POSITION c1, x1,z1 POPUP STR$(x1/w) BT.WRITE "#"+STR$(x1/w) ENDIF 

信号的最小占空比为20%,最大为80%。 理论上可能的频率为10 Hz。 实际上,它可能约为4-5 Hz,因为用于调制的信号会进入一般的命令流中,并且其中一些命令也会有时间延迟。 因此,在低占空比下,振动清晰可见。

两个绿色按钮-向前上方,向后下方。 右红色按钮-静止不动。 两个白色按钮-停止遥控器和打字机上的程序。 屏幕底部是三个紫色按钮,用于选择向左,笔直和向右移动的方向。 在
打开相应的模式时,按钮的中心会出现一个直径较小但相同但颜色较深的圆圈。 除了按钮之外,我还使用加速度计来控制运动方向。 当智能手机处于水平状态时,重力加速度矢量在0Y轴上的投影为0,这直接对应于运动(请参见上图)。



如果您抬起智能手机的左侧,则投影将带有+号,这将与右侧的移动相对应。



如果您抬起右侧,则带有一个符号-将与左侧的移动相对应。
该程序读取加速度计的读数,并将适当的命令发送到驾驶汽车的智能手机,并在按钮上显示模式。

 SENSORS.READ 1, sx, sy, sz IF (sy<=1)&(sy>-1)&(lrsh) THEN rsh=1 lsh=1 lrsh=0 GR.HIDE cc13 GR.HIDE cc15 GR.SHOW cc17 GR.RENDER BT.write "f" pause 100 ENDIF IF (sy>2)&(rsh) THEN rsh=0 lsh=1 lrsh=1 GR.HIDE cc13 GR.HIDE cc17 GR.SHOW cc15 GR.RENDER BT.write "r" pause 100 ENDIF IF (sy<-2)&(lsh) THEN lsh=0 rsh=1 lrsh=1 GR.HIDE cc17 GR.HIDE cc15 GR.SHOW cc13 GR.RENDER BT.write "l" pause 100 ENDIF 

这就是遥控器的工作方式。 汽车控制程序的操作也发生了变化,但不是很重要。 将来,我想通过记忆命令并以自动模式执行命令的功能来补充该程序。

Source: https://habr.com/ru/post/zh-CN428828/


All Articles