前文提要 http://www.jasonworkshop.com/2016/08/20160821.html
前文已經完成了第1階段>透過手機遙控 Arduino 上的 LED 開關。
今次就跳過第2階段,直接實行第3階段>透過手機遙控 Arduino 上的 Servo Motor。
現在先為大家介紹第3階段的研究成果,大家有興趣的話也可以跟著做一個哦。
(不過,請先確保自己對 Arduino, App Inventor 有基本的技術力哦!)
首先要準備一下材料:
Arduino UNO R3 x 1
HC-06 Bluetooth Module x 1
Servo Motor x 1
杜邦線 DuPont Cables x 適量
製作步驟如下:
[Part 1 硬件的準備工作]
首先將
HC-06 的 VCC 連接到 Arduino 的 3.3V 接腳;
HC-06 的 GND 連接到 Arduino 的 GND 接腳;
HC-06 的 TXD 連接到 Arduino 的接腳 6;
HC-06 的 RXD 連接到 Arduino 的接腳 5。
Servo 的 + 連接到 Arduino 的 5V 接腳;
Servo 的 - 連接到 Arduino 的 GND 接腳;
Servo 的訊號端連接到 Arduino 的接腳 11。
[Part 2 編寫 Arduino 程式部份]
進入 Arduino IDE 並編寫下列程式碼:
--------------------------------------
#include <SoftwareSerial.h>
#include <Servo.h>
SoftwareSerial I2CBT(6, 5); // 連接藍牙模組的 TX, RX pin
Servo myservo; // create servo object to control a servo
int inSlider = 0; // 接收回來的 Slider 數值
String myString;
char newString[] = "000";
void setup() {
Serial.begin(9600); // Arduino baud rate
I2CBT.begin(9600); // 藍牙 baud rate
I2CBT.setTimeout(6);
myservo.attach(11); // attaches the servo on pin 9 to the servo object
myservo.write(0); // preset servo angle to 0
}
void loop() {
// 檢查是否有資料可供讀取
while (I2CBT.available()) {
myString = I2CBT.readString();
strcpy(newString, myString.c_str());
inSlider = atoi(newString);
if (inSlider >= 0 && inSlider <= 255) {
Serial.println(inSlider);
myservo.write(inSlider);
}
}
}
--------------------------------------
[Part 3 編寫 App Inventor 2 程式部份]
進入 App Inventor 2 並編寫下列程式碼:
[Part 4 執行手機應用程式]
首先啟動 Arduino 並確保已上傳 Part 2 的程式碼;
然後在手機連接 Arduino 的 HC-06 藍牙模組;
透過 AI2 傳送程式到你的 Android 手機;(我當大家有足夠的水平,所以不詳述步驟啦)
在手機介面按「Connect Bluetooth Device」,然後選擇之前已連線的 HC-06 藍牙模組;
然後就可以在手機劃動 Silder 控制 Servo 的角度了!
[Part 5 下載程式碼]
本篇教學文中所用到的 Arduino 以及 App Inventor 2 程式碼可到此下載