小麦昆也玩麦克纳姆轮

2019-11-114480
精华项目
AI 快速预览详细 收起
本文介绍了如何使用小麦昆小车和麦克纳姆轮制作四驱花车的过程。作者通过3D打印连接板将两个小麦昆连起来,解决了小麦昆只有两驱的问题。通过编程控制,实现了四驱功能。这个项目适合STEM教育场景,可以激发孩子的创造力。

今年是建国70周年,DFROBOT很有前瞻性的举办了创意花车的比赛

我也参加了,为祖国献礼。

运气不错,获得了三等奖,得到了一台麦昆小车。

project-image

想想第一次参加DFROBOT的活动也是参加麦昆挑战赛

但是最近一直忙着比赛,很久没和小麦昆一起玩了

最近在网上也很少见到大家玩小麦昆了,为什么呢?

因为最近大家都流行玩麦克纳姆轮,玩四驱了

小麦只有两驱,装不了麦克纳姆轮,所以暂时被大家冷落了

今年在逛MFSZ的时候突然发现一种很小的麦克纳姆轮

立马觉得这个和小麦昆很配,于是买了两套

project-image

一开始想法很简单,加一个支架把轮子装上就好

可是忘记了,麦昆只有两个驱动

难道要再加两个驱动?

想来想去,灵光一现,我可以用两个小麦昆连起来啊

说干就干,用3D打印机做了两个连接板

(如下图绿色那块就是我自己做的连接板,那个位置麦昆本身就留有孔洞,看来一开始麦昆就预想了这种连接方式,实在是太牛了,赞)

project-image

我这上面用一块大点的板子连起来,其实不必一定要这样,我这样是为了装18650电池

这个可以忽略

project-image

装好之后就是程序了,在这里我是用一块MICROBIT板来控制这辆小麦昆

要注意的是:连接的小麦昆,一个是前车,一个是后车

前车比较容易控制,后车要注意整体前进的时候,后车实际是往后走,整体左转的时候,后车是右转

记住了这个程序就很简单了

前车程序如下:

(特别表扬一下mind+1.6.0版本的截图功能,按一下 CTRL+G就截了下面的图,发帖非常方便,赞)

project-image
代码
/*!
 * MindPlus
 * maqueen
 *
 */
#include <Maqueen_Motor.h>
#include <Microbit_Matrix.h>
#include <DFMicrobit_Radio.h>
// 函数声明
void onRadioReceive(String message);
void goahead();
void goleft();
void goright();
void gostop();
// 静态常量
const uint8_t bbcBitmap[][5] = {
	{B00000,B11011,B00000,B01010,B00100}
};
// 创建对象
Maqueen_Motor motor;


// 主程序开始
void setup() {
	Radio.setCallback(onRadioReceive);
	Radio.setGroup(7);
	Radio.turnOn();
	MMatrix.show(bbcBitmap[0]);
	digitalWrite(8,HIGH);
	digitalWrite(12,HIGH);
	goahead();
}
void loop() {

}

// 自定义函数
void goahead() {
	motor.motorRun(motor.LEFT,motor.CW,200);
	motor.motorRun(motor.RIGHT,motor.CW,200);
}
void goleft() {
	motor.motorRun(motor.LEFT,motor.CCW,200);
	motor.motorRun(motor.RIGHT,motor.CW,200);
}
void goright() {
	motor.motorRun(motor.LEFT,motor.CW,200);
	motor.motorRun(motor.RIGHT,motor.CCW,200);
}
void gostop() {
	motor.motorRun(motor.LEFT,motor.CW,0);
	motor.motorRun(motor.RIGHT,motor.CW,0);
}

// 事件回调函数
void onRadioReceive(String message) {
	if ((message=="goleft")) {
		goleft();
		delay(1000);
	}
	if ((message=="goright")) {
		goright();
		delay(1000);
	}
	if ((message=="goahead")) {
		goahead();
		delay(1000);
	}
	if ((message=="gostop")) {
		gostop();
		delay(1000);
	}
}

后车程序如下:


project-image
代码
/*!
 * MindPlus
 * maqueen
 *
 */
#include <Maqueen_Motor.h>
#include <Microbit_Matrix.h>
#include <DFMicrobit_Radio.h>
// 函数声明
void onRadioReceive(String message);
void goahead();
void goleft();
void goright();
void gostop();
// 静态常量
const uint8_t bbcBitmap[][5] = {
	{B00000,B01010,B00000,B11011,B00100}
};
// 创建对象
Maqueen_Motor motor;


// 主程序开始
void setup() {
	Radio.setCallback(onRadioReceive);
	Radio.setGroup(7);
	Radio.turnOn();
	MMatrix.show(bbcBitmap[0]);
	goahead();
}
void loop() {

}

// 自定义函数
void goahead() {
	motor.motorRun(motor.LEFT,motor.CCW,200);
	motor.motorRun(motor.RIGHT,motor.CCW,200);
}
void goleft() {
	motor.motorRun(motor.LEFT,motor.CW,200);
	motor.motorRun(motor.RIGHT,motor.CCW,200);
}
void goright() {
	motor.motorRun(motor.LEFT,motor.CCW,200);
	motor.motorRun(motor.RIGHT,motor.CW,200);
}
void gostop() {
	motor.motorRun(motor.LEFT,motor.CCW,0);
	motor.motorRun(motor.RIGHT,motor.CW,0);
}

// 事件回调函数
void onRadioReceive(String message) {
	if ((message=="goleft")) {
		goleft();
		delay(1000);
	}
	if ((message=="goright")) {
		goright();
		delay(1000);
	}
	if ((message=="goahead")) {
		goahead();
		delay(1000);
	}
	if ((message=="gostop")) {
		gostop();
		delay(1000);
	}
}

控制板程序如下:

project-image
代码
/*!
 * MindPlus
 * microbit
 *
 */
#include <Microbit_Matrix.h>
#include <DFMicrobit_Radio.h>
#include <Microbit_Sensors.h>
// 函数声明
void TiltLeftEvent();
void TiltRightEvent();
void LogoUpEvent();
void LogoDownEvent();
// 静态常量
const uint8_t bbcBitmap[][5] = {
	{B00100,B01000,B11111,B01000,B00100},
	{B00100,B00010,B11111,B00010,B00100},
	{B00100,B01110,B10101,B00100,B00100},
	{B10001,B01010,B00100,B01010,B10001}
};


// 主程序开始
void setup() {
	Sensors.onGesture(Sensors.TiltLeft,TiltLeftEvent);
	Sensors.onGesture(Sensors.TiltRight,TiltRightEvent);
	Sensors.onGesture(Sensors.LogoUp,LogoUpEvent);
	Sensors.onGesture(Sensors.LogoDown,LogoDownEvent);
	Radio.setGroup(7);
	Radio.turnOn();
}
void loop() {

}

// 事件回调函数
void TiltLeftEvent() {
	Radio.send("goleft");
	MMatrix.show(bbcBitmap[0]);
}
void TiltRightEvent() {
	Radio.send("goright");
	MMatrix.show(bbcBitmap[1]);
}
void LogoUpEvent() {
	Radio.send("goahead");
	MMatrix.show(bbcBitmap[2]);
}
void LogoDownEvent() {
	Radio.send("gostop");
	MMatrix.show(bbcBitmap[3]);
}

先把小麦昆吊起来看看效果

还不错,符合预期

再下地实际测试

运行的很好,因为只用了一个18650电池,跑起来还是有点慢。

后期再慢慢改进。

这个只是抛砖引玉,给大家提供一种小麦昆装麦昆的思路

至于可以做什么,嘿嘿

小麦昆在两驱世界里无所不能,现在可以去四驱麦轮世界里再次展现其强大的能力了

最后建议dfrobot尽快推出四驱的小麦昆

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(4)
_深蓝_
_深蓝_
厉害厉害,拥有自己的小麦昆了也试试
_深蓝_
_深蓝_
SFSZ是啥商城?
于涛
于涛
这个轮子好神奇
于涛
于涛
这个轮子好神奇
- 没有更多了 -