源代码
int TrigPin4 = 8; //对超声波模块4的输出=8号引脚
int TrigPin1 = 6; //对超声波模块1的输出=6号引脚
int TrigPin2 = 4; //对超声波模块2的输出=4号引脚
int TrigPin3 = 2; //对超声波模块3的输出=2号引脚
int EchoPin4 = 9; //对超声波模块4的输入=9号引脚
int EchoPin1 = 7; //对超声波模块1的输入=7号引脚
int EchoPin2 = 5; //对超声波模块2的输入=5号引脚
int EchoPin3 = 3; //对超声波模块3的输入=3号引脚
int controlPin4=11;//对继电器输出=11号引脚
int val;
void setup()
{
Serial.begin(9600); //频率
pinMode(TrigPin4, OUTPUT);
pinMode(EchoPin4, INPUT);
pinMode(controlPin4,OUTPUT);
pinMode(TrigPin1, OUTPUT);
pinMode(EchoPin1, INPUT);
pinMode(TrigPin2, OUTPUT);
pinMode(EchoPin2, INPUT);
pinMode(TrigPin3, OUTPUT);
pinMode(EchoPin3, INPUT);
}
void loop1()
{
int a;
a=loop2(0);
digitalWrite(TrigPin1, LOW); //低高低电平发一个短时间脉冲去TrigPin
delayMicroseconds(2);
digitalWrite(TrigPin1, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin1,LOW);
digitalWrite(TrigPin2, LOW); //低高低电平发一个短时间脉冲去TrigPin
delayMicroseconds(2);
digitalWrite(TrigPin2, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin2,LOW);
digitalWrite(TrigPin3, LOW); //低高低电平发一个短时间脉冲去TrigPin
delayMicroseconds(2);
digitalWrite(TrigPin3, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin3,LOW);
int cm1 =float(pulseIn(EchoPin1, HIGH)*17) / 1000; //将回波时间换算成cm
cm1 = (int(cm1 * 100.0)) / 100.0; //保留两位小数
Serial.println(cm1); //输出距离值1
Serial.println("cm1");
delay(300);////测超声波模块1
int cm2 =float(pulseIn(EchoPin2, HIGH)*17) / 1000; //将回波时间换算成cm
cm2 = (int(cm2 * 100.0)) / 100.0; //保留两位小数
Serial.println(cm2); //输出距离值2
Serial.println("cm2");////测超声波模块2
int cm3 =float(pulseIn(EchoPin3, HIGH)*17) / 1000; //将回波时间换算成cm
cm3 = (int(cm3 * 100.0)) / 100.0; //保留两位小数
Serial.println(cm3); //输出距离值3
Serial.println("cm3");////测超声波模块3
if (5<=cm1)
{
if (5<=cm2)
{
if (5<=cm3)
{
digitalWrite(controlPin4, LOW);//低电频不出水
delay(20);
}
else
{
digitalWrite(controlPin4,HIGH);//超声波模块3高电频出水
if(a=5)
{
digitalWrite(TrigPin4, LOW);//超声波模块4判断3停水
}
}
}
else
{
digitalWrite(controlPin4,HIGH);//超声波模块2高电频出水
if(a=3)
{
digitalWrite(TrigPin4, LOW);//超声波模块4判断2停水
}
}
}
else
{
digitalWrite(controlPin4,HIGH);//超声波模块1高电频出水
if(a=1)
{
digitalWrite(TrigPin4, LOW);//超声波模块4判断1停水
}
}
}
int loop2(int a)
{
digitalWrite(TrigPin4, LOW); //低高低电平发一个短时间脉冲去TrigPin
delayMicroseconds(2);
digitalWrite(TrigPin4, HIGH);
delayMicroseconds(10);
digitalWrite(TrigPin4,LOW);
int cm4 =float(pulseIn(EchoPin4, HIGH)*17) / 1000; //将回波时间换算成cm
cm4 = (int(cm4 * 100.0)) / 100.0; //保留两位小数
Serial.println(cm4); //输出距离值
Serial.println("cm4");
delay(300);
if(cm4>=10){
a=0;//判断超声波模块1继续出水
}
if(cm4<10){
a=1;//判断超声波模块1停水
}
if(cm4>=15){
a=2;//判断超声波模块2继续出水
}
if(cm4<15){
a=3;//判断超声波模块2停水
}
if(cm4>=20){
a=4;//判断超声波模块3继续出水
}
else if(cm4<20){
a=5;//判断超声波模块3停水;
}
return a;
}