基于arduino的智能小车底层系统开发

Arduino 是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的arduino板)和软件(arduino IDE)。它适用于艺术家、设计师、爱好者和对于互动有兴趣的朋友们。

 

特色:

1、开放源代码的电路图设计,程序开发接口免费下载,也可依需求自己修改。

2、使用低价格的微处理控制器(AVR系列控制器),可以采用USB接口供电,不需外接电源,也可以使用外部9VDC输入。

3Arduino支持ISP在线烧,可以将新的“bootloader”固件烧入AVR芯片。有了bootloader之后,可以通过串口或者USB to Rs232线更新固件。

4、可依据官方提供的Eagle格式PCBSCH电路图简化Arduino模组,完成独立运作的微处理控制;可简单地与传感器,各式各样的电子元件连接(例如:红外线,超音波,热敏电阻,光敏电阻,伺服马达,…等)

5、支持多种互动程序,如:FlashMax/MspVVVVPDCProcessing等。

6、应用方面,利用Arduino,突破以往只能使用鼠标、键盘、CCD等输入的装置的互动内容,可以更简单地达成单人或多人游戏互动。

 

 

 

arduino mega1280单片机的蓝牙与串口通信其实共用同一个接口,读取字符串,

判断响应的命令,执行相应的动作,上下方向脉冲控制在500-1200,防止机械臂

砸坏东西,pwm波控制机械臂运动,周期为20ms

编码如下:

眼睛: 

方向

编码

向上

0001

向左

0010

复位

0011

向右

0100

向下

0101

 

行驶

方向

编码

向前

1001

向左

1010

向右

1100

向后

1101

停止

1111

 

  arduino源代码:

int eyeUpDown    =26;
int eyeLeftRight =27;
int EA=30;
int I1=32;
int I2=31;
int EB=34;
int I3=36;
int I4=35;
int val[4];
int pulseUD=1000;
int pulseLR=1500;
int timeCycle=20000;
int angle=150;

void setup()
{
  Serial.begin(9600);
  pinMode(eyeUpDown,   OUTPUT);
  pinMode(eyeLeftRight, OUTPUT);
  pinMode(EA,OUTPUT);
  pinMode(I1,OUTPUT);
  pinMode(I2,OUTPUT);
  pinMode(EB,OUTPUT);
  pinMode(I3,OUTPUT);
  pinMode(I4,OUTPUT);
}

void loop()
{
  val[0]=Serial.read();
  if(val[0]!=-1)
  {
    val[1]=Serial.read();
    while(val[1]==-1)
    {
      val[1]=Serial.read();
    }
    val[2]=Serial.read();
    while(val[2]==-1)
    {
      val[2]=Serial.read();
    }
    val[3]=Serial.read();
    while(val[3]==-1)
    {
      val[3]=Serial.read();   
    }   
  }
  
  if(val[0]=='0')
  {
    if(val[1]=='0' && val[2]=='0' && val[3]=='1')   //eye up
    {
      pulseUD=pulseUD+angle;  
      if(pulseUD>1200)
      {
        pulseUD=1200;
      }
    }
    if(val[1]=='0' && val[2]=='1' && val[3]=='0')   //eye left
    {
      pulseLR=pulseLR+angle;
    }
    if(val[1]=='0' && val[2]=='1' && val[3]=='1')   //eye reset
    {
      pulseUD=1500;
      pulseLR=1500;
    }
    if(val[1]=='1' && val[2]=='0' && val[3]=='0')   //eye right
    {
      pulseLR=pulseLR-angle;
    }
    if(val[1]=='1' && val[2]=='0' && val[3]=='1')   //eye down
    {
      pulseUD=pulseUD-angle;
    }
  }
  if(val[0]=='1')
  {
    if(val[1]=='0' && val[2]=='0' && val[3]=='1')   //forward
    {
      digitalWrite(I1,LOW);
      digitalWrite(I2,HIGH);
      digitalWrite(I3,LOW);
      digitalWrite(I4,HIGH);

    }
    if(val[1]=='0' && val[2]=='1' && val[3]=='0')   //left
    {
           digitalWrite(I1,HIGH);
      digitalWrite(I2,LOW);
      digitalWrite(I3,LOW);
      digitalWrite(I4,HIGH);
      
    }    
    if(val[1]=='1' && val[2]=='0' && val[3]=='0')   //right
    {
      digitalWrite(I1,LOW);
      digitalWrite(I2,HIGH);
      digitalWrite(I3,HIGH);
      digitalWrite(I4,LOW);
    }
    if(val[1]=='1' && val[2]=='0' && val[3]=='1')   //backward
    {
	  digitalWrite(I1,HIGH);
      digitalWrite(I2,LOW);
      digitalWrite(I3,HIGH);
      digitalWrite(I4,LOW);
    }
    if(val[1]=='1' && val[2]=='1' && val[3]=='1')   //stop
    {
      digitalWrite(I1,HIGH);
      digitalWrite(I2,HIGH);
      digitalWrite(I3,HIGH);
      digitalWrite(I4,HIGH);
    }
  }
  if(pulseUD<pulseLR)
  {
    digitalWrite(eyeUpDown,HIGH);
    digitalWrite(eyeLeftRight,HIGH);
    delayMicroseconds(pulseUD);
    digitalWrite(eyeUpDown,LOW);
    delayMicroseconds(pulseLR-pulseUD);
    digitalWrite(eyeLeftRight,LOW);
    delayMicroseconds(timeCycle-pulseLR);
  }
  else
  {
    digitalWrite(eyeUpDown,HIGH);
    digitalWrite(eyeLeftRight,HIGH);
    delayMicroseconds(pulseLR);
    digitalWrite(eyeLeftRight,LOW);
    delayMicroseconds(pulseUD-pulseLR);
    digitalWrite(eyeUpDown,LOW);
    delayMicroseconds(timeCycle-pulseUD);
  }
   digitalWrite(EA,HIGH);
   digitalWrite(EB,HIGH);
}


 

 

 

 

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值