eos_2016_spring team1 - pinball battle
TRANSCRIPT
PINBALL BATTLE組別:第一組組員:柯竣龍 王順億 吳仁豪
2
遊戲方式 首先等待兩位玩家手機連線,利用手機進行對打 隨機出現特殊道具,以球經過之感測器位置決定使用權 比賽中 PXA270 的 LED會顯示使用者持有之特殊道具 比賽中 PXA270 的 7段顯示器會顯示比分,玩家取得 5分即結束 比賽結束在 PXA270 的 LCD秀出獲勝玩家字樣 Timer 計數時間到 (2分鐘 )如還沒有結果 (到達 5分 )則分數大的玩家勝利
3
手機 APP1
2
34
4
Cellphone
Power PXA–270 Board
Game Box
Internet
DC MotorPhoto-resistance
8 V
8 V
Hardware
系統架構
PWMVoltage Signal
Step Motor
Cellphone
5
硬體架構光敏電阻:感測求取得道具
DC馬達:控制球棒擊球光敏電阻:感測是否進球
步進馬達:調控平台高度
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 ( )
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)
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後,重新等待玩家連線並且初始化所有參數
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旗標後,會立即改變橫桿狀態
10
PXA-270開發版應用 作業系統功能
Socket Multithreads Mutex protect Signal: Timer GPIO Driver: Read / Write
硬體周邊 LCD LED 7-Segment
11
預期目標 使用者以手機進行對戰 =>無線傳輸 LED顯示特殊道具位置 利用光敏電阻感測球經過 =>使用者取得特殊道具
平台傾斜 凍結對手 力道增強
點擊按鈕搶取道具使用權 使用步進馬達調整平台高度 =>平台傾斜 採用紅外線收發器感測進球 =>計分
12
已完成目標 使用者以手機進行對戰 =>無線傳輸 利用光敏電阻感測球經過 =>使用者取得特殊道具
平台傾斜 凍結對手 反轉對手
使用步進馬達調整平台高度 =>平台傾斜 採用光敏電阻感測進球 =>計分 PXA-270開發版上的 LED顯示使用者持有之特殊道具 PXA-270開發版上的 7-Segment顯示比分 PXA-270開發版上的 LCD顯示獲勝玩家與遊戲時間
DEMO