#include <Servo.h>
const unsigned int MOTOR_PIN1 = 9;
const unsigned int MOTOR_PIN2 = 10;
const unsigned int MOTOR_DELAY = 15;
const unsigned int SERIAL_DELAY = 5;
const unsigned int BAUD_RATE = 9600;
int yaw=92;
int pitch=97;
int track_delay=0;
int yaw_last,pitch_last;//control signal for actuators
Servo servo_1,servo_2; // <label id="code.motors.servo"/>
void setup() {
Serial.begin(BAUD_RATE);
servo_1.attach(MOTOR_PIN1); // <label id="code.motors.servo_attach"/>
servo_2.attach(MOTOR_PIN2);
delay(MOTOR_DELAY);
servo_1.write(yaw);
servo_2.write(pitch);
delay(MOTOR_DELAY);
Serial.flush();
}
void loop() {
const int MAX_ANGLE = 3;
//char buffer[10];
char degree_1[MAX_ANGLE + 1];
char degree_2[MAX_ANGLE + 1];
int x_tune,y_tune;// error for control
if (Serial.available()) {
int i = 0;
int j = 0;
int space_pos=10;
const char c = Serial.read();
if (c != -1 && c != '\n'&& c != '\r'){
if(c !='+'){
if( i< space_pos) degree_1[i++]=c;
if(space_pos != 10) degree_2[j++]=c;
}
else space_pos = i;
degree_1[i] = 0;
degree_2[j] = 0;
Serial.print(degree_1);
Serial.println(" degrees.");
servo_1.write(atoi(degree_1)); //atoi 將ascii 碼字符串轉成整數送入write函數
Serial.print(degree_2);
Serial.println(" degrees.");
servo_2.write(atoi(degree_2));
delay(MOTOR_DELAY);
delay(SERIAL_DELAY);
}
}
}
使用方法:打開Arduino IDE自帶串口監視器,設置末位添加newline,在命令行中發送“角度1+角度2”控制命令例如90+83