小R科技-WIFI机器人网·机器人创意工作室

 找回密码
 立即注册
查看: 6853|回复: 3

求各位大神指点下迷津

[复制链接]
发表于 2015-5-16 17:05:55 | 显示全部楼层 |阅读模式
我现在在做WIFI小车,目前到视频云台这里,两个自由度的,我不知道那个舵机的类型是什么,电机的是FF00......FF,可是舵机的我不知道怎么查,手机就是控制不了,动舵机组(居然是电机没有规律的动),求解啊
回复

使用道具 举报

发表于 2015-5-16 20:06:56 | 显示全部楼层
上图,看看你的接线。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-17 11:35:30 | 显示全部楼层
liuviking 发表于 2015-5-16 20:06
上图,看看你的接线。

那个线太多了,还是看程序?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-5-17 11:39:32 | 显示全部楼层
你的康少 发表于 2015-5-17 11:35
那个线太多了,还是看程序?

#include<ServoTimer2.h>//舵机驱动库文件
ServoTimer2 servoLev;//水平位置舵机控制
ServoTimer2 servoVcl;//竖直位置舵机控制
int AIN1 = 6;//AIN1
int AIN2 = 5;
int BIN1 = 10; //BIN1
int BIN2 = 9; //BIN2
int cmdData[4]; //定义一个数组用来存储串口接收到的数据,长度为 5
int tmpData; //存放数据的临时变量
int UARTDataCount = 0;
int n = 0;
#define MIDPULSE 1500 //500 表示舵机 0 度位置,1500 表示 90 度位置,2500 表示 180

/****************************************************************
舵机初使化函数,定义舵机连接引脚,上电归位等!
舵机 1(水平面):FF 01 01 舵机角度 FF 数字引脚:3
舵机 2(竖直面):FF 01 04 舵机角度 FF 数字引脚:11
****************************************************************/
void initServo()
{servoVcl.attach(11);//数字引脚:11    2
servoLev.attach(3);//数字引脚:3
servoLev.write(MIDPULSE);
servoVcl.write(MIDPULSE);
delay(200);
}
void setup()
{
pinMode(13,OUTPUT);//PIN 模式
pinMode(AIN1,OUTPUT);
pinMode(AIN2,OUTPUT);
pinMode(BIN1,OUTPUT);
pinMode(BIN2,OUTPUT);
Serial.begin(9600);//串口初使化
initServo();//舵机初使化

}
/********************************************************
向前指令:FF 00 01 00 FF
向后指令:FF 00 02 00 FF
向左指令:FF 00 03 00 FF
向右指令:FF 00 04 00 FF
停止指令:FF 00 00 00 FF
*********************************************************/
void loop()
{// put your main code here, to run repeatedly:

// void setMotor(int MOTORA,int MOTORB) ;
  if(Serial.available())
      {    tmpData=Serial.read();//读取来自串口的数据
    if(tmpData == 0xFF && UARTDataCount <2)//检测包头是否为 0XFF
      {  cmdData[0] = tmpData;
          UARTDataCount++;
            n = 1;
              }
      else
    {  cmdData[n]=tmpData;
          n++;
    }
    if(UARTDataCount == 2)
    {  cmdData[0] = 0xFF;
       cmdData[4] = 0xFF;
      n = 1;
      UARTDataCount = 0;
      Serial.flush();//清缓冲区
    }
      }
  if(cmdData[0]==0xFF && cmdData[4]==0xFF) //收到完整的数据包
{   switch(cmdData[1]) //判断数据类型
   {
   case 0x00://指令数据控制
                    switch(cmdData[2])
                    {
                      case 0x04: setMotor(255,255);break;
                      case 0x00: setMotor(0,0);break;
                     case 0x03: setMotor(-255,-255);break;
                     case 0x02: setMotor(-255,255);break;
                     case 0x01: setMotor(255,-255);break;
                  }   break;
  case 0x01://舵机数据控制
  switch(cmdData[2])
  {
   case 0x01:
   servoLev.write(cmdData[3]*13+500);break;
   case 0x04:
   servoVcl.write(cmdData[3]*13+500);break;
}
break;
   }
    }
}



void setMotor(int MOTORA,int MOTORB) //电机驱动函数
{
if(MOTORA>=0)
{
digitalWrite(AIN2,HIGH);
analogWrite(AIN1,255-MOTORA);
}
else
{
digitalWrite(AIN1,HIGH);
analogWrite(AIN2,MOTORA+255);
}
if(MOTORB>=0)
{
digitalWrite(BIN2,HIGH);
analogWrite(BIN1,255-MOTORB);
}
else
{
digitalWrite(BIN1,HIGH);
analogWrite(BIN2,255+MOTORB);
}
}
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

新品特惠推荐上一条 /2 下一条

QQ|QQ技术咨询1|QQ技术咨询2|商务合作微信1:xiaorgeek001|商务合作微信2:XiaoRGEEK|诚聘英才|Archiver|手机版|小R科技-WIFI机器人网·机器人创意工作室 ( 粤ICP备15000788号-6 )

GMT+8, 2024-11-26 08:09 , Processed in 1.086370 second(s), 20 queries .

Powered by XiaoR GEEK X3.4

© 2014-2021 XiaoR GEEK

快速回复 返回顶部 返回列表