所有分类
主题 主题
平台 平台
我的工作台
userHead
注册时间 [[userInfo.create_time]]
创造力 [[userInfo.creativity]]
[[userInfo.remark]]
[[d.project_title]]
articleThumb
[[d.material_name]]
timelineThumb
进入工作台
折叠
所有分类 我的工作台
展开

掌控板+麦昆小车一样玩麦克纳姆轮

肥罗-阿勇 肥罗-阿勇 2019-11-25 12:24:56

前面发布了一篇关于小麦昆也玩麦克纳姆轮的文章,得到了大家的热烈反响

《小麦昆也玩麦克纳姆轮》地址:https://makelog.dfrobot.com.cn/article-1969.html

《小麦昆也玩麦克纳姆轮2》地址:https://makelog.dfrobot.com.cn/article-306079.html

感谢大家的鼓励。

然后最近一直在玩掌控板,想着可不可以用掌控板来代替microbit呢?

感觉应该是一样的,非常简单,立即动手试一试。

这一试才发现理想很丰满,现实很骨干。


熟练的打开 mind+1.6.1,选择掌控板和麦昆扩展版。

结果当我想要选择掌控板的无线广播功能的时候傻眼了!

mind+居然没有掌控板无线广播的代码模块

projectImage

脑瓜子嗡嗡的

 

那用mpython?

mpython又不支持麦昆

 

怎么办?只能求救大神们了。

在掌控板群里朱老师向我推荐了一篇文章

https://mc.dfrobot.com.cn/thread-297836-1-1.html
 

看了之后恍然大悟,原来还可以这么玩,以前没试过。

 

简单来说就是把一块掌控板当作WIFI的服务器,另一块掌控板当作客户端连接这个服务器

这样他们之间就可以实现无线通讯了,不需要借助其他外力。

不得不说掌控板实在太给力了。

 

有了这个法宝,接下来的事情就简单了。

我让后车当服务端,为什么呢?因为后车承担的任务比较少,主要配合前车进行轮子的转动就可以了

前车可能还要负责接收各种传感器,执行多项任务。

原理和之前一样就不多说了,不明白的看看我的《小麦昆也玩麦克纳姆轮》

步骤1 步骤1
后车程序
projectImage
代码 代码
	                    					/*!
 * MindPlus
 * mpython
 *
 */
#include <MPython.h>
#include <DFRobot_Iot.h>
#include <Maqueen_Motor.h>
#include <DFRobot_UDPServer.h>
// 函数声明
void onUdpServerRecvMsg(String message);
// 创建对象
DFRobot_Iot       myIot;
DFRobot_UDPServer myserver;
Maqueen_Motor     motor_mq;


// 主程序开始
void setup() {
	mPython.begin();
	myserver.setCallback(onUdpServerRecvMsg);
	myIot.setSoftAP("myap", "12345678");
	display.setCursorXY(0, 22);
	display.print(myIot.getWiFiSoftIP());
	myserver.setPort(8888);
}
void loop() {

}

// 事件回调函数
void onUdpServerRecvMsg(String message) {
	if ((message=="go1")) {
		motor_mq.motorRun(motor_mq.LEFT,motor_mq.CCW,200);
		motor_mq.motorRun(motor_mq.RIGHT,motor_mq.CCW,200);
	}
	if ((message=="go2")) {
		motor_mq.motorRun(motor_mq.LEFT,motor_mq.CW,200);
		motor_mq.motorRun(motor_mq.RIGHT,motor_mq.CW,200);
	}
	if ((message=="go3")) {
		motor_mq.motorRun(motor_mq.LEFT,motor_mq.CW,200);
		motor_mq.motorRun(motor_mq.RIGHT,motor_mq.CCW,200);
	}
	if ((message=="go4")) {
		motor_mq.motorRun(motor_mq.LEFT,motor_mq.CCW,200);
		motor_mq.motorRun(motor_mq.RIGHT,motor_mq.CW,200);
	}
	if ((message=="go5")) {
		motor_mq.motorRun(motor_mq.LEFT,motor_mq.CCW,200);
		motor_mq.motorRun(motor_mq.RIGHT,motor_mq.CW,200);
	}
	if ((message=="go6")) {
		motor_mq.motorRun(motor_mq.LEFT,motor_mq.CW,200);
		motor_mq.motorRun(motor_mq.RIGHT,motor_mq.CCW,200);
	}
}

	                    				
步骤2 步骤2
前车程序
projectImage
代码 代码
	                    					/*!
 * MindPlus
 * mpython
 *
 */
#include <MPython.h>
#include <DFRobot_Iot.h>
#include <Maqueen_Motor.h>
#include <DFRobot_UDPClient.h>
// 函数声明
void go1();
void go2();
void go3();
void go4();
void go5();
void go6();
// 创建对象
DFRobot_Iot       myIot;
DFRobot_UDPClient myclient;
Maqueen_Motor     motor_mq;


// 主程序开始
void setup() {
	mPython.begin();
	myIot.wifiConnect("myap", "12345678");
	while (!myIot.wifiStatus()) {yield();}
	myclient.connectToServer("192.168.4.1",8888);
	display.setCursorXY(42, 22);
	display.print(myIot.getWiFiLocalIP());
}
void loop() {
	go1();
	delay(2000);
	go2();
	delay(2000);
	go3();
	delay(2000);
	go4();
	delay(2000);
	go5();
	delay(1000);
	go6();
	delay(1000);
}


// 自定义函数
void go1() {
	myclient.sendUdpMsg("go1");
	motor_mq.motorRun(motor_mq.LEFT,motor_mq.CW,200);
	motor_mq.motorRun(motor_mq.RIGHT,motor_mq.CW,200);
}
void go2() {
	myclient.sendUdpMsg("go2");
	motor_mq.motorRun(motor_mq.LEFT,motor_mq.CCW,200);
	motor_mq.motorRun(motor_mq.RIGHT,motor_mq.CCW,200);
}
void go3() {
	myclient.sendUdpMsg("go3");
	motor_mq.motorRun(motor_mq.LEFT,motor_mq.CCW,200);
	motor_mq.motorRun(motor_mq.RIGHT,motor_mq.CW,200);
}
void go4() {
	myclient.sendUdpMsg("go4");
	motor_mq.motorRun(motor_mq.LEFT,motor_mq.CW,200);
	motor_mq.motorRun(motor_mq.RIGHT,motor_mq.CCW,200);
}
void go5() {
	myclient.sendUdpMsg("go5");
	motor_mq.motorRun(motor_mq.LEFT,motor_mq.CCW,200);
	motor_mq.motorRun(motor_mq.RIGHT,motor_mq.CW,200);
}
void go6() {
	myclient.sendUdpMsg("go6");
	motor_mq.motorRun(motor_mq.LEFT,motor_mq.CW,200);
	motor_mq.motorRun(motor_mq.RIGHT,motor_mq.CCW,200);
}

	                    				

自此 掌控板+小麦昆+麦克纳姆轮就可以愉快的玩耍了

当然这只是基础,其他的创意就等各位大神自由发挥了。


在最后有几点感慨

1、掌控板功能真的是非常强大,自带的WIFI功能非常使用。1.0已经这么厉害了,2.0会如何超越实在值得期待。掌控板加油!

2、有些事情看起来很简单,真正动手做才会发现其实没想想的那么简单,创客其实就是培养学生多动手。很有意义,比说教好多了。

3、不懂多求教,网上很多大神,而且玩创客的都愿意分享,这是很宝贵的精神品质。为所有玩创客的老师点赞。

最后再次感谢朱老师

Makelog作者原创文章,未经授权禁止转载。
2
3
评论
[[c.user_name]] [[c.create_time]]
[[c.parent_comment.count]]
|
[[c.comment_content]]