zoukankan      html  css  js  c++  java
  • 进阶之路(中级篇)

     1 /*********************************
     2 代码功能:通过串口控制电机
     3 使用函数:
     4     Serial.available();                          //判断串口是否接收到数据
     5     Serial.print(字符串);                       //通过TX传出去
     6     Serial.write(字符串);                       //写入串口中
     7     Serial.println(字符串);                      //通过TX传出去,并在尾端加换行
     8     strtol(字符串启始指针,字符串结束指针,字符转换长度);  //字符串转整形
     9     constrain(数据,区间上界,区间下界);               //约束数据范围函数
    10     strtok(将要分解字符串首地址,"分割字符");         //字符分割函数(s指向要分解的字符串,之后再次调用要把s设成NULL。)
    11 调用的库:#include <Servo.h>                //设置舵机的库:详情见:https://www.arduino.cc/en/Reference/Servo
    12     (电机名称).attach(控制电机引脚);          //初始化电机
    13     (电机名称).write(角度);                    //写入旋转角度
    14     (电机名称).writeMicroseconds(中间参数);    //设置电机的转动方向值,详情见:http://www.cnblogs.com/jikexianfeng/p/6269629.html
    15     (电机名称).read();                        //用于读取舵机角度的语句,可理解为读取最后一条write()命令中的值。返回值为伺服的角度,从0到180度。
    16     (电机名称).attached();                    //检查伺服变量是否连接到引脚。如果伺服器连接到引脚,则为真; 否则为假。
    17     (电机名称).detach();                     //从其引脚分离伺服变量。如果所有伺服变量都分离,则引脚9和10可以用于使用analogWrite()进行PWM输出。
    18 创作时间:2016*01*10
    19 作者邮箱:jikexianfeng@outlook.com
    20 ********************************/
    21 #include <Servo.h>
    22 
    23 char buffer[10];
    24 Servo servo1;
    25 Servo servo2;
    26 int L = 2;
    27 int R = 3;
    28 
    29 void setup()
    30 {
    31     servo1.attach(L);
    32     servo2.attach(R);
    33     Serial.begin(9600);
    34     Serial.flush();
    35     servo1.write(90);
    36     servo2.write(90);
    37     Serial.println("STARTINC....");
    38 }
    39 void loop()
    40 {
    41     if(0<Serial.available()){
    42         int index = 0;
    43         delay(100);
    44         int numChar = Serial.available();
    45         if(numChar > 10){
    46             numChar = 10;
    47         }
    48         while(numChar--){
    49             buffer[index++] = Serial.read();
    50         }
    51         splitString(buffer);
    52     }
    53 }
    54 
    55 void splitString(char *data){
    56     Serial.print("Data entered:");
    57     Serial.println(data);
    58     char *parameter;
    59     parameter = strtok(data,",");        //首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL
    60     while(NULL != parameter){
    61         setServo(parameter);
    62         parameter = strtok(NULL,",");    //首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL
    63     }
    64     for(int x =0;x<9;x++){
    65         buffer[x] = '';
    66     }
    67     Serial.flush();
    68 }
    69 
    70 void setServo(char *data){
    71     if((data[0] == 'R')||(data[0] == 'r')){
    72         int firstVal = strtol(data+1,NULL,10);
    73         firstVal = constrain(firstVal,0,180);
    74         servo2.write(firstVal);
    75         Serial.print("Servo2 is set to:");
    76         Serial.println(firstVal);    
    77     }
    78     if((data[0] == 'L')||(data[0] == 'l'))
    79     {
    80         int firstVal = strtol(data+1,NULL,10);
    81         firstVal = constrain(firstVal,0,180);
    82         servo1.write(firstVal);
    83         Serial.print("Servo1 is set to:");
    84         Serial.println(firstVal);    
    85     }
    86 }

     参考博客:http://www.cnblogs.com/jikexianfeng/p/6269629.html

     参考网站:https://www.arduino.cc/en/Reference/Servo

  • 相关阅读:
    mybatis <=或这个>=提示错误Tag name expecte问题解决
    Navicat 设置自增长初始值
    mysql 时间与字符串相互转换
    jquery 动态控制显隐
    mysql 查询常见时间段数据
    jquery 取得select选中的值
    java8 运算语法集
    springboot 单元测试
    idea 自动生成并跳转单元测试
    限制页面被pc端访问
  • 原文地址:https://www.cnblogs.com/jikexianfeng/p/6825742.html
Copyright © 2011-2022 走看看