声明:代码来自太极创客
串口:
Serial.print("nihao")//输出的数据不换行,没有换行符
Serial.println("nihao")//输出的数据换行,自带换行符
Serial.available();//返回缓冲区的字节数,如果缓冲区没有字节,则返回0
s=Serial.read();//每次只从缓冲区读取一个字符并从缓冲区删除,如果s为整型,则返回字符相应的ASCII值,剩下的字符继续储存在缓冲区
int pos=Serial.ParseInt() //从接收到的数据中解析出整型的数据,比如:@¥#34,及解析出34.
char mychar=‘A’
char mychar=65//这两种表示是相同的,C++中字符用单引号,双引号为字符串。arduino的serial.read()读取每次为一个字节,8个二进制位,可以表示256个十进制数。
舵机的相关命令:
#include "Servo.h"
Servo myservo; //定义一个Servo对象
int pos;//储存舵机的角度
myservo.attach(9);//将伺服电机的PWM线接到9号口
myservo.write(pos);//让电机转动到pos角度
/////////////////////////////程序-控制4个电机转动指定角度///////////////////////////////////////
#include <Servo.h>
Servo base, fArm, rArm, claw; //建立4个电机对象
int dataIndex = 0;
void setup() {
base.attach(11); // base 伺服电机连接引脚11 电机代号'b'
rArm.attach(10); // rArm 伺服电机连接引脚10 电机代号'r'
fArm.attach(9); // fArm 伺服电机连接引脚9 电机代号'f'
claw.attach(6); // claw 伺服电机连接引脚6 电机代号'c'
Serial.begin(9600);
Serial.println("Please input serial data.");
}
void loop() {
if (Serial.available()) { // 检查串口缓存是否有数据等待传输
char servoName = Serial.read(); //获取电机指令中电机编号信息
Serial.print("servoName = ");
Serial.print(servoName);
Serial.print(" , ");
int data = Serial.parseInt(); //获取电机指令中电机角度信息
switch(servoName){ //根据电机指令中电机信息决定对哪一个电机进行角度设置
case 'b': // 电机指令b,设置base电机角度
base.write(data);
Serial.print("Set base servo value: ");
Serial.println(data);
break;
case 'r': // 电机指令r,设置rArm电机角度
rArm.write(data);
Serial.print("Set rArm servo value: ");
Serial.println(data);
break;
case 'f': // 电机指令f,设置fArm电机角度
fArm.write(data);
Serial.print("Set fArm servo value: ");
Serial.println(data);
break;
case 'c': // 电机指令c,设置claw电机角度
claw.write(data);
Serial.print("Set claw servo value: ");
Serial.println(data);
break;
}
}
}
通过数组控制四个舵机独立转动
#include <Servo.h>
Servo base, fArm, rArm, claw;
int data2dArray[4][5] = { //建立二维数组用以控制四台舵机
{0, 45, 90, 135, 180},
{45, 90, 135, 90, 45},
{135, 90, 45, 90, 135},
{180, 135, 90, 45, 0}
};
void setup() {
base.attach(11); // base 伺服电机连接引脚11 电机代号'b'
rArm.attach(10); // rArm 伺服电机连接引脚10 电机代号'r'
fArm.attach(9); // fArm 伺服电机连接引脚9 电机代号'f'
claw.attach(6); // claw 伺服电机连接引脚6 电机代号'c'
}
void loop() {
for (int i = 0; i <= 4; i++){
base.write(data2dArray[0][i]); //base舵机对应data2dArray数组中第1“行”元素
delay(100);
rArm.write(data2dArray[1][i]); //rArm舵机对应data2dArray数组中第2“行”元素
delay(100);
fArm.write(data2dArray[2][i]); //fArm舵机对应data2dArray数组中第3“行”元素
delay(100);
claw.write(data2dArray[3][i]); //claw舵机对应data2dArray数组中第4“行”元素
delay(500);
}
for (int i = 4; i >= 0; i--){
base.write(data2dArray[0][i]); //base舵机对应data2dArray数组中第1“行”元素
delay(100);
rArm.write(data2dArray[1][i]); //rArm舵机对应data2dArray数组中第2“行”元素
delay(100);
fArm.write(data2dArray[2][i]); //fArm舵机对应data2dArray数组中第3“行”元素
delay(100);
claw.write(data2dArray[3][i]); //claw舵机对应data2dArray数组中第4“行”元素
delay(500);
}
}