微控制器之遠端遙控應用研究 The Research in the Application of Remote Control of Microcontroller 1 陳宏鑫 2 蘇紋緤 3 黃文超 1 Hung-Hsin Chen 2 Wen-Tieh Su 3 Wen-Chao Huang 1 蘭陽技術學院數位生活創意系 宜蘭縣頭城鎮復興路 79 號 1 (03) 9771997 # 237 hsin@mail.fit.edu.tw 2 蘭陽技術學院創意產品科技應用系 宜蘭縣頭城鎮復興路 79 號 2 (03) 9771997 # 290 su570229@mail.fit.edu.tw 3 蘭陽技術學院創意產品科技應用系 宜蘭縣頭城鎮復興路 79 號 3 (03) 9771997 # 283 huangauto@mail.fit.edu.tw 摘要 機器人技術是一門結合光學 機構設計 電腦輔助計算處理及自動控制等多方面整合性技術, 即光 機 電整合之控制技術 本研究主要目的在於使用手機應用程式透過藍芽接收器連接 Arduino 微控制器來操控機器人完成井字互動遊戲內九宮格之亮燈與聲音及肢體動作 關鍵詞 : 手機應用程式 藍芽 Arduino 微控制器 井字互動遊戲 Abstract Robotics is an integrated technology which is combined with optics, mechanical design, computeraided calculation processing and other aspects of automatic control. The main purpose of this study is to use APP connecting Arduino microcontroller via bluetooth receiver to control the interactive tic-tac-toe games with led light, sound and body movements of the robot. Keywords: APP, bluetooth, Arduino, microcontroller, interactive tic-tae-toe games 壹 前言 機器人正逐漸從傳統的工業應用走向家庭, 跳脫以往在現場應用中負責生產 製造 搬運等任務的範疇, 今天許多 單一功能任務型 機器人由於加入了智慧功能, 正受到消費市場的重視, 如清掃機器人, 甚至是廣受歡迎且具有學習功能的電子寵物, 均受到大量消費者的歡迎 創新時代來臨, 使用智慧設備變成日常生活的一部份, 也讓更多人能享受到科技帶來的方便及樂趣 近年來智慧型手機成長率逐漸攀升,APP 的使用已成為全球趨勢 本研究就是設計一個兩人對戰的互動井字遊戲手機 APP 軟體, 並透過藍芽接收器連接 Arduino 與機器人做系統連結 APP 以互動井字遊戲為主體設計 井字遊戲規則是, 兩個玩家, 一個劃圈 ( ), 一個劃叉 ( ), 輪流在 3 乘 3 的格上劃自己的符號, 最先以橫 直 斜連成一線則為勝 當玩家在手機 APP 劃上自己的符號時, 手機透過藍芽將訊號傳到機器人上的 Arduino 系統以控制九宮格上的格子做不同的圈叉顯示來符合 APP 遊戲結果, 最後由 APP 根據不同的遊戲結果控制機器人產生不同之反應, 增加遊戲的趣味性 貳 系統功能與設計 我們利用 APP Inventor II 為平台設計互動井字遊戲主體 ( 圖 1) 玩家分為紅綠兩玩家 遊戲開始前先做藍芽連線配對 當遊戲開始玩家在自己的手機 APP 上的九宮格劃上自己的符號時即鎖定該位罝不得再選, 透過藍芽發送訊號給 Arduino 微控制器, 命令機器人上在九宮格於相同位置同顏色的 LED 燈亮 ( 圖 2) 同時判斷相同顏色是否連成一條線, 若有相同顏色連成一條線則該顏色玩家獲勝, 命令機器人舉該顏色旗並響起音樂, 若遊戲至最後一格填滿而無相同顏色連成一條線則兩玩家平手, 命令機器人發出吃驚表情並響起音樂 23
圖 1 玩家在手機上點選所要的九宮格位子 圖 2 玩家所點的位子會顯示在機器人上在九宮格於相同位置同顏色的 LED 燈亮 圖 3 配線圖 24
參 程式流程圖 #include <SoftwareSerial.h> int ledpin1=53; int ledpin2=52; int ledpin3=51; int ledpin4=50; int ledpin5=49; int ledpin6=48; int ledpin7=47; int ledpin8=46; int ledpin9=45; int ledpin10=40; int ledpin11=39; int ledpin12=38; int ledpin13=37; int ledpin14=36; int ledpin15=35; int ledpin16=34; int ledpin17=33; int ledpin18=32; int ledpin19=41; 肆 Arduino 程式 int ledpin20=42; int flag1=0; int flag2=0; void setup(){ pinmode(ledpin1,output); pinmode(ledpin2,output); pinmode(ledpin3,output); pinmode(ledpin4,output); pinmode(ledpin5,output); pinmode(ledpin6,output); pinmode(ledpin7,output); pinmode(ledpin8,output); pinmode(ledpin9,output); pinmode(ledpin10,output); pinmode(ledpin11,output); pinmode(ledpin12,output); pinmode(ledpin13,output); pinmode(ledpin14,output); pinmode(ledpin15,output); pinmode(ledpin16,output); 25
pinmode(ledpin17,output); pinmode(ledpin18,output); pinmode(ledpin19,output); pinmode(ledpin20,output); digitalwrite(ledpin19,high); digitalwrite(ledpin20,high); Serial1.begin(9600); Serial2.begin(9600); Serial3.begin(9600); void loop(){ char c,d; if(serial1.available()>0){ c=serial1.read(); switch(c){ case '1': digitalwrite(ledpin1,high); Serial2.write('A'); case '2': digitalwrite(ledpin2,high); Serial2.write('B'); case '3': digitalwrite(ledpin3,high); Serial2.write('C'); case '4': digitalwrite(ledpin4,high); Serial2.write('D'); case '5': digitalwrite(ledpin5,high); Serial2.write('E'); case '6': digitalwrite(ledpin6,high); Serial2.write('F'); case '7': digitalwrite(ledpin7,high); Serial2.write('G'); case '8': digitalwrite(ledpin8,high); Serial2.write('H'); case '9': digitalwrite(ledpin9,high); Serial2.write('I'); case 'Y': Serial2.write('Y'); flag1=1; case 'Z': digitalwrite(ledpin1,low); digitalwrite(ledpin2,low); digitalwrite(ledpin3,low); digitalwrite(ledpin4,low); digitalwrite(ledpin5,low); digitalwrite(ledpin6,low); digitalwrite(ledpin7,low); digitalwrite(ledpin8,low); digitalwrite(ledpin9,low); digitalwrite(ledpin19,high); flag1=2; case 'N': Serial2.write('O'); flag1=3; if(serial2.available()>0){ d=serial2.read(); switch(d){ case '1': digitalwrite(ledpin10,high); Serial1.write('A'); case '2': digitalwrite(ledpin11,high); Serial1.write('B'); case '3': digitalwrite(ledpin12,high); Serial1.write('C'); case '4': digitalwrite(ledpin13,high); Serial1.write('D'); case '5': digitalwrite(ledpin14,high); Serial1.write('E'); case '6': digitalwrite(ledpin15,high); Serial1.write('F'); case '7': 26
digitalwrite(ledpin16,high); Serial1.write('G'); case '8': digitalwrite(ledpin17,high); Serial1.write('H'); case '9': digitalwrite(ledpin18,high); Serial1.write('I'); case 'X': Serial1.write('X'); flag2=1; case 'Z': digitalwrite(ledpin10,low); digitalwrite(ledpin11,low); digitalwrite(ledpin12,low); digitalwrite(ledpin13,low); digitalwrite(ledpin14,low); digitalwrite(ledpin15,low); digitalwrite(ledpin16,low); digitalwrite(ledpin17,low); digitalwrite(ledpin18,low); digitalwrite(ledpin19,high); flag2=2; case 'M': Serial1.write('O'); flag2=3; if (flag1==1){ Serial3.write(0); Serial3.write(200); else if (flag1==2){ Serial3.write(0); Serial3.write(1); Serial3.write(4); Serial3.write(5); flag1=0; if (flag2==1){ Serial3.write(1); Serial3.write(50); else if (flag2==2){ Serial3.write(1); 27
Serial3.write(4); Serial3.write(5); Serial3.write(0); flag2=0; if (flag1==3 && flag2==3){ digitalwrite(ledpin20,low); Serial3.write(4); Serial3.write(90); Serial3.write(5); Serial3.write(170); delay(300); digitalwrite(ledpin20,high); 伍 結論 本研究經以創新科技設計兩人對戰的互動井字遊戲手機 APP 軟體, 並透過藍芽接收器連接 Arduino 控制器藉以控制機器人針對不同的遊戲結果產生不同的反應, 增加遊戲的趣味 兩個玩家分別持手機並執行手機 APP 程式, 遊戲開始前先做藍芽連線配對, 然後開始遊戲 由一玩家先在手機上點選所要的九宮格位子, 手機並透過藍芽發送訊號給機器人上 Arduino 微控制器, 命令機器人上在九宮格於相同位置同顏色的 LED 燈亮, 同時 APP 程式判斷相同顏色是否連成一條線, 如果成立則代表勝利, 命令機器人做勝利動作, 不成立則換對方點選手機九宮格位子並重覆相同動作, 透過藍芽發送訊號給 Arduino 微控制器, 命令機器人上相同位置同顏色的 LED 燈亮, 同時 APP 程式判斷相同顏色是否連成一條線直到九宮格填滿而無人獲勝則平手, 命令機器人做平手動作並重新開始 本研究之設計是以兩玩家分持手機對戰方式並控制機器人動作, 以一玩家與機器人對戰方式並由機器人除顯示對戰結果外且針對不同的遊戲結果產生不同的反應為未來可研究之課題 結合手機 APP 與 Arduino 控制器製作自動化機械的應用方式, 亦可應用在其他更生活化的應用領域, 例如手機點餐送餐裝置 機械停車場手機領車等 現今的流行趨勢在注重 人性 科技, 從始至終都是以人為出發點, 秉持科技取之於人性之綱要, 開發出許多科技與人結合之互動性, 隨著科技的進步, 如何利用科技使人類的生活可以更加的便利及樂趣是大家的目標 參考文獻 [01] 施士文 (2014) Arduion 微電腦應用實習 臺灣 : 台科大圖書股份有限公司 [02] 鄧文淵 (2014) 手機應用程式設計超簡單 --APP Inventor 2 專題特訓班 臺灣 : 碁峰資訊股份有限公司 [03] 郭興家 邱弘興 (2008) 機電整合 臺灣 : 高立圖書有限公司 [04] 姚文隆 周至宏 (2008) 順序控制 臺灣 : 高立圖書有限公司 [05] 張安欣 溫超東 陳德楨 謝為 簡守謙 /Martin (2004) 機構學 臺灣 : 高立圖書有限公司 28