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

熊出没之森林大拯救

章 2019-06-20 10:04:01
0
0
简单
projectImage

【介绍】

       宁静祥和的东北原始森林,空气清新,万物复苏,熊大和熊二两兄弟在林间追逐奔跑,非常快乐,正在此时,来了一名伐木工——光头强,于是森林的宁静被打破了,美丽的大森林面临前所未有的危机,为了保护家园,熊大、熊二和光头强之间发生的保护森林和盗砍盗伐的环保大战。动画片里的熊大和熊二赤手空拳与光头强展开大战,为了更好的保护森林,我们为它们配备了一辆“麦昆战车”。这不,光头强又来砍伐树木了,于是熊大和熊二就驾着“麦昆战车”穿过树林、越过草丛、驶过跷跷板、跨过桥梁,移开大树,最后把光头强给抓住并送大大牢,保护了美丽的大森林。


材料清单 材料清单
1x
麦昆机器人
1x
麦昆CR123A锂电池电源管理模组
2x
舵机
1x
硬纸板
1x
雪糕棒
1x
积木
1x
塑料管
1x
电工胶带
1x
回形针
1x
胶枪
1x
铜柱
1x
木板
1x
micrbit
1x
Mind+


【制作过程】


步骤1 步骤1
改装麦昆战车

 

      1、把麦昆CR123A锂电池电源管理模组安装在麦昆小车上。

projectImage

 

      2、把两个舵机如下图所示分别用热熔胶固定在木板上。

projectImage


       3、用铜柱把木板平台与麦昆小车连接起来。并把木板下面的舵机接在P1针脚上,把木板上面的舵机接下P2针脚上。

projectImage


       4、把下图的连接件插在木板下面的舵机上,这个部分在执行任务时主要有两个作用:

             一是从上往下旋转可以把跷跷板压下来以方便麦昆战车通过(下面的关卡 3)。

             二是从下往上旋转可以把挡在路中间的大树翻开让麦昆战车通过(下面的关卡 5) 。

projectImage
projectImage


       5、做好下图的部件并把它插到木板上面的舵机上,这个部件的主要作用是达到终点时,前面部分穿过光头强的帽子,再转动舵机把光头强给提起来,并显示“乱伐树林  抓走坐牢”的标语,提醒人们不能乱伐树林,要保护树林(下面的关卡 6)。

projectImage
projectImage

 

       6、最后打印熊大和熊二的图片并把它们固定在麦昆战车上,如下图:

projectImage



步骤2 步骤2
设计制作赛道

       从出发到抓住光头强的过程中共设计6个关卡,其中有简单的也有难的,赛道全图如下:


projectImage

 

      1、第一关:穿过树林

        这一关与第二关穿插在一起的,主要是让麦昆战车在树林间沿着S形的路线行走。

projectImage


       2、第二关:越过草丛

        这一关穿插在第一关的中间,在S形的路线上有一草丛挡在路中间,这个草丛会由麦昆战车推着转动,直到麦昆战车驶离草丛。

projectImage

 

       3、第三关:驶过跷跷板 

       来到第三关的地方,由跷跷板高的一头面向麦昆战车,麦昆战车无法经过,所以麦昆战车就让前面的舵机转动一定的角度,把跷跷板压下来,这样麦昆战车就能顺利通过。

projectImage

       

       4、第四关:跨过桥梁 

        这一关原来的想法是:桥面无法承受麦昆战车的重量,如果不采取措施,麦昆战车就会掉下去,于是就设计在桥上有一条钢缆,在麦昆战车经过桥面中间前,让顶部的舵机伸出挂杆,挂在桥上的钢缆以减轻桥面受到的重量,让麦昆战车顺利通过,通过后再收回挂杆。在实际的调试过程中,很难实现,所以就取消了这个设计,最后只是让麦昆战车能驶过桥梁就行了。

projectImage

 

        5、第五关:移开障碍物大树 

        在麦昆战车前进的过程中,一棵大树挡住了去路,怎么办?我有武器,继续转动麦昆战车前面的舵机,把大树翻到路边,继续前进。

projectImage
projectImage

 
         6、第六关:抓住光头强,送入大牢

         通过种种障碍,麦昆战车终于到达光头强砍树地点,抓住光头强,并把他关进了大牢,使美丽的大森林免受破坏。

projectImage
projectImage
步骤3 步骤3
编写程序

        在麦昆战车巡线的基础上增加了一些功能,通过线路的断点来判断执行相应的排障功能。完成程序如下:

projectImage
代码 代码
	                    					#include <DFRobot_Servo.h>
#include <Maqueen_Motor.h>
#include <Microbit_Sound.h>

double df_N;

Servo myservo1;
Maqueen_Motor motor;
Servo myservo2;
void _8DF7_8DF7_677F();
void _5DE1_7EBF();
void _8B66_62A5();
void _6293_5149_5934_5F3A();
void _79FB_6811();
void _7A7F_8D8A_4E1B_6797();

void _8DF7_8DF7_677F()
{
	if ((df_N == 0)) {
		myservo1.angle(abs(15));
		delay(1000);
		myservo1.angle(abs(170));
		delay(2000);
		motor.motorRun(motor.LEFT,motor.CW,80);
		motor.motorRun(motor.RIGHT,motor.CW,80);
		delay(1000);
		myservo1.angle(abs(15));
		df_N = df_N + 1;
		while ((!((String("1") + String("1")) == (String(digitalRead(13)) + String(digitalRead(14)))))) {
			_5DE1_7EBF();
		}
	}
}

void _5DE1_7EBF()
{
	if (((String("0") + String("0")) == (String(digitalRead(13)) + String(digitalRead(14))))) {
		motor.motorRun(motor.LEFT,motor.CW,80);
		motor.motorRun(motor.RIGHT,motor.CW,80);
	}
	else {
		if (((String("1") + String("0")) == (String(digitalRead(13)) + String(digitalRead(14))))) {
			motor.motorRun(motor.LEFT,motor.CW,80);
			motor.motorRun(motor.RIGHT,motor.CW,0);
		}
		else {
			if (((String("0") + String("1")) == (String(digitalRead(13)) + String(digitalRead(14))))) {
				motor.motorRun(motor.LEFT,motor.CW,0);
				motor.motorRun(motor.RIGHT,motor.CW,80);
			}
			else {
				motor.motorStop(motor.LEFT);
				motor.motorStop(motor.RIGHT);
			}
		}
	}
}

void _8B66_62A5()
{
	for (int count = 0; count < 3; count++) {
		MSound.playTone(0, 262, BEAT_1);
		MSound.playTone(0, 392, BEAT_1);
	}
}

void _6293_5149_5934_5F3A()
{
	if ((df_N == 2)) {
		delay(1000);
		myservo2.angle(abs(60));
		delay(1000);
		motor.motorRun(motor.LEFT,motor.CW,80);
		motor.motorRun(motor.RIGHT,motor.CW,80);
		delay(200);
		motor.motorStop(motor.LEFT);
		motor.motorStop(motor.RIGHT);
		delay(2000);
		myservo2.angle(abs(110));
		df_N = df_N + 1;
		_8B66_62A5();
	}
}

void _79FB_6811()
{
	if ((df_N == 1)) {
		delay(1000);
		myservo1.angle(abs(170));
		delay(2000);
		myservo1.angle(abs(15));
		motor.motorRun(motor.LEFT,motor.CW,80);
		motor.motorRun(motor.RIGHT,motor.CW,80);
		delay(1500);
		df_N = df_N + 1;
		while ((!((String("1") + String("1")) == (String(digitalRead(13)) + String(digitalRead(14)))))) {
			_5DE1_7EBF();
		}
	}
}

void _7A7F_8D8A_4E1B_6797()
{
	if ((df_N == 0)) {
		while ((!((String("1") + String("1")) == (String(digitalRead(13)) + String(digitalRead(14)))))) {
			_5DE1_7EBF();
		}
		_6293_5149_5934_5F3A();
	}
}

void buttonACallback()
{
	df_N = 0;
	delay(5000);
	_8B66_62A5();
	_7A7F_8D8A_4E1B_6797();
	_6293_5149_5934_5F3A();
	_8DF7_8DF7_677F();
	_79FB_6811();
	_6293_5149_5934_5F3A();
}


void setup() {
	myservo1.attach(1);
	myservo2.attach(2);
	myservo1.angle(abs(170));
	myservo2.angle(abs(170));
	onEvent(ID_BUTTON_A, PRESS, buttonACallback);
}

void loop() {

}
	                    				


【视频演示】





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