arduino代码笔记

声明:代码来自太极创客

串口:
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);  
  }
}

猜你喜欢

转载自blog.csdn.net/ha010/article/details/82291720
今日推荐