项目实践:Mixly下代码的复现

驱动电机、舵机部分

  • 一、初始化
  • 初始化串口
    找到Serial波特率板块,初始化为115200

  • 电机、舵机驱动初始化
    由于舵机在后续函数的编写中带有初始化,此处仅对电机做说明
    找到HR8833电机驱动初始化,根据管脚号分别对4组电机管脚进行初始化

  • 二、自定义函数
  • 1.控制电机具体步骤
    在函数部分选中无返回值、无参数自定义函数
    找到HR8833电机驱动设置,设置速度

Mixly-forward

  • 2.控制舵机具体步骤
    在函数部分选中有返回值、有参数自定义函数,主要用于计算并返回duty值,控制舵机角度,示例如下:

Mixly-setAngle


实现对抓手运动状态控制的函数采用无返回值、无参数自定义函数,使用输入\输出部分绑定管脚赋值的图形模块

  • 三、常见问题
  • 电机与舵机驱动采用不同图形模块,注意区分
  • 电机部分组号要依次设置为1-4,这样可以保证PWM通道从0开始
  • 舵机部分由于绑定引脚+赋值图形模块采用ledcWrite函数,因此提前自定义setAngle函数用于计算duty值,需以如下形式写入具体函数: Mixly-init

连接WiFi、发送指令部分

  • 一、初始化
  • WiFi连接
    找到链接WiFi图形,输入需要连接的WiFi名称和密码

  • 初始化代码样例 Mixly-setup

  • 二、发送指令部分
  • 声明变量
    由于后续效果是使用键盘快捷键控制小车运动,因此此处需要声明字符类型的变量key

  • TCP服务端初始化
    在设置-管理库-导入库中选择小绿科技-WIFI V2 Free,下载并导入
    选择TCP服务端初始化模块,链接名默认client

  • 快捷键与函数的对应
    找到如果-执行模块,先判断client是否可用
    嵌套重复-执行模块,若符合client有链接的条件重复执行以下内容
    再次嵌套如果-执行模块,判断是否满足client有数据可读条件
    将key赋值为client中读取的单字节并打印
    嵌套如果-执行-否则如果执行模块,判断key是否与目标的单字节相同,若相同则执行相应函数

  • 代码样例 Mixly-TCP

  • 三、TCP下向服务端发送消息
  • 此处以Vscode下编写的代码为示例
  • 创建一个python文件,写入以下内容:
import socket

# 创建socket对象
socket_client = socket.socket()
# 连接到服务器
socket_client.connect(("172.16.203.162", 80))
//此处需将172.16.203.162替换为实际的IP地址

# 持续发送和接收消息
while True:
    send_msg = input("请输入要发送给服务端的消息:")
    if send_msg == "exit":
        break
    socket_client.send(send_msg.encode("UTF-8"))

# 关闭连接
socket_client.close()
  • 四、常见问题
  • key变量定义的必要性
    首先,TCP通信是流式传输,可能分多次接收数据。key作为缓冲区,暂存数据,确保每次只处理一个明确的指令字节。 ​
    ​其次,全局变量key可以在不同函数或条件分支中共享,避免重复读取客户端数据(可能引发数据错位)。 ​
    若未来需要支持更多指令(如速度调节),只需扩展key的取值判断逻辑,无需重构通信部分。

  • 要在如果-执行模块添加否则执行的方法与自定义函数中添加参数的方法相同,通过点击左上角设置并将模块拖拽到如果/输入中即可