麦昆小车赛道设计大赛,设计赛道是一个很需要脑洞的活动,这让我不禁想起一个游戏,名字叫《三国杀》,许多人通过玩这个游戏而记住了三国的历史人物和历史事件,给了我一定的启发,我就想如何能通过一个赛道游戏,也让玩儿这个游戏的人有所收获呢。苏教版科学四年级下册第2单元《蚕的一生》这个单元对于有养蚕经历的人来说是很简单的一课,但是对于大多数城市的孩子没有养蚕经历,那么这2单元就有点抽象难理解了
如何能将这些科学学科内容和steam教育相结合,是我一直在思考的内容,我就想如果把蚕的一生设计成赛道,通过完成这个赛道,将科学学科内容很好的掌握内化,从而达到教学目标,这不是一个两全其美的想法吗?于是我开始先用毛笔和宣纸画了一个草图。
这个图基本上没有任何美感,原本是想用国粹元素体现,没想到毛笔蘸上墨汁一碰宣纸,就成一大片,所以我又重新选购材料。
材料清单
- 书皮纸 X3
- 铅笔 X6
- 毛笔 X1
- 墨汁 X1
- 麦昆小车 X1
- 可乐瓶 X1
- 空药盒 X1
- 空茶叶盒 X1
- 胶带 X1
这是我自己制作的画赛道的笔
3张包书皮纸用胶带贴在一起,变成一张大纸
先用一张宣纸试试
用花纹面还是用白面,用麦昆小车的巡线传感器试了试,这个花纹面没问题,能被识别为1。果断采用花纹面。
先用自制画笔画出轮廓,再用毛笔蘸墨汁描出来,这可是个细活。极其考验耐心和细心。
下面这个图是不是就有点意思了,什么都在于装饰。
上图中的结茧部分的是用可乐瓶,剪掉头尾,然后用胶带交叉贴出来网状,就是比拟蚕吐丝结的茧。最后羽化成蝶是要飞的,可是麦昆小车是飞不起来的,所以就想着用一道35度的斜坡来代替飞起来了。
手工部分就是这样,接下来是编写程序。首先是巡线程序:
彩灯程序:
小蚕蠕动画面程序:
主程序:
以下是完成视频:
大家可仔细看最后这个跑马换色灯,这个的意思是羽华成蝶后再次产卵。这个跑马灯做起来比较费事,因为麦昆小车的四个全彩RGB灯的管脚不能用变量,所以是一个一个编写的。不能用变量真是累啊!
#include <Maqueen_Motor.h>
#include <DFRobot_NeoPixel.h>
#include <Microbit_Matrix.h>
Maqueen_Motor motor;
DFRobot_NeoPixel rgb_display_15;
void df_line();
void df_line()
{
if (((digitalRead(14) == 1) && (digitalRead(13) == 1))) {
motor.motorRun(motor.LEFT,motor.CW,0);
motor.motorRun(motor.RIGHT,motor.CW,0);
delay(1000);
}
else {
if (((digitalRead(14) == 1) && (digitalRead(13) == 0))) {
while ((!(digitalRead(14) == 0))) {
motor.motorRun(motor.LEFT,motor.CW,10);
motor.motorRun(motor.RIGHT,motor.CW,250);
}
}
else {
if (((digitalRead(14) == 0) && (digitalRead(13) == 1))) {
while ((!(digitalRead(13) == 0))) {
motor.motorRun(motor.LEFT,motor.CW,250);
motor.motorRun(motor.RIGHT,motor.CW,10);
}
}
else {
if (((digitalRead(14) == 0) && (digitalRead(13) == 0))) {
motor.motorRun(motor.LEFT,motor.CW,30);
motor.motorRun(motor.RIGHT,motor.CW,30);
}
else {
}
}
}
}
}
void setup() {
while (!((Button_A.isPressed() && !Button_B.isPressed()))) {
}
delay(500);
motor.motorRun(motor.LEFT,motor.CW,0);
motor.motorRun(motor.RIGHT,motor.CW,100);
delay(2600);
motor.motorRun(motor.LEFT,motor.CW,0);
motor.motorRun(motor.RIGHT,motor.CW,0);
delay(100);
rgb_display_15.begin(15, 4, 255);
rgb_display_15.setRangeColor(0, 0, 0xFF7D00);
MMatrix.print("1");
motor.motorRun(motor.LEFT,motor.CW,0);
motor.motorRun(motor.RIGHT,motor.CW,100);
delay(2600);
motor.motorRun(motor.LEFT,motor.CW,0);
motor.motorRun(motor.RIGHT,motor.CW,0);
delay(100);
rgb_display_15.setRangeColor(3, 3, 0x00ff00);
MMatrix.print("2");
motor.motorRun(motor.LEFT,motor.CW,0);
motor.motorRun(motor.RIGHT,motor.CW,100);
delay(2600);
motor.motorRun(motor.LEFT,motor.CW,0);
motor.motorRun(motor.RIGHT,motor.CW,0);
delay(100);
rgb_display_15.setRangeColor(1, 1, 0x0000ff);
MMatrix.print("3");
motor.motorRun(motor.LEFT,motor.CW,0);
motor.motorRun(motor.RIGHT,motor.CW,100);
delay(2600);
motor.motorRun(motor.LEFT,motor.CW,0);
motor.motorRun(motor.RIGHT,motor.CW,0);
delay(100);
rgb_display_15.setRangeColor(2, 2, 0xffff00);
MMatrix.print("4");
motor.motorRun(motor.LEFT,motor.CW,200);
motor.motorRun(motor.RIGHT,motor.CW,200);
delay(100);
motor.motorRun(motor.LEFT,motor.CW,0);
motor.motorRun(motor.RIGHT,motor.CW,0);
delay(300);
while ((!false)) {
df_line();
}
}
void loop() {
}
至此,这个赛道设计算是完成了,每次完成一个项目,都需要耗费大量脑力,体力,精力和时间,这个又是整整两天才完成的,整个手工是我完成的,程序的编写是儿子完成,包括拍摄的视频都是儿子完成的,儿子在学校的校园电视台还是学会了好多技能,这次的视频我觉得拍的也很有水平,又是近景又是远景好像还有什么镜头切换,有些我也不太懂,总之儿子长大了,是个好帮手了。这次的这个项目还是比较喜欢的,因为把学科和STEAM有效的融合起来了,以后有机会还是要去尝试这种学科融合。
评论