天天看點

Day8:一款無線搶答系統的實作過程示範視訊設計思路目标實作消息定義主持人App端主持人掌控闆端選手端改進方向End

文章目錄

  • 示範視訊
  • 設計思路
  • 目标實作
  • 消息定義
    • 藍牙接收
    • LoRa接收
  • 主持人App端
    • UI設計
    • 程式編寫
      • 連接配接藍牙
      • 發送指令
  • 主持人掌控闆端
    • 初始化
    • 接收正确選項
    • 函數:清空變量
    • 函數:發送程式
    • 函數:接收程式
    • 函數:完成答題
    • 函數:下一題程式
  • 選手端
    • 整體代碼
  • 改進方向
  • End

示範視訊

先上最終效果:

基于LoRa與藍牙技術的無線搶答器

設計思路

見 Day7:一款無線搶答系統的設計思路

目标實作

  • 主持人App端可以通過藍牙與掌控闆通訊;
  • 主持人掌控闆端可以通過LoRa發出指令;
  • 兩個選手端可以通過LoRa發送消息确定搶答方;
  • 選手端自動判斷選手回答正确與否;
  • 選手端自動統計選手得分;

消息定義

因為使用了LoRa與藍牙進行通訊,是以我們需要定義消息,用來判斷程式該做什麼:

藍牙接收

s(115)開始搶答 發送C

t(116)下一題 發送D

A(65) 發送正确選項 發送A

B(66) 發送正确選項 發送B

LoRa接收

1(49)選手回答正确

0(48)選手回答錯誤

a(97)選手1搶答成功

b(98)選手2搶答成功

主持人App端

UI設計

Day8:一款無線搶答系統的實作過程示範視訊設計思路目标實作消息定義主持人App端主持人掌控闆端選手端改進方向End

程式編寫

連接配接藍牙

Day8:一款無線搶答系統的實作過程示範視訊設計思路目标實作消息定義主持人App端主持人掌控闆端選手端改進方向End

其中唯一編号為:

00001101-0000-1000-8000-00805F9B34FB

發送指令

Day8:一款無線搶答系統的實作過程示範視訊設計思路目标實作消息定義主持人App端主持人掌控闆端選手端改進方向End

App端的程式十分簡單,隻需要連接配接上藍牙後發送我們前面定義好的消息即可。

主持人掌控闆端

初始化

Day8:一款無線搶答系統的實作過程示範視訊設計思路目标實作消息定義主持人App端主持人掌控闆端選手端改進方向End

首先初始化

藍牙

LoRa

語音合成子產品

接收正确選項

在主持人手機App端,主持人會先發送正确選項到掌控闆上,當掌控闆上接收到正确選項後,開始搶答指令才會生效:

Day8:一款無線搶答系統的實作過程示範視訊設計思路目标實作消息定義主持人App端主持人掌控闆端選手端改進方向End

掌控闆藍牙接收到

A

B

後,便開始執行

清空變量

發送程式

接收程式

三個函數,接下來我們一個一個來慢慢講。

這裡還有一個判斷,如果

判斷模式

這個變量等于0的話就一直在螢幕上顯示

等待出題中...

字樣,因為我們上面初始化的時候已經将這個變量設為0,是以現在會一直顯示。

函數:清空變量

啊這…😅這個沒有什麼好講的了,就是将所有的變量設為原始值,這樣做的目的是防止第二次執行程式時變量還為第一次的值,影響程式正常運作。

Day8:一款無線搶答系統的實作過程示範視訊設計思路目标實作消息定義主持人App端主持人掌控闆端選手端改進方向End

函數:發送程式

Day8:一款無線搶答系統的實作過程示範視訊設計思路目标實作消息定義主持人App端主持人掌控闆端選手端改進方向End

首先通過LoRa發送正确選項給選手端,接着進入一個循環中,重複讀取藍牙資料,

當掌控闆接收到App端發出的

開始搶答

指令,同時也發送這個消息到選手端,然後跳出循環。

函數:接收程式

Day8:一款無線搶答系統的實作過程示範視訊設計思路目标實作消息定義主持人App端主持人掌控闆端選手端改進方向End

和上面發送程式的函數一個套路,進入一個循環,同時接收藍牙及LoRa的消息,

當選手端完成答題發送

1

或者

後;亦或者App端發送

下一題

指令後,才會跳出循環。

接着判斷收到的消息,如果LoRa收到選手端發來的

1

,代表選手回答正确;反之,如果收到的是

,代表選手回答錯誤,進入

完成答題

函數。

如果接收到藍牙發來的

t

,代表無人搶答*,主持人手動進入下一題。

*因為考慮到一種情況,即發出開始搶答指令後,可能會出現無人搶答的局面,這時程式也無法繼續運作下去,是以我們設定了可以由主持人通過App端手動進入下一題。

函數:完成答題

Day8:一款無線搶答系統的實作過程示範視訊設計思路目标實作消息定義主持人App端主持人掌控闆端選手端改進方向End

同時顯示正确選項與選手的回答情況在掌控闆螢幕上。

函數:下一題程式

Day8:一款無線搶答系統的實作過程示範視訊設計思路目标實作消息定義主持人App端主持人掌控闆端選手端改進方向End

很簡單,就是發送下一題指令給選手端。

選手端

整體代碼

Day8:一款無線搶答系統的實作過程示範視訊設計思路目标實作消息定義主持人App端主持人掌控闆端選手端改進方向End
這部分代碼由嶺南師範學院的吳兆明老師編寫,我在其代碼上加了一點小注釋友善了解,這裡不進行詳細闡述了。

改進方向

  • 選手端搶答後回報選手編号到主持人掌控闆端;

    (本來測試的時候一點問題沒有,一錄視訊這個功能就出bug了,無奈隻能閹割掉…)

  • 統計選手得分及答題情況上物聯網平台(SIoT);
  • 通過資料庫随機抽題發送到選手端;
  • 加入語音合成子產品,播報指令和答題情況;

End

繼續閱讀