Download - EOS_2016_Spring Team1 - Pinball battle

Transcript
Page 1: EOS_2016_Spring Team1 - Pinball battle

PINBALL BATTLE組別:第一組組員:柯竣龍 王順億 吳仁豪

Page 2: EOS_2016_Spring Team1 - Pinball battle

2

遊戲方式 首先等待兩位玩家手機連線,利用手機進行對打 隨機出現特殊道具,以球經過之感測器位置決定使用權 比賽中 PXA270 的 LED會顯示使用者持有之特殊道具 比賽中 PXA270 的 7段顯示器會顯示比分,玩家取得 5分即結束 比賽結束在 PXA270 的 LCD秀出獲勝玩家字樣 Timer 計數時間到 (2分鐘 )如還沒有結果 (到達 5分 )則分數大的玩家勝利

Page 3: EOS_2016_Spring Team1 - Pinball battle

3

手機 APP1

2

34

Page 4: EOS_2016_Spring Team1 - Pinball battle

4

Cellphone

Power PXA–270 Board

Game Box

Internet

DC MotorPhoto-resistance

8 V

8 V

Hardware

系統架構

PWMVoltage Signal

Step Motor

Cellphone

Page 5: EOS_2016_Spring Team1 - Pinball battle

5

硬體架構光敏電阻:感測求取得道具

DC馬達:控制球棒擊球光敏電阻:感測是否進球

步進馬達:調控平台高度

Page 6: EOS_2016_Spring Team1 - Pinball battle

6

流程圖 開始

Socket_tid0( ):Android connection Get command

Socket_tid1( ):Android connection Get command

Step_motor( ):Set flatmotor

結束

User1

pthread_create ( )

Item_thread( ):Get random item

Item_read( ):Read each GPIOUse LED to show who take the item and what the item is.

User2

使用者連線?是

桌台傾斜

pthread_create ( )

產生特殊道具

取得特殊道具

User==2?

Score==5?

控制桌台傾斜

User1

Stick_motor( ):Have 4 thread to control each stick DC motor

打擊馬達

Score_thread( ):Use 7_segment to show the point of each player

紀錄得分狀態

Item_countdown( ):Set the item time for different effects.

特殊道具時間

Score==5?

Pthread_exit(NULL)

Score==5?

Pthread_exit(NULL)

Score==5?

Pthread_exit(NULL)

Score==5?

Score==5?

Pthread_exit(NULL)

Pthread_exit(NULL)

否 否

Join Socket threadShow the result on LCD

pthread_create ( )

pthread_create ( )

Page 7: EOS_2016_Spring Team1 - Pinball battle

THREADS void *Step_motor(void *parm) void *Stick1_motor(void *parm) //1~4 void *item_thread(void *parm) void *item_user1_countdown(void *parm) void *item_read(void *parm) void *Socket(void *parm) void *score_thread(void *parm)

Page 8: EOS_2016_Spring Team1 - Pinball battle

THREAD 功能 void *Step_motor(void *parm)

控制步進馬達目前狀態,會隨著道具狀態而改變 void *item_thread(void *parm)

每 6~10秒隨機產生道具 void *item_read(void *parm)

當有道具產生,不斷掃描 GPIO,看哪位玩家獲得道具,並創造 item_user_countdown的thread計算剩餘時間,如果獲得同樣道具時,改為延長道具持續時間

void *score_thread(void *parm) 計算分數,當有一方玩家獲得 5分時結束遊戲,並且斷開所有連線並結束所有 THREADS後,重新等待玩家連線並且初始化所有參數

Page 9: EOS_2016_Spring Team1 - Pinball battle

THREAD 功能 void *item_user1_countdown(void *parm) //1~2

由 item_read所創造的 thread,用於倒數剩餘道具時間 void *Socket(void *parm)

當玩家連線時所創造的 thread,等待玩家按下按鈕,並確認指令後,改變motor旗標狀態 void *Stick1_motor(void *parm) //1~4

四個馬達應為獨立事件,因此個別使用 4個 Threads控制橫桿狀態,當 Socket收到指令並且改變motor旗標後,會立即改變橫桿狀態

Page 10: EOS_2016_Spring Team1 - Pinball battle

10

PXA-270開發版應用 作業系統功能

Socket Multithreads Mutex protect Signal: Timer GPIO Driver: Read / Write

硬體周邊 LCD LED 7-Segment

Page 11: EOS_2016_Spring Team1 - Pinball battle

11

預期目標 使用者以手機進行對戰 =>無線傳輸 LED顯示特殊道具位置 利用光敏電阻感測球經過 =>使用者取得特殊道具

平台傾斜 凍結對手 力道增強

點擊按鈕搶取道具使用權 使用步進馬達調整平台高度 =>平台傾斜 採用紅外線收發器感測進球 =>計分

Page 12: EOS_2016_Spring Team1 - Pinball battle

12

已完成目標 使用者以手機進行對戰 =>無線傳輸 利用光敏電阻感測球經過 =>使用者取得特殊道具

平台傾斜 凍結對手 反轉對手

使用步進馬達調整平台高度 =>平台傾斜 採用光敏電阻感測進球 =>計分 PXA-270開發版上的 LED顯示使用者持有之特殊道具 PXA-270開發版上的 7-Segment顯示比分 PXA-270開發版上的 LCD顯示獲勝玩家與遊戲時間

Page 13: EOS_2016_Spring Team1 - Pinball battle

DEMO