|
程序很长,后边都是重复性的,为了完成一些个比赛任务写的,安装了新的IDE就再也用不了这两种头文件了,一直显示为开发板编译错误。
求助,这是什么原因???
****************************************
//#include <i2cmaster.h>
#include <Servo.h>
#define uint16_t unsigned int
#define LOW 0
#define HIGH 1
Servo myservo;//3 夹合
Servo myserv1;//5 上下
Servo myserv2;//6钩
Servo myserv3;//9左右
const int led1 = 1; //X1
const int led2 = 0; //X2
const int led5 = 4; //X3
const int led6 = A0; //X4
const int led7 = A1; //X3
const int led8 = 2; //X4
const int led3 = A2; //
const int led4 = A3; //
boolean X ;
boolean X1 ;
boolean X2 ;
boolean X3 ;
boolean X4 ;
boolean X7 ;
boolean X8 ;
int Y = 0;
int Ldir = 8; //左电机前进 AIN1
int Rdir = 7; //右电机前进 BIN1
int cp = 12;
int Len = 11;
int Ren = 10;
void setup()
{
Serial.begin(115200); // 打开串口,设置数据传输速率9600
//电机初始化
pinMode(Ldir, OUTPUT);
pinMode(Rdir, OUTPUT);
pinMode(Len, OUTPUT);
pinMode(Ren, OUTPUT);
//黑白传感器初始化
pinMode(led1, INPUT);
digitalWrite(led1, HIGH);
pinMode(led2, INPUT);
digitalWrite(led2, HIGH);
pinMode(led3, INPUT);
digitalWrite(led3, HIGH);
pinMode(led4, INPUT);
digitalWrite(led4, HIGH);
pinMode(led5, INPUT);
digitalWrite(led5, HIGH);
pinMode(led6, INPUT);
digitalWrite(led6, HIGH);
pinMode(led7, INPUT);
digitalWrite(led7, HIGH);
pinMode(led8, INPUT);
digitalWrite(led8, HIGH);
//颜色初始化
//i2c_init();
//舵机初始化
myservo.attach(3); // 夹合25/155
myservo.write(175);
myserv1.attach(5);//上下//35/84/125
myserv1.write(35);
myserv2.attach(6);//钩//10/170
myserv2.write(10);
myserv3.attach(9);//左右//150/110/125
myserv3.write(150);
}
void run(int sp)
{
digitalWrite(Ldir, 0);
digitalWrite(Rdir, 1);
digitalWrite(Len, 1);
digitalWrite(Ren, 1);
tone(cp, sp);
}
void left(int sp)
{
digitalWrite(Ldir, 0);
digitalWrite(Rdir, 1);
digitalWrite(Len, 0);
digitalWrite(Ren, 1);
tone(cp , sp);
}
void right(int sp)
{
digitalWrite(Ldir, 0);
digitalWrite(Rdir, 1);
digitalWrite(Len, 1);
digitalWrite(Ren, 0);
tone(cp , sp);
}
void Left(int sp)
{
digitalWrite(Ldir, 1);
digitalWrite(Rdir, 1);
digitalWrite(Len, 1);
digitalWrite(Ren, 1);
tone(cp , sp);
}
void Right(int sp)
{
digitalWrite(Ldir, 0);
digitalWrite(Rdir, 0);
digitalWrite(Len, 1);
digitalWrite(Ren, 1);
tone(cp , sp);
}
void back(int sp)
{ digitalWrite(Len, 1);
digitalWrite(Ren, 1);
digitalWrite(Ldir, 1);
digitalWrite(Rdir, 0);
tone(cp , sp);
}
void backleft(int sp)
{
digitalWrite(Ldir, 1);
digitalWrite(Rdir, 0);
digitalWrite(Len, 1);
digitalWrite(Ren, 0);
tone(cp , sp);
}
void backright(int sp)
{
digitalWrite(Ldir, 1);
digitalWrite(Rdir, 0);
digitalWrite(Len, 0);
digitalWrite(Ren, 1);
tone(cp , sp);
}
void brake(int time)//刹车(停)
{ digitalWrite(Ldir, 0);
digitalWrite(Rdir, 1);
digitalWrite(Len, 1);
digitalWrite(Ren, 1);
pinMode(cp, INPUT);
digitalWrite(cp, 0);
delay(time * 100);
}
/******************************************************************************************************************************************************************颜色程序***************
unsigned char Re_buf;
unsigned char sign = 0;
uint16_t CT = 0, Lux = 0;
byte color = 0, rgb_data[3] = {0};
int A = 0, B = 0, C = 0, D = 0, E = 0, F = 0;
void give()
{
unsigned char data[9] = {0};
iic_read(0x0c, data, 3);
rgb_data[0] = data[0]; //r
rgb_data[1] = data[1]; //g
rgb_data[2] = data[2]; //b
if ((((rgb_data[0]) - 30) > (rgb_data[1])) && (((rgb_data[0]) - 30) > (rgb_data[2]))) //红
{
Y = 3;
}
else if (((rgb_data[0]) > 140) && ((rgb_data[1]) > 140) && ((rgb_data[2]) > 140))//白
{
Y = 4;
}
else if ((((rgb_data[0]) - (rgb_data[1])) < 5) && (((rgb_data[0]) - (rgb_data[2])) < 5) && (((rgb_data[1]) - (rgb_data[2])) < 5) && (((rgb_data[2]) - (rgb_data[1])) < 5) ) //黑
{
Y = 2;
}
else if (((rgb_data[2]) > (rgb_data[1])) && ((rgb_data[2]) > (rgb_data[0]))) //蓝
{
Y = 1;
}
else//绿
{
Y = 5;
}
Serial.print("r:");
Serial.print( rgb_data[0]);
Serial.print(",g:");
Serial.print( rgb_data[1] );
Serial.print(",b:");
Serial.println( rgb_data[2]);
Serial.print(",yanse:");
Serial.println( Y);
iic_read(0x0f, data, 1);
color = data[0];
Serial.print(",color:");
Serial.println( color, HEX);
}
void bai()
{ unsigned char data[9] = {0};
iic_read(0x10, &data[8], 1);
i2c_start_wait(0xb4);
i2c_write(0x10);
i2c_write(0x71);
i2c_stop();
}
void iic_read(unsigned char add, unsigned char *data, unsigned char len)
{
i2c_start_wait(0xb4);
i2c_write(add);
i2c_start_wait(0xb5);
while (len - 1)
{
*data++ = i2c_readAck();
len--;
}
*data = i2c_readNak();
i2c_stop();
}
/****************************************************************************************************标准转向*********************/
void right45()
{ int z;
for (z = 0; z < 400; z++)
{
Right(3000);
} while (digitalRead(led3) == 0)
{
Right(2000);
}
while (digitalRead(led3) == 1)
{
Right(2000);
}
}
void right90()
{ int z;
while (digitalRead(led4) == 0)
{
Right(2000);
} while (digitalRead(led4) == 1)
{
Right(2000);
} while (digitalRead(led4) == 0)
{
Right(2000);
}
while (digitalRead(led4) == 1)
{
Right(2000);
}
}
void right135()
{ int z;
for (z = 0; z < 300; z++)
{
Right(3000);
} while (digitalRead(led4) == 1)
{
Right(2000);
} delay(300);
while (digitalRead(led4) == 1)
{
Right(2000);
}
delay(300);
while (digitalRead(led4) == 1)
{
Right(2000);
}
}
void right180()
{ int z;
for (z = 0; z < 300; z++)
{
Right(3000);
} while (digitalRead(led4) == 1)
{
Right(2000);
} delay(300);
while (digitalRead(led4) == 1)
{
Right(2000);
}
delay(300);
while (digitalRead(led4) == 1)
{
Right(2000);
}
delay(300);
while (digitalRead(led4) == 1)
{
Right(2000);
}
}
void left45()
{ int z;
for (z = 0; z < 700; z++)
{
Left(3000);
}
while (digitalRead(led3) == 0)
{
Left(2000);
}
while (digitalRead(led3) == 1)
{
Left(2000);
}
}
void left90()
{ int z;
while (digitalRead(led4) == 1)
{
Left(2000);
}
while (digitalRead(led4) == 0)
{
Left(2000);
}
while (digitalRead(led4) == 1)
{
Left(2000);
}
while (digitalRead(led4) == 0)
{
Left(2000);
}
while (digitalRead(led4) == 1)
{
Left(2000);
}
}
void left135()
{ int z;
for (z = 0; z < 300; z++)
{
Left(3000);
} while (digitalRead(led4) == 1)
{
Left(2000);
}
delay(300);
while (digitalRead(led4) == 1)
{
Left(2000);
}
delay(300);
while (digitalRead(led4) == 1)
{
Left(2000);
}
}
void houzhuan()
{ int z;
for (z = 0; z < 1000; z++)
{
Left(2000);
}
while (digitalRead(led4) == 1)
{
Left(2000);
}
delay(300);
while (digitalRead(led1) == 1)
{
Left(2000);
}
}
/********************************************************循迹程序***********************/
void straight1(int sp)//直行循迹
{
X1 = digitalRead(led1);//黑1白0
X2 = digitalRead(led2);
X3 = digitalRead(led5);//黑1白0
X4 = digitalRead(led6);
if ( (X1 == 1 ) && (X2 == 0))
{
right(sp);
}
else if ( (X1 == 0 ) && (X2 == 1))
{
left(sp);
}
else if (( X4 == 1 ) && (X1 == 1 ) && (X2 == 1) && (X3 == 0))
{
right(sp);
}
else if (( X4 == 0 ) && (X1 == 1 ) && (X2 == 1) && (X3 == 1))
{
left(sp);
}
else
{run(sp);}
}
void straight2(int sp)//倒退循迹
{
X7 = digitalRead(led3);//黑1白0
X8 = digitalRead(led4);
if ( (X1 == 1 ) && (X2 == 0))
{
backleft(sp); Serial.print(0, DEC);
}
else if ( (X1 == 0 ) && (X2 == 1))
{
back(sp); Serial.print(1, DEC);
}
else
{
back(sp); Serial.print(2, DEC);
}
}
void straight3(int sp)//直行循迹
{
X1 = digitalRead(led1);//黑1白0
X2 = digitalRead(led2);
X3 = digitalRead(led5);//黑1白0
X4 = digitalRead(led6);
if ( (X1 == 1 ) && (X2 == 0))
{
right(sp);
}
else if ( (X1 == 0 ) && (X2 == 1))
{
left(sp);
}
/* else if (( X4 == 1 ) && (X1 == 1 ) && (X2 == 1) && (X3 == 0))
{
right(sp);
}
else if (( X4 == 0 ) && (X1 == 1 ) && (X2 == 1) && (X3 == 1))
{
left(sp);
}*/
else
{run(sp);}
}
///*****************************************************************************************************************分部程序************************************************//
void NO0()//任务开始
{ while (digitalRead(led4) == 1)
{
straight1(3000);
}
delay(150);
while (digitalRead(led4) == 1)
{
straight1(3000);
}
delay(150);
while (digitalRead(led4) == 1)
{
straight1(3000);
}
delay(200);
while (digitalRead(led4) == 1)
{
straight1(3000);
}
}
void NO1()//夹任务1
{
int z;
for (z = 0; z < 4000; z++)
{
straight1(3000);
}
while (digitalRead(led3) == 1)
{
straight1(3000);
}
while (digitalRead(led4) == 1)
{
straight1(3000);
}
myservo.write(10);//第一次抓
brake(2);
while (digitalRead(led3) == 1)
{
straight2(3000);
}
houzhuan(); brake(5);
while (digitalRead(led4) == 1)
{
straight3(3000);
}
while (digitalRead(led4) ==0)
{
straight3(3000);
}
while (digitalRead(led4) == 1)
{
straight3(3000);
}
}
void NO20()//放中间
{
int z;
for (z = 0; z < 4000; z++)
{
straight3(2000);
}
while (digitalRead(led3) == 1)
{
straight3(3000);
}
myservo.write(175);
brake(2);
for (z = 0; z < 2500; z++)
{
straight2(2000);
}
houzhuan(); brake(5);
while (digitalRead(led4) == 1)
{
straight3(3000);
}
delay(300);
while (digitalRead(led4) == 1)
{
straight3(3000);
}
}
void NO2()//放任务1
{ int z;
for (z = 0; z < 3000; z++)
{
straight1(2000);
}
while (digitalRead(led3) == 1)
{
straight1(3000);
} delay(300);
while (digitalRead(led3) == 1)
{
straight1(3000);
}
brake(10);
for (z = 0; z < 1100; z++)
{
straight1(1000);
}
myservo.write(135);//
brake(10);
for (z = 0; z < 600; z++)
{
back(1000);
}
for (z = 0; z < 3000; z++)
{
straight2(2000);
}
houzhuan(); brake(5);
while (digitalRead(led4) == 1)
{
straight1(3000);
}
delay(300);
while (digitalRead(led4) == 1)
{
straight1(3000);
}
while (digitalRead(led4) == 0)
{
straight3(3000);
}
while (digitalRead(led4) == 1)
{
straight3(3000);
}
}
void NO3()///////////////////////////////////////////////////叠放第二层
{ myserv1.write(90);
int z;
for (z = 0; z < 5000; z++)
{
straight1(2000);
}
while (digitalRead(led3) == 1)
{
straight1(3000);
}
while (digitalRead(led4) == 1)
{
straight1(3000);
}
while (digitalRead(led3) == 1)
{
straight1(2000);
}
brake(3);
myservo.write(120);
brake(10);
myserv1.write(35);
brake(10);
myservo.write(10);
brake(10);
myservo.write(150);
brake(10);
for (z = 0; z < 1100; z++)
{
straight1(1000);
}
for (z = 0; z < 500; z++)
{
back(1000);
}
for (z = 0; z < 3000; z++)
{
straight2(3000);
}
houzhuan();
while (digitalRead(led4) == 1)
{
straight1(3000);
}
delay(200);
while (digitalRead(led4) == 1)
{
straight1(3000);
}
delay(300);
while (digitalRead(led4) == 1)
{
straight1(3000);
}
}
void NO4()///////////////////////////////////////////////////叠放第三层
{ myserv1.write(130);
int z;
for (z = 0; z < 5000; z++)
{
straight1(2000);
}
while (digitalRead(led3) == 1)
{
straight1(3000);
}
while (digitalRead(led4) == 1)
{
straight1(3000);
}
while (digitalRead(led3) == 1)
{
straight1(2000);
}
brake(3);
myservo.write(120);
brake(10);
myserv1.write(35);
brake(10);
myservo.write(10);
brake(10);
myservo.write(150);
brake(10);
for (z = 0; z < 700; z++)
{
straight1(1000);
}
for (z = 0; z < 500; z++)
{
back(1000);
}
for (z = 0; z < 3000; z++)
{
straight2(3000);
}
houzhuan();
while (digitalRead(led4) == 1)
{
straight1(3000);
}
delay(200);
while (digitalRead(led4) == 1)
{
straight1(3000);
}
delay(300);
while (digitalRead(led4) == 1)
{
straight1(3000);
}
}
/******************************勾去任务二*/
void NOa() //勾aaaaaaaaaaaa
{ int z;
for (z = 0; z < 4000; z++)
{
straight1(2000);
}
while (digitalRead(led3) == 1)
{
straight1(3000);
} delay(300);
while (digitalRead(led3) == 1)
{
straight1(3000);
}
while (digitalRead(led4) == 1)
{
straight3(1000);
}
brake(5);
for (z = 0; z < 400; z++)
{
straight2(2000);
} brake(5);
myserv3.write(146); brake(5);
myserv2.write(155); brake(5);
while (digitalRead(led3) == 1)
{
straight2(3000);
}
houzhuan();
myserv3.write(120); brake(5);
while (digitalRead(led4) == 1)
{
straight1(3000);
}
myserv2.write(135); brake(2);
myserv2.write(115); brake(2);
myserv2.write(100); brake(2);
myserv2.write(10); brake(2);
while (digitalRead(led4) == 0)
{
straight1(3000);
}
while (digitalRead(led4) == 1)
{
straight1(3000);
}
delay(200);
while (digitalRead(led4) == 1)
{
straight1(3000);
}myservo.write(10);
}
void NOb() //勾bbbbbbbbbbbbbbbbb
{ int z;
for (z = 0; z < 3000; z++)
{
straight1(3000);
} delay(200);
while (digitalRead(led3) == 1)
{
straight1(3000);
}delay(300);
while (digitalRead(led3) == 1)
{
straight1(3000);
}
while (digitalRead(led4) == 1)
{
straight3(1000);
} brake(5);
myserv3.write(120); brake(5);
myserv2.write(155); brake(5);
while (digitalRead(led3) == 1)
{
straight2(3000);
}
houzhuan();
myserv3.write(120); brake(5);
while (digitalRead(led4) == 1)
{
straight1(3000);
}
myserv2.write(135); brake(2);
myserv2.write(115); brake(2);
myserv2.write(100); brake(2);
myserv2.write(10); brake(5);
while (digitalRead(led4) == 0)
{
straight1(3000);
}
while (digitalRead(led4) == 1)
{
straight1(3000);
}
delay(200);
while (digitalRead(led4) == 1)
{
straight1(3000);
}myservo.write(10); brake(5);
}
void NOc() //勾cccccccccccccccccccccccc
{ myservo.write(175);int z;
for (z = 0; z < 4000; z++)
{
straight1(2000);
}
while (digitalRead(led3) == 1)
{
straight1(3000);
} delay(200);
while (digitalRead(led3) == 1)
{
straight1(3000);
}
delay(300);
while (digitalRead(led4) == 1)
{
straight3(1000);
} brake(5);
for (z = 0; z < 4000; z++)
{
straight3(1000);
}
myserv3.write(115); brake(5);
myserv2.write(155); brake(5);
while (digitalRead(led4) == 1)
{
straight2(3000);
}
while (digitalRead(led3) == 1)
{
straight2(3000);
}
houzhuan(); myserv3.write(115); brake(5);
while (digitalRead(led4) == 1)
{
straight1(3000);
}
myserv2.write(135); brake(2);
myserv2.write(115); brake(2);
myserv2.write(100); brake(2);
myserv2.write(10); brake(5);
while (digitalRead(led4) == 0)
{
straight1(3000);
}
while (digitalRead(led4) == 1)
{
straight1(3000);
}
delay(200);
while (digitalRead(led4) == 1)
{
straight1(3000);
}myservo.write(10); brake(5);
}
void NOd() //勾ddddddddddddddddddddddddd
{ int z;
for (z = 0; z < 4000; z++)
{
straight1(2000);
}
while (digitalRead(led3) == 1)
{
straight1(3000);
} delay(200);
while (digitalRead(led3) == 1)
{
straight1(3000);
}
delay(300);
while (digitalRead(led4) == 1)
{
straight3(1000);
} brake(5);
for (z = 0; z < 3200; z++)
{
straight3(1000);
}
myserv3.write(133); brake(5);
myserv2.write(155); brake(5);
while (digitalRead(led4) == 1)
{
straight2(3000);
}
while (digitalRead(led3) == 1)
{
straight2(3000);
}
houzhuan(); myserv3.write(120); brake(5);
while (digitalRead(led4) == 1)
{
straight1(3000);
}
myserv2.write(135); brake(2);
myserv2.write(115); brake(2);
myserv2.write(100); brake(2);
myserv2.write(10); brake(5);
while (digitalRead(led4) == 0)
{
straight1(3000);
}
while (digitalRead(led4) == 1)
{
straight1(3000);
}
delay(200);
while (digitalRead(led4) == 1)
{
straight1(3000);
}myservo.write(10); brake(5);
}
void NOe() //勾eeeeeeeeeeeeeeeeeeeee
{ int z;
for (z = 0; z < 4000; z++)
{
straight1(2000);
}
while (digitalRead(led3) == 1)
{
straight1(3000);
} delay(300);
while (digitalRead(led3) == 1)
{
straight1(3000);
}
while (digitalRead(led4) == 1)
{
straight3(1000);
}
for (z = 0; z < 800; z++)
{
straight3(1000);
}brake(5);
myserv3.write(150); brake(5);
myserv2.write(155); brake(5);
while (digitalRead(led4) == 1)
{
straight2(3000);
}
while (digitalRead(led3) == 1)
{
straight2(1500);
}
houzhuan(); myserv3.write(120); brake(5);
while (digitalRead(led4) == 1)
{
straight1(3000);
}
myserv2.write(135); brake(2);
myserv2.write(115); brake(2);
myserv2.write(100); brake(2);
myserv2.write(10); brake(5);
while (digitalRead(led4) == 0)
{
straight1(3000);
}
while (digitalRead(led4) == 1)
{
straight1(3000);
}
delay(200);
while (digitalRead(led4) == 1)
{
straight1(3000);
}
myservo.write(10); brake(5);
}
void NO00()//任务开始
{ int z;
for (z = 0; z < 3000; z++)
{
straight1(3000);
}
while (digitalRead(led3) == 1)
{
straight1(3000);
}
while (digitalRead(led4) == 1)
{
straight1(3000);
}
delay(200);
while (digitalRead(led4) == 1)
{
straight1(3000);
}
delay(200);
while (digitalRead(led4) == 1)
{
straight1(3000);
}
brake(500000);
}
/*************************************888888888888888888888888888888888888888888888888888888888******************************************主程序********************/
void lop()
{ NO3(); brake(1000);
}
void loop()
{ int a;
//bai();
NO0(); brake(3);
NO1(); brake(3); //C位置
NO20(); brake(3); //放空处
right90(); brake(3);
NO1(); brake(3); //E位置
right90(); brake(3);
NO2(); brake(3); //放红处
right90(); brake(3);
NO1(); brake(3); //A位置
left135(); brake(3);
NO2(); brake(3); //放白
right45(); brake(3);
NO1(); brake(3);
left90(); brake(3);
NO2(); brake(3); //放绿
/************************************************任务一*/
right45(); brake(3); //A白
NOa(); brake(3);
NO3(); brake(3); //叠2层
NOb(); brake(3); //B黑
right90(); brake(3);
NO2(); brake(3);
left90(); brake(3);
NOe(); brake(3); //红
right45(); brake(3);
NO3(); brake(3);
left45(); brake(3);
NOd(); brake(3); //d蓝
right135(); brake(3);
NO2(); brake(3); //叠2层
left135(); brake(3);
NOc(); brake(3); //绿
left45(); brake(3);
NO3(); brake(3); //叠2层
right135(); brake(3);
/********第二个五个************/
NOa(); brake(3);
left90(); brake(3);
NO4(); brake(3); //叠2层
right90(); brake(3);
NOb(); brake(3); //B黑
NO3(); brake(3);
NOe(); brake(3); //红
left45(); brake(3);
NO4(); brake(3);
right45(); brake(3);
NOd(); brake(3); //d蓝
right45(); brake(3);
NO3(); brake(3); //叠2层
left45(); brake(3);
NOc(); brake(3); //绿
left135(); brake(3);
NO4(); brake(3); //叠2层
right90();
NO00();
}
|
|