703808999 发表于 2013-8-24 15:44:06

急需大神帮忙

我制作的循迹小车为什么循迹传感器都过黑线了   检测不到似得   但是用电脑看   还可以检测到    那就应该是反应慢的问题   但是不知道问题在那    球大神帮忙   代码如下
#include <FlexiTimer2.h>
int countsperrev =28;
int countsperrev2 =28;// 定义电机每次转动的步数,1.8步进角的一圈的总步数为58
int count = 0;// 计算电机累积步数
int count2 = 0;
int motorSpeed =3000;//能够设定步进速度延时时间
//n=电机旋转圈数
int k;
int Pin0 = 8;
int Pin1 = 9;
int Pin2 = 10;
int Pin3 = 11;
int Pin4 = 4,Pin5 = 5,Pin6 = 6,Pin7 = 7;
int xunji2;
int xunji0;
int xunji1;
int xunji3;
int xunji4;
int lookup = {
B01000, B01100, B00100, B00110, B00010, B00011, B00001, B01001};
void flash()
{
xunji2= analogRead(A2);
xunji0= analogRead(A0);
xunji1= analogRead(A1);
xunji3= analogRead(A3);
xunji4= analogRead(A4);
Serial.println(xunji3, DEC);
}

void setup()
{
FlexiTimer2::set(500,flash); // call every 500 1ms "ticks"
// FlexiTimer2::set(500, flash); // MsTimer2 style is also supported
FlexiTimer2::start();
pinMode(Pin0, OUTPUT);
pinMode(Pin1, OUTPUT);
pinMode(Pin2, OUTPUT);
pinMode(Pin3, OUTPUT);
pinMode(Pin4, OUTPUT);
pinMode(Pin5, OUTPUT);
pinMode(Pin6, OUTPUT);
pinMode(Pin7, OUTPUT);
Serial.begin(9600);

}

void loop()
{

if(xunji3>150)
{
    zuozhuan();
}
if(xunji3<150)
{
    qianjin();
}
}

void dianjiting()//关闭电机函数
{
digitalWrite(Pin0, 0);
digitalWrite(Pin1, 0);
digitalWrite(Pin2, 0);
digitalWrite(Pin3, 0);
digitalWrite(Pin4, 0);
digitalWrite(Pin5, 0);
digitalWrite(Pin6, 0);
digitalWrite(Pin7, 0);
}
void setOutput(int out)//行走输入
{
digitalWrite(Pin0,bitRead(lookup,0));
digitalWrite(Pin1,bitRead(lookup,1));
digitalWrite(Pin2,bitRead(lookup,2));
digitalWrite(Pin3,   bitRead(lookup,3));
}
void setOutput2(int out)
{
digitalWrite(Pin4, bitRead(lookup, 0));
digitalWrite(Pin5, bitRead(lookup, 1));
digitalWrite(Pin6, bitRead(lookup, 2));
digitalWrite(Pin7, bitRead(lookup, 3));
}
void clockwise()
{
for(int i = 7; i >= 0; i--)
{
    setOutput(i);
    delayMicroseconds(motorSpeed);//延时时间
}
}
void anticlockwise()
{
for(int i = 0; i < 8; i++)
{
    setOutput(i);
    delayMicroseconds(motorSpeed);
}
}
void anticlockwise2()
{
for(int i = 0; i < 8; i++)
{
    setOutput2(i);
    delayMicroseconds(motorSpeed);
}

}
void clockwise2()
{
for(int i = 7; i >= 0; i--)
{
    setOutput2(i);
    delayMicroseconds(motorSpeed);
}
}
//以下为定义A2电机顺时针旋转函数
void youzhuan()
{
int n=1;
for(k=0;k<n;k++)
{
    for(count=0,count2=0;count < countsperrev,count2 < countsperrev2;count++,count2++)
      youzhuan1();
}
}
void zuozhuan()
{
int n=1;
for(k=0;k<n;k++)
{
    for(count2=0,count=0;count2 < countsperrev2,count < countsperrev;count2++,count++)
      zuozhuan1();
}
}
void qianjin()
{
int n=1;
for(k=0;k<n;k++)
{
    for(count2=0,count=0;count2 < countsperrev2,count < countsperrev;count2++,count++)
      qianjin1();
}
}

void houtui()
{
int n=1;
for(k=0;k<n;k++)
{
    for(count=0,count2=0;count < countsperrev,count2 < countsperrev2;count++,count2++)
      houtui1();
}
}
//以下为定义A2电机端口设定函数

void houtui1()
{
for(int i = 0; i < 8; i++)
{
    setOutput(i);
    setOutput2(i);
    delayMicroseconds(motorSpeed);
}
}
void qianjin1()
{
for(int i = 7; i >= 0; i--)
{
    setOutput(i);
    setOutput2(i);
    delayMicroseconds(motorSpeed);//延时时间
}
}
void zuozhuan1()
{
for(int i = 0,i1 = 7; i < 8,i1 >= 0; i++,i1--)
{
    setOutput(i);
    setOutput2(i1);
    delayMicroseconds(motorSpeed);
}
}
void youzhuan1()
{
for(int i = 7,i1 = 0; i >= 0,i1 < 8; i--, i1++)
{
    setOutput(i);
    setOutput2(i1);
    delayMicroseconds(motorSpeed);//延时时间
}
}
页: [1]
查看完整版本: 急需大神帮忙