掌控板+Mixly+MixIO 初试物联网1-摇杆篇

本文介绍了如何利用掌控板、Mixly IDE和MixIO平台创建一个物联网远程摇杆控制系统。首先在MixIO上新建项目并添加摇杆组件,然后在Mixly中选择掌控板和mPython内核,建立MQTT连接。通过编程和烧录,实现了摇杆的远程控制,能够获取X、Y坐标,并可用于控制电机等设备的移动方向。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

掌控板+Mixly+MixIO(物联网小试)

在了解掌控板和Arduino一些硬件之后想了解一下物联网。

准备:

掌控板: 基于esp32的主控,支持mpython,兼容米思齐mixly IDE
mixly软件: 米思齐团队研发的图形化与代码编程结合的IDE
MixIO: 同样是米思齐团队开发的类似MQTT支持数据上传下发的云平台

关于掌控板查看之前博文
mixly官网下载
前往注册MixIO

一、在MixIO中新建项目

登录mixio,创建项目和进行项目管理
在这里插入图片描述
重点记下 项目名、账号名和密钥!!!

项目详细

点击右下角进入组件创建界面
在这里插入图片描述
添加一个摇杆控件,填写名称和主题名,至此完成了MIxIO端的创建
在这里插入图片描述

在这里插入图片描述

二、在mixly IDE中编写程序烧录进掌控板

将掌控板连接到电脑,打开mixly-IDE

mixly现在支持常见的Arduino系列、乐鑫ESP32/8266等,打开软件选择相应的主板类型,选择错误的话会缺少功能模块
在这里插入图片描述

进入软件右上角选择板类型内核,这里是掌控板,所以选mpython
在这里插入图片描述
点击物联网 》MixIO,创建MQTT连接
在这里插入图片描述

三、实现远程摇杆遥控

编写程序并烧录到掌控板中
在这里插入图片描述
编译并运行程序,左边浏览器进入刚刚创建的摇杆,点击右上角运行,mixlyIDE这边打开串口监视器即可看到打印出来的XY坐标
在这里插入图片描述
同时在浏览器这边的mixIO中的数据板块可以看到鼠标拖动摇杆后实时的数据
在这里插入图片描述
至此已经完成了解了如何搭配MixIO+mixlyIDE+掌控板制作一个简单的远程摇杆功能,通过获取到的X,Y坐标可以加一点编程来实现掌控板控制外接电机从而控制一些机器的移动方向。
其他控件操作原理基本类似。

### 如何在 Android Studio 中实现 Joystick 摇杆功能 #### 创建自定义视图类 为了实现在屏幕上操作虚拟摇杆的效果,通常会创建一个继承 `View` 类的自定义控件。此控件负责绘制并响应用户的触摸事件。 ```java public class VirtualJoystick extends View { private Paint paint; // 构造函数初始化画笔等资源 public VirtualJoystick(Context context, AttributeSet attrs){ super(context,attrs); init(); } private void init(){ paint = new Paint(Paint.ANTI_ALIAS_FLAG); setLayerType(LAYER_TYPE_SOFTWARE,null); // 禁用硬件加速以防止某些设备上的渲染问题 } } ``` #### 处理触摸事件 当用户与屏幕交互时,系统会触发一系列回调方法,在这里可以捕捉到手指的位置变化,并据此调整摇杆的状态[^2]。 ```java @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); int centerX = getWidth() / 2; int centerY = getHeight() / 2; // 绘制背景圆圈表示底座部分 paint.setColor(Color.GRAY); canvas.drawCircle(centerX,centerY,100,paint); // 计算当前拇指位置相对于中心的距离比例因子 double distanceFactor = Math.sqrt(Math.pow(pX-centerX,2)+Math.pow(pY-centerY,2)) / 100d; if(distanceFactor>1){distanceFactor=1;} // 根据距离缩放内部圆形大小模拟移动效果 float innerRadius=(float)(80*distanceFactor+20*(1-distanceFactor)); // 设置颜色为蓝色代表可动区域内的指针 paint.setColor(Color.BLUE); canvas.drawCircle((int)pX,(int)pY,innerRadius,paint); } // 触摸监听器用于接收手势动作 private float pX=0f,pY=0f; @Override public boolean onTouchEvent(MotionEvent event){ switch(event.getAction()){ case MotionEvent.ACTION_DOWN: getParent().requestDisallowInterceptTouchEvent(true); break; case MotionEvent.ACTION_MOVE:{ pX=event.getX();pY=event.getY(); invalidate(); // 请求重绘界面显示最新的状态 // 将坐标范围映射至[-1,+1],以便外部可以直接使用标准化后的值 float normalizedPX=((pX-getWidth()/2)/getWidth())*2; float normalizedPY=-(((pY-getHeight()/2)/getHeight())*2)-1; // 可选:通知观察者关于新的方向向量更新... return true;} default:return false; } } ``` #### 使用 XML 定义布局文件 最后一步是在应用程序界面上放置该自定义组件实例。可以通过修改 activity_main.xml 文件完成这一工作: ```xml <com.example.yourpackage.VirtualJoystick android:id="@+id/virtual_joystick" android:layout_width="wrap_content" android:layout_height="wrap_content"/> ``` 以上代码片段展示了如何构建基本版的虚拟操纵杆,并将其集成进基于 Android 平台的应用程序中。需要注意的是实际开发过程中可能还需要考虑更多细节优化用户体验,比如支持多点触控、边缘反弹效应以及更复杂的图形表现形式等等。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

安可瑞Ankory

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值