|
我制作的循迹小车 为什么循迹传感器都过黑线了 检测不到似得 但是用电脑看 还可以检测到 那就应该是反应慢的问题 但是不知道问题在那 球大神帮忙 代码如下 - #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[8] = {
- 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[out],0));
- digitalWrite(Pin1, bitRead(lookup[out],1));
- digitalWrite(Pin2, bitRead(lookup[out],2));
- digitalWrite(Pin3, bitRead(lookup[out],3));
- }
- void setOutput2(int out)
- {
- digitalWrite(Pin4, bitRead(lookup[out], 0));
- digitalWrite(Pin5, bitRead(lookup[out], 1));
- digitalWrite(Pin6, bitRead(lookup[out], 2));
- digitalWrite(Pin7, bitRead(lookup[out], 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);//延时时间
- }
- }
复制代码 |
|