App Inventor 透過藍牙遙控 Arduino Servo Motor 轉動角度


前文提要 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 程式碼可到此下載