游戏规则:
简易版:游戏有一个5秒倒计时炸弹,时间到了就会爆炸,马里奥玩家就会死亡。如果玩家可以在这5s内按下停止开关,炸弹不会爆炸,玩家马里奥任务成功。

实验材料:
Arduino UNO R3 * 1
面包板 * 1
发光二极管 * 1(模拟炸弹)
按钮 * 1(模拟开关)

Arduino引脚映射

ArControl对Arduino UNO开发板做了端口映射,定义好了6个输入端口和8个输出端口,示意图如下。IN和OUT都是相对于Arduino开发板来说的。在这个小游戏中,我们使用pinA0IN1接收按钮的状态,pin2OUT1控制LED灯的状态。

Arduino引脚映射

Arduino测试程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//测试按钮控制led灯是否正常
int ledPin = 2;

void setup() {
pinMode(A0, INPUT);
pinMode(ledPin, OUTPUT);
}

void loop() {
if (digitalRead(A0) == HIGH){
digitalWrite(ledPin, HIGH);
} else{
digitalWrite(ledPin, LOW);
}
}

Arduino实物连接图

关于接线我还闹了个笑话,我在ArControl上进行测试,发现按下按钮之后,IN1端口会持续很久的高电平,而且不按按钮时也会有通道闪烁的情况。我在arduino IDE中测试按钮控制LED灯的情况,发现了类似的问题,当我不按按钮时,LED灯也是亮的,按下按钮之后,LED灯只是变得更亮了。我检查线路并没发现什么问题,去请教师兄,才发现我接线时按钮旁边的下拉电阻没接上!!!😅按我那样的接法,电阻纯属摆设,跟按钮的电路半毛钱关系都没有。重新接好电阻之后,再测试就正常了。(^-^)V

实物连接图

ArControl使用流程

ArControl的软件部分主要包括两个应用程序,其中ArControl Designer用于编写行为范式的protocol,ArControl Recorder用于监控端口的运行状态并采集实验数据。

ArControl Designer

ArControl Designer借鉴了状态机的原理,把行为实验流程等效分解为一系列时序上相互衔接的子任务(State),可以根据实验逻辑在状态之间进行跳转。

每一个State可以对6种功能进行配置,包括改变任务变量(do-var)、控制输出通道(do-pin)、 检测任务变量(when-var)、检测实验计数(when-count)、检测等待时间 (when-time)以及检测输入端口(when-pin)。其中每个功能的详细配置是在子窗体中进行的。

在这个小游戏中,逻辑比较简单,可以分为倒计时、炸弹爆炸和炸弹不爆炸三个状态,分别记为S1S2S3。如果在没有在5s内按下停止开关,则跳转到S2;如果在5s内按下停止开关,则跳转到S3。编写完实验流程之后,保存。

ArControl Designer
如果想查看实验流程图,也可以点击File→Export pdf,这个功能真的很方便检查实验逻辑!
流程图

ArControl Recorder

选择Arduino开发板对应的端口,载入实验流程并烧录进开发板。点击Start按钮即可运行,点击Stop按钮即可手动终止程序,也可以等程序运行完自动结束。中间的板块可以实时观察输入/输出端口的电平变化,如果为绿色,则表示当前端口是高电平。下图分别为炸弹💣爆炸💥和成功按下停止开关时的端口状态。

Boom
No boom

参考内容