用Micro:bit做活动启动仪式道具

2017-12-07 22:41谢作如张敬云
中国信息技术教育 2017年21期
关键词:接收端串口嘉年华

谢作如 张敬云

在2017年上海創客嘉年华的教育论坛上,国内创客教师社群“猫友汇”和上海蘑菇云合作,在全国范围内启动“校园创客嘉年华”活动。在论坛的前一天有教师提议,应该让启动仪式更有仪式感,最好有特定的道具。因为“校园创客嘉年华”是一个非常有意义的活动,启动仪式自然不能太寒酸。于是,笔者自告奋勇连夜做了一个启动仪式道具。

创作思路

笔者最近一直在研究Micro:bit,并做了好多小项目。Micro:bit的广播功能是它的亮点,利用广播功能设计一个互动作品,在“校园创客嘉年华”的启动仪式上让更多的人参与进来,共同见证创客盛会的开启,不仅好玩,而且有“众人拾柴火焰高”的象征意义。

很多人参加,就需要很多块Micro:bit板子。但这不担心,上海创客嘉年华的主办方DFRobot公司可以为现场的嘉宾提供足够多的板子。至于互动作品的编程语言,笔者选择了Processing。Processing和Micro:bit互动一直很稳定,笔者之前已经写了好多个互动作品。

作品描述

用电脑运行Processing,显示一个空白的窗口;一块Micro:bit作为信号接收端,插到USB口;嘉宾们人人持一块Micro:bit,作为信息发射端;当嘉宾同时按下Micro:bit的A、B键时,板子上会出现一个向上的箭头;作为信号接收端的Micro:bit板子会闪烁一次“心”型符号,电脑屏幕随机出现几个大小及颜色不一的泡泡,并发出魔幻音乐。随着嘉宾同时按下A、B键的次数越来越多,屏幕显示的泡泡也越来越多。当按键次数达到一定的阈值时,屏幕开始进入自己播放阶段,小小的像素点越来越密集,背景图片的轮廓也越来越清晰。最后,画面全部显示出来,电脑播放出振奋人心的交响乐。

作品的具体流程及各阶段的画面显示效果如图1~下页图4所示。

代码实现

这个互动媒体作品由信号发送端、信号接收端和画面处理端三部分组成。

(1)信号发送端。用MakeCode编写,运行于Micro:bit,当用户按下“A+B”键时发送广播信号。

(2)信号接收端。用MakeCode编写,运行于Micro:bit,通过广播接收用户发来的信号。

(3)画面处理端。用Processing编写,在电脑上运行,通过串口接收信号接收端的信息,对画面进行像素化处理,并播放声音。

本作品中,Micro:bit要用到Radio(无线电广播)模块和Serial(串口)模块,如图5和图6所示。用户将按下的Micro:bit的A、B键的信号通过无线电广播模块发送给接收端,接收端接收到信号后,通过串口向Processing发送消息。

Processing代码说明:运行程序,电脑屏幕呈灰色显示。当接收到信息1时,屏幕随机出现几个大小及颜色不一的泡泡,并发出魔幻音乐,当接收到信息1的次数越来越多但小于预设值时,屏幕显示的泡泡也越来越多;当接收到信息1的总次数达到预设值时,屏幕开始进入自己播放阶段,密密麻麻的像素点越来越多,背景图片的轮廓也越来越清晰,最后全部显示出来,电脑发出振奋人心的交响乐。

因为代码较长,以下仅提供核心代码。

PImage photo;

import Processing.serial.*;//导入serial通信库

import ddf.minim.*;

AudioPlayer player1;

Minim minim;

Serial myPort;//创建对象duankou

int data;//变量data作为串口到的数据

int s;

int xx, yy;//因为全屏需要计算的偏移量

void setup() {

fullScreen();//全屏显示

xx=(width-1233)/2;

yy=(height-688)/2;

photo=loadImage("2017.png");

myPort = new Serial(this, Serial.list()[1], 115200);

minim = new Minim(this);

player1 = minim.loadFile("bg.mp3", 2048);

}

void draw() {

if (myPort.available()>0)

{

data=myPort.read();

s=s+1;

}

if (data=='1') {

for (int i=0; i<15; i++) {

int x=int(random(photo.width));//随机选取一个像素0-图片宽度

int y=int(random(photo.height));//随机选取一个像素0-图片高度

int xy=y*photo.width+x;

loadPixels();

float r=red(photo.pixels[xy]);

float g=green(photo.pixels[xy]);

float b=blue(photo.pixels[xy]);

fill(r, g, b, 50);

int diameter=int(random(5, 20));

ellipse(x+xx, y+yy, diameter, diameter);endprint

}

data=0;

player1.loop();

player1.play();

}

}

Micro:bit发送端代码:如果按下Micro:bit的A、B键,则通过无线广播模块发送数字1,并在Micro:bit屏幕显示“向上”的方向键图标(如表1)。

Micro:bit接收端代码:如果通过无线广播模块接收到的数字为1,则向串口发送字符1,并将变量t设为1,同时Micro:bit屏幕显示“心”型符号保持500毫秒(如表2)。

效果展示

下页图7~图9是“校园创客嘉年华”启动仪式现场的照片,嘉宾们带着无比好奇的心情参与了隆重的创客盛会启动仪式。

活动结束后,大家对这一作品评价很高。一位老师说道:“这个启动仪式表达了创客教育始于草根,其寓意在于众多的草根教育创客遍布全国各地,每个人的贡献可能只是微光如豆,但彼此努力相互取暖,最终就能换得大道持久。”

这个互动媒体作品的成功展示,让现场的老师对Micro:bit的强大功能有了更加深刻的印象。同时,笔者将这一互动媒体作品命名为《创·聚》,让更多人记住创客教育从零到一、聚沙成塔的过程。

直播分享地址:

校园定向教学指导:https://www.CCTalk.com/v/15082168528781?channel=copy&platform=android

学生校园定向实践:https://www.CCTalk.com/v/15082183715927?channel=copy&platform=android

定向评价:https://www.CCTalk.com/v/15082199768914?channel=copy&platform=android

定向活动颁奖:https://www.CCTalk.com/v/15082210082145?channel=copy&platform=android

后记

我们通过直播可以清晰地看到在包老师所在学校,教师和学生在课堂上对教学APP的娴熟运用,并看出包老师对信息化条件下项目式学习的课堂教学的设计重构,我想这对于很多希望在自己的课堂中也应用教学APP的教师来说是很值得借鉴的。由于包老师放了很多的CCTalk图片,所以笔者对于是否推荐本文有点犹豫,但包老师的一句话打消了我的顾虑:“这是免费的,非常適合一线教师使用,好东西就要分享啊。”endprint

猜你喜欢
接收端串口嘉年华
镜子国嘉年华
水果嘉年华
手机无线充电收发设计
嘉年华
MCS—51单片机中的多串口通讯技术的应用
全域旅游嘉年华我在黔南等你!
基于盲波束形成的MIMO雷达稳健参数估计
全国计算机等级考试机房准备工作探讨
微机串口的测试诊断
连接音乐的彩虹