Presentation is loading. Please wait.

Presentation is loading. Please wait.

學校 : 南台科技大學 系所 : 電子工程系 — 系統應用組 指導老師:李博明 老師 組員名單 : 鄭程祐、呂偉民、范揚泰、詹鈞焱 、 陳孟辰.

Similar presentations


Presentation on theme: "學校 : 南台科技大學 系所 : 電子工程系 — 系統應用組 指導老師:李博明 老師 組員名單 : 鄭程祐、呂偉民、范揚泰、詹鈞焱 、 陳孟辰."— Presentation transcript:

1 學校 : 南台科技大學 系所 : 電子工程系 — 系統應用組 指導老師:李博明 老師 組員名單 : 鄭程祐、呂偉民、范揚泰、詹鈞焱 、 陳孟辰

2  報告整合 — 陳孟辰  Android 開發 — 呂偉民  CNC、軟硬體整合 — 范揚泰  硬體組 — 詹鈞焱、鄭程祐

3 配合 Android 的硬體開發,我們選擇目前非常熱門的 Arduino 系列中的 Mega 2560 這塊板子來結合 Android 。

4

5 我們主要是透過 Amarino 所提供的 Library 來做連線﹐ Amarino 提供各種已開發 Library 專門對 Android 與 Arduino 之間的連線﹐包括: Amarino.connect 建立連線 Amarino.disconnect 切斷連線 Amarino.sendDataToArduino 傳送訊號給 Arduino http://www.amarino-toolkit.net/

6 1. 首先先宣告藍芽位址 private String DEVICE_ADDRESS = "07:12:05:16:70:52"; // 設定藍芽位址 2. 呼叫 Amarino.connect 建立連線 Amarino.connect(this, DEVICE_ADDRESS); // 建立手機與 Arduino 連線

7 // 當按下各個按鍵時所設定的 setTag 以供 Case 呼叫副程式 Button btnSetmac = (Button) ; btnSetmac.setTag(0); btnSetmac.setOnClickListener(btnOnClick); Button btnForward = (Button) btnForward.setTag(1); btnForward.setOnClickListener(btnOnClick); Button btnBack = (Button) btnBack.setTag(2); btnBack.setOnClickListener(btnOnClick); Button btnLeft = (Button) btnLeft.setTag(3); btnLeft.setOnClickListener(btnOnClick); Button btnRight = (Button) btnRight.setTag(4); btnRight.setOnClickListener(btnOnClick); Button btnStop = (Button) btnStop.setTag(5); btnStop.setOnClickListener(btnOnClick); Button.OnClickListener() { // 按下各個按鍵時所呼叫的副程式 public void onClick(View v) { switch ((Integer) v.getTag()) { case 0: SetMacOnClick(); break; case 1: update_Forward(); break; case 2: update_Back(); break; case 3: update_Left(); break; case 4: update_Right(); break; case 5: update_Stop(); break; case 6: update_CamDown(); break; case 7: update_CamUp(); break; case 8: update_CamStop(); break;

8 呼叫 Amarino.sendDataToArduino 對 Arduino 傳送字串 //case 對應的副程式中,對藍芽位址所發出的字串 private void update_PowerVal() { Amarino.sendDataToArduino(this, DEVICE_ADDRESS, 'P', power_Val); } private void update_Forward() { Amarino.sendDataToArduino(this, DEVICE_ADDRESS, 'F', power_Val); } private void update_Back() { Amarino.sendDataToArduino(this, DEVICE_ADDRESS, 'B', power_Val); } private void update_Left() { Amarino.sendDataToArduino(this, DEVICE_ADDRESS, 'L', power_Val); } private void update_Right() { Amarino.sendDataToArduino(this, DEVICE_ADDRESS, 'R', power_Val); } private void update_Stop() { Amarino.sendDataToArduino(this, DEVICE_ADDRESS, 'S', 0); } private void update_CamDown(){ Amarino.sendDataToArduino(this,DEVICE_ADDRESS,'D',0); } private void update_CamUp(){ Amarino.sendDataToArduino(this,DEVICE_ADDRESS,'U',0); } private void update_CamStop(){ Amarino.sendDataToArduino(this,DEVICE_ADDRESS,'C',0); }

9 呼叫 Amarino.disconnect 斷開連線 // 跳出程式時自動斷開連線 @Override protected void onStop() { super.onStop(); Amarino.disconnect(this, DEVICE_ADDRESS); }

10

11 設定腳位 char val; //moto A int dir1PinA = 4; int dir2PinA = 3; int speedPinA = 5; //moto B int dir1PinB = 8; int dir2PinB = 9; int speedPinB = 10;

12 此部分為 Android 傳送過來之字串並定義對應之副程式 if(Serial.available()) { val = Serial.read(); //val = 手機傳送之值 Serial.println(val); switch(val) // 選擇 VAL 之對應程式 { case 'F': ForwardDrive(); break; case 'B': BackDrive(); break; case 'R': RightDrive(); break; case 'L': LeftDrive(); break; case 'S': StopDrive(); break; case 'U': UpDrive(); break; case 'D': DownDrive(); break; }

13 當 APP 送相對應命令來,下面的發法依照命令來選取並且執 行 void ForwardDrive()// 前進 { digitalWrite(dir1PinA, LOW); digitalWrite(dir2PinA, HIGH); digitalWrite(dir1PinB, LOW); digitalWrite(dir2PinB, HIGH); analogWrite(speedPinA,255); analogWrite(speedPinB,255); } void BackDrive()// 後退 { digitalWrite(dir1PinA, HIGH); digitalWrite(dir2PinA, LOW); digitalWrite(dir1PinB, HIGH); digitalWrite(dir2PinB, LOW); analogWrite(speedPinA,255); analogWrite(speedPinB,255); } void LeftDrive()// 左轉 { digitalWrite(dir1PinA, 0); digitalWrite(dir2PinA, 0); digitalWrite(dir1PinB, 0); digitalWrite(dir2PinB, 0); delay(50); digitalWrite(dir1PinB, HIGH); digitalWrite(dir2PinB, LOW); digitalWrite(dir1PinA, LOW); digitalWrite(dir2PinA, HIGH); analogWrite(speedPinA,255); analogWrite(speedPinB,255); } void RightDrive()// 右轉 { digitalWrite(dir1PinA, 0); digitalWrite(dir2PinA, 0); digitalWrite(dir1PinB, 0); digitalWrite(dir2PinB, 0); delay(50); digitalWrite(dir1PinB, LOW); digitalWrite(dir2PinB, HIGH); digitalWrite(dir1PinA, HIGH); digitalWrite(dir2PinA, LOW); analogWrite(speedPinA,255); analogWrite(speedPinB,255); } void StopDrive()// 停止 { digitalWrite(dir1PinA, 0); digitalWrite(dir2PinA, 0); digitalWrite(dir1PinB, 0); digitalWrite(dir2PinB, 0); delay(50); }


Download ppt "學校 : 南台科技大學 系所 : 電子工程系 — 系統應用組 指導老師:李博明 老師 組員名單 : 鄭程祐、呂偉民、范揚泰、詹鈞焱 、 陳孟辰."

Similar presentations


Ads by Google