怎么让电机反向运行1S之后正向运行呢?
run(0,8*v,2*v,0);
delay(365);
run(3*v,8*v,0,0);
这是我的代码
我加了这个delay之后他只会反向 很奇怪。。。
void run(int a,int b,int c,int d) {
analogWrite(6,a);
analogWrite(9,b);
analogWrite(10,c);
analogWrite(11,d);
}
整个代码:
传感器板子
#include <Wire.h>//声明I2C库文件
#define a0 digitalRead(9)
#define a1 digitalRead(8)
#define a2 digitalRead(7)
#define a3 digitalRead(6)
#define a4 digitalRead(5)
#define a5 digitalRead(4)
#define a6 digitalRead(3)
#define a7 digitalRead(10)
#define a8 digitalRead(17)
#define max0 ((a0>=a1)&&(a0>=a2)&&(a0>=a3)&&(a0>=a4)&&(a0>=a5)&&(a0>=a6)&&(a0>=a7))
#define max1 ((a1>=a2)&&(a1>=a3)&&(a1>=a4)&&(a1>=a5)&&(a1>=a6))
#define max2 ((a2>=a1)&&(a2>=a3)&&(a2>=a4)&&(a2>=a5)&&(a2>=a6))
#define max3 ((a3>=a2)&&(a3>=a1)&&(a3>=a5)&&(a3>=a6)&&(a3>=a4))
#define max4 ((a4>=a2)&&(a4>=a1)&&(a4>=a5)&&(a4>=a6)&&(a4>=a3))
#define max5 ((a5>=a1)&&(a5>=a2)&&(a5>=a3)&&(a5>=a4)&&(a5>=a6))
#define max6 ((a6>=a1)&&(a6>=a2)&&(a6>=a3)&&(a6>=a4)&&(a6>=a5))
#define max7 ((a7>=a0)&&(a7>=a1)&&(a7>=a2)&&(a7>=a3)&&(a7>=a4)&&(a7>=a5)&&(a7>=a6))
void setup()
{
Wire.begin();
Serial.begin(9600);
pinMode(10, INPUT);
pinMode(3, INPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
pinMode(6, INPUT);
pinMode(7, INPUT);
pinMode(8, INPUT);
pinMode(9, INPUT);
pinMode(17,INPUT);
trigger();
}
void loop()
{
Wire.beginTransmission(4); //发送数据到设备号为4的从机
if(max3||max4) //
{
Wire.write(1);
}
else if(max5) //
{
Wire.write(2); //turnR
}
else if(max6||max7) //第三个传感器检测到黑线用150的速度左转
{
Wire.write(3); //turnRR
}
else if(max2) //第五个传感器检测到黑线用150的速度右转
{
Wire.write(4); //turnL
}
else if(max1||max0) //第六个传感器检测到黑线用200的速度右转
{
Wire.write(5); //turnLL
}
Wire.endTransmission();
}
void trigger(void)
{
while(!a8);
delay(100);
while(a8);
delay(100);
}
电机板子:
#include <Wire.h>//声明I2C库文件
#define v 6
void run(int a,int b,int c,int d) {
analogWrite(6,a);
analogWrite(9,b);
analogWrite(10,c);
analogWrite(11,d);
}
void receiveEvent(int howMany)
{
char c=Wire.read();
if(c==1)
{
run(10*v,10*v,0,0);
}
else if(c==2)
{
run(3*v,6*v,0,0);
}
else if(c==3)
{
run(8*v,0,0,2*v);
delay(365);
run(8*v,3*v,0,0);
}
else if(c==4)
{
run(6*v,3*v,0,0);
}
else if(c==5)
{
run(0,8*v,2*v,0);
delay(365);
run(3*v,8*v,0,0);
}
}
void setup()
{
pinMode(6, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
Wire.begin(4); // 加入 i2c 总线,设置从机地址为 #4
Wire.onReceive(receiveEvent); //注册接收到主机字符的事件
Serial.begin(9600);
}
void loop()
{
}
两块板子我使用IIC进行交互
传感器
电机 |