User Tools

Site Tools


mm-uav_arm_bluetooth_operation

This is an old revision of the document!


MM-UAV Arm Bluetooth Operation

Author: <Dongbin Kim> Email: akdba0207@gmail.com
Date: Last modified on <08/01/16>
Keywords: <Arduino, Bluetooth, Serial communication, C, MM-UAV> \\ <!-- Add a representative photo of your tutorial below. Make it centered in the page --> {{:bluetooth_operation_2_.jpg?300

servo2.write(ini2 + 35); // 0 deg to 90 deg on Motor 2 is 45 deg to 135 deg
servo3.write(ini3 + 35); // 0 deg to 90 deg on Motor 3 is 20 deg to 110 deg
servo4.write(ini4 + 35); // 0 deg to 90 deg on Motor 4 is 60 deg to 150 deg
//start degree is 35 degree

} void loop() {

while (bluetooth.available()) 
{
  char myChar = (char)bluetooth.read(); 
  myString += myChar; 
  delay(5);      
}
if (!myString.equals("")) 
{
  Serial.println("input value: " + myString);
  if (myString == "down") //if you click button "down"
  {
    int pos1 = servo1.read();
    int pos2 = servo2.read();
    int pos3 = servo3.read();
    int pos4 = servo4.read();
    int goal1 = 5; //all motor moves 5 degrees, if you make this number bigger, it moves bigger
    delay(dly);
    for (angle1 = 0; angle1 <= goal1; angle1 += 1)
    {
      servo1.write(pos1 - angle1);
      servo2.write(pos2 + angle1);
      servo3.write(pos3 + angle1);
      servo4.write(pos4 + angle1); //all motor moves 5 degrees downward
      delay(dly);
    }
  } else if (myString == "up") {
    int pos1 = servo1.read();
    int pos2 = servo2.read();
    int pos3 = servo3.read();
    int pos4 = servo4.read();
    int goal1 = 5;
    delay(dly);
   for (angle1 = 0; angle1 <= goal1; angle1 += 1)
    {
      servo1.write(pos1 + angle1);
      servo2.write(pos2 - angle1);
      servo3.write(pos3 - angle1);
      servo4.write(pos4 - angle1); //all motor moves 5 degree upward
      delay(dly);
    }
  } else if (myString == "go") {
    int pos1 = servo1.read();
    int pos2 = servo2.read();
    int pos3 = servo3.read();
    int pos4 = servo4.read();
    int goal1 = 5;
    delay(dly);
   for (angle1 = 0; angle1 <= goal1; angle1 += 1)
    {
      servo1.write(pos1 + angle1);
      servo2.write(pos2 + angle1);
      servo3.write(pos3 + angle1);
      servo4.write(pos4 - angle1); //all motor moves 5 degree forward
      delay(dly);
    }
  } else if (myString == "back") {
    int pos1 = servo1.read();
    int pos2 = servo2.read();
    int pos3 = servo3.read();
    int pos4 = servo4.read();
    int goal1 = 5;
    delay(dly);
   for (angle1 = 0; angle1 <= goal1; angle1 += 1)
    {
      servo1.write(pos1 - angle1);
      servo2.write(pos2 - angle1);
      servo3.write(pos3 - angle1);
      servo4.write(pos4 + angle1); //all motor moves 5 degree backward
      delay(dly);
    }
  } else if (myString == "left") {
    int pos1 = servo1.read();
    int pos2 = servo2.read();
    int pos3 = servo3.read();
    int pos4 = servo4.read();
    int goal1 = 5;
    delay(dly);
   for (angle1 = 0; angle1 <= goal1; angle1 += 1)
    {
      servo1.write(pos1 + angle1);
      servo2.write(pos2 - angle1);
      servo3.write(pos3 + angle1);
      servo4.write(pos4 + angle1); //all motor moves 5 degree left
      delay(dly);
    }
  } else if (myString == "right") {
    int pos1 = servo1.read();
    int pos2 = servo2.read();
    int pos3 = servo3.read();
    int pos4 = servo4.read();
    int goal1 = 5;
    delay(dly);
   for (angle1 = 0; angle1 <= goal1; angle1 += 1)
    {
      servo1.write(pos1 - angle1);
      servo2.write(pos2 + angle1);
      servo3.write(pos3 - angle1);
      servo4.write(pos4 - angle1); //all motor moves 5 degree right
      delay(dly);
    }
  } else if (myString == "stop") {
    servo1.detach();
    servo2.detach();
    servo3.detach();
    servo4.detach(); //all motor stop moving
  }
  myString = ""; //myString 변수값 초기화
}

} > —-
The snippet above serves to <fill in the blank>. It does this by <fill in the blank>.
—- <!- Insert another snippet of your code here. Try to keep to less than 0.5 page long –> —- Next, the code does <fill in the blank>. It does this by <fill in the blank>. ==== Final Words ==== This tutorial's objective was to <fill in the blank>. Complete <choose: construction details, source code and program descriptions> for <fill in the blank>. Once the concepts were conveyed the reader could <fill in the blank>.

Speculating future work derived from this tutorial, includes <fill in the blank>. In the big picture, the problem of <fill in the blank> can be solved with this tutorial.

For questions, clarifications, etc, Email: paul.oh@unlv.edu

mm-uav_arm_bluetooth_operation.1470136746.txt.gz · Last modified: 2016/08/02 04:19 by dongbinkim