基于掌控板实现简单的抢答器系统/手动判断正误,随机发送题目
一、实验目的及要求
实现掌控板抢答器功能。
二、实验原理与内容
基于TinywebDB实现云数据库出题
基于掌控板实现按键抢答和判题
基于MQTT实现多端同步通讯
三、实验软硬件环境**
硬件:掌控板
软件:Mind+
四、实验过程
本项目是一个抢答器,它可以利用TinywebDB实现云数据库出题,通过MQTT(siot)实现多端同步通讯,同时还可以自动判断题目的正确
mqtt之中的设备:
1:选手接收来自客户端的题目
2:抢答编号发送
3:判断是哪个选手抢到
4:判断题目是否正确
5:答案选项
TinywebDB中的数据:
抢答器的工作流程:
准备工作:
数据库中插入一定数量的题目,插入后需要在控制端代码随机选择题目函数中修改随机数的范围与数目相等
至少有一个控制端一个选手端,可以有多个选手端
主持人按掌控板A键从TinywebDB利用随机数随机抽取题目,按B键确认发送给选手,避免题目出现重复的情况
主持人按B后选手接收到题目。
选手开始按A+B键抢答,抢到成功显示掌控板A或B回答,失败显示抢答失败。
抢答过程利用topic_1,当一个选手抢答成功立刻先主持人端和另一个选手端发送一条信息,主持人和另一个选手就知道了抢答情况。另一端选手收到这样一条信息就会显示抢答失败。
显示回答的答案,由主持人判断对错
当选手回答完问题后,主持人端显示触摸P为正确,Y为错误。能够主观判断题目对错
当主持人触摸P键或者Y键选手端就能看到结果
主持人按下A,选手端清屏,显示等待主持人出题后抢答,进入新的一轮循环。
核心代码
发送题目代码
判断哪位选手抢答的代码
判断对错的代码
选手端
抢答代码
答题代码
图形化实现
主持人代码
选手1端代码
选手2端代码
c代码
主持人端
#include <MPython.h>
#include <DFRobot_Iot.h>
#include <mPython_tinywebdb.h>
// 动态变量
String mind_s_qustion, mind_s_XuanShou1;
// 函数声明
void onButtonAPressed();
void obloqMqttEventT1(String& message);
void obloqMqttEventT4(String& message);
void pin27TouchCallback();
void onButtonBPressed();
void pin14TouchCallback();
// 静态常量
const String topics[5] = {
"1/1","2/2","3/3","4/4","5/5"};
const MsgHandleCb msgHandles[5] = {
NULL,obloqMqttEventT1,NULL,NULL,obloqMqttEventT4};
// 创建对象
DFRobot_Iot myIot;
mPython_TinyWebDB mydb;
// 主程序开始
```c
void setup() {
mPython.begin();
dfrobotRandomSeed();
myIot.setMqttCallback(msgHandles);
buttonA.setPressedCallback(onButtonAPressed);
touchPadP.setTouchedCallback(pin27TouchCallback);
buttonB.setPressedCallback(onButtonBPressed);
touchPadY.setTouchedCallback(pin14TouchCallback);
myIot.wifiConnect("biao", "1234567890");
while (!myIot.