STC實訓(EP1C3)——多控制貪喫蛇

一、 設計目的

  本次項目設計旨在通過綜合使用三軸加速度傳感器、數碼管、蜂鳴器、導航鍵、按鍵、振動傳感器等元件,基於上位機與下位機之間的通信和數據交互,利用下位機完成對上位機遊戲——貪喫蛇的多種方式控制,並在此基礎上,可對多種上位機軟件進行拓展操作。
  在項目整體的設計過程中熟悉“EP1C3學習板”的相關知識,學習三軸加速度、振動傳感器以及導航按鍵的工作原理,依據具體需求進行詳細設計,並瞭解通信協議,在上位機的設計過程中學習串口通信的相關知識。

二、 預期功能及創新

1. 預期功能:

  • ① 使用數碼管、蜂鳴器等模塊進行信息展示,如連接狀態顯示及提示、當前速度顯示、方向指示等;
  • ② 利用三軸加速度傳感器、振動傳感器、導航鍵等對上位機——貪喫蛇遊戲進行控制操作。
    2. 創新:
  • ① 實現下位機與上位機的相互通信及數據交互;
  • ② 利用三軸加速度模擬方向控制,實現具體操作。

三、 設計流程

在這裏插入圖片描述具體原理部分請見下載報告:https://download.csdn.net/download/forest_one/12248816

五、 實現及關鍵代碼

1. 上位機
在這裏插入圖片描述
  上位機原型爲貪喫蛇遊戲,通過 Java 語言進行設計,其中包含了 Snake、Controller、BottonPanel 等多個類。(項目文件標題處給出了下載地址)
在這裏插入圖片描述
  在貪喫蛇遊戲的基礎上,添加串口通信模塊(如下圖), 使得上位機與下位機實現相互通信,並在上位機設置串口監聽,根據下位機發送的指令完成相應操作。
在這裏插入圖片描述
在這裏插入圖片描述
下位機通信

變量定義
在這裏插入圖片描述
程序函數
在這裏插入圖片描述
關鍵代碼

  ucDateTmp 用來存儲從上位機發送到下位機的數據,在一定條件下,使用 SendData發送控制指令到上位機。
在這裏插入圖片描述
在這裏插入圖片描述
2. 三軸加速度傳感器

2.1 引腳定義
在這裏插入圖片描述
2.2 變量定義
在這裏插入圖片描述
2.3 程序函數
在這裏插入圖片描述
2.4 關鍵代碼

  通過Multiple_Read_ADXL345()讀出數據並使用display_angle()完成角度的轉換,在進行判斷時我們需要設定一定的觸發區間(X、Y 軸< -40°或 >40°),當角度處於觸發區間時,下位機會通過串口通信發送指令到上位機實現方向控制。
在這裏插入圖片描述
3. 導航按鍵

3.1 變量定義
在這裏插入圖片描述
3.2 程序函數
在這裏插入圖片描述
3.3 關鍵代碼

  通過 GetADC()函數查詢 A/D 轉換的結果,通過轉換結果的不同判斷導航鍵哪個方向鍵被按下,併發送相應指令到上位機,由上位機做出響應,實現控制。
在這裏插入圖片描述
在這裏插入圖片描述
4. 振動傳感器

4.1 變量定義
在這裏插入圖片描述
4.2 關鍵代碼
  振動傳感器的端口爲 P3^4,通過對其端口的監控,判斷振動傳感器的狀態,由於存在抖動現象,需要進行延時操作以防止避免多次發送重複指令。
在這裏插入圖片描述
5. 數碼管

5.1 引腳定義
在這裏插入圖片描述
5.2 變量定義
在這裏插入圖片描述
5.3 程序函數
在這裏插入圖片描述
5.4 關鍵代碼

  在一定條件下,利用 switch 語句進行循環動態掃描點亮數碼管的相應位置,進行不同信息的展示。
在這裏插入圖片描述
在這裏插入圖片描述
6. 蜂鳴器

6.1 變量定義
在這裏插入圖片描述
6.2 關鍵代碼

  無源蜂鳴器的端口爲 P3^4,通過對其端口的操作,高低電平改變頻率決定音調,高電平佔空比決定音量,實現無源蜂鳴器的發聲。
在這裏插入圖片描述

7. 按鍵

7.1 引腳定義
在這裏插入圖片描述
7.2 變量定義
在這裏插入圖片描述
7.3 關鍵代碼

  爲了消除按鍵的抖動,採用計數器的方法,進行消抖處理,且每完成一次操作,對計數變量進行初始化以達到每次操作的消抖。

在這裏插入圖片描述

六、 操作說明

具體操作流程圖如下 :
在這裏插入圖片描述
操作說明

該項目下位機存在 4 種狀態切換,具體如下:

  • ① 下載燒寫程序。
  • ② 完成下載後,下位機 LED 數碼管顯示“hold . . . .”。此時,下位機處於待機狀態,還未進行與上位機的連接操作,導航鍵及其他控制鍵操作無效。
  • ③ 打開上位機串口設置——打開串口,下位機 LED 數碼管顯示“CHOOSE . .”。當前頁面要進行控制功能選擇,按下 K1 鍵選定導航鍵方向控制,按下 K2 鍵選定三軸加速度傳感方向控制。
  • ④ 下位機 LED 數碼管顯示“SPEED8-1”。LED 數碼管對速度、方向等信息進行展示,第 6 位顯示速度值,第 8 位顯示方向。

七、 測試驗證

  • ① 下載燒寫程序。
    在這裏插入圖片描述
  • ② 完成下載後,下位機 LED 數碼管顯示“hold . . . .”。
    在這裏插入圖片描述
  • ③ 打開上位機串口設置——打開串口,下位機 LED 數碼管顯示“CHOOSE . .”。按下K1 鍵選定導航鍵方向控制,按下 K2 鍵選定三軸加速度傳感方向控制。
    在這裏插入圖片描述
    在這裏插入圖片描述
  • ④ 下位機 LED 數碼管顯示“SPEED8-1”。LED 數碼管對速度、方向等信息進行展示,第 6 位顯示速度值,第 8 位顯示方向。
    在這裏插入圖片描述
  • ⑤ 上位機操作頁面——實現下位機對上位機進行控制
    在這裏插入圖片描述
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章