[英]Need advise on arduino pump controller
我应该首先说我不是程序员,当你看我猜的代码时会很明显。
我正在制作一个泵 controller,它带有一个源容器和三个从源头填充的容器。
我为容器制作了水位传感器。
如果容器是空的,我希望泵运行,但前提是源容器中有水。
如果当我启动 arduino 时源已经为空,但如果泵在源清空时泵正在运行,它们会继续运行。
这是代码。
//three pumps controlled by relays
//three fans controlled by pwm tip120
//four water level sensors
//----------------------------------------------
//WATER LEVEL SENSORS
//EATCH SENSOR HAS THREE WIRES, TWO LEVELS AND A 5V INPUT.
// water level sensor 1, has two A-inputs
// controlles pump 1
int levelSensor1Low = A0;
int levelSensor1HIGH = A1;
// water level sensor 2, has two A-inputs
// controlles pump 2
int levelSensor2Low = A2;
int levelSensor2HIGH = A3;
// water level sensor 3, has two A-inputs
// controlles pump 3
int levelSensor3Low = A4;
int levelSensor3HIGH = A5;
// water level sensor 4, has two A-inputs
// indicates if source water container is empty
int levelSensor4Low = A6;
int levelSensor4HIGH = A7;
int wls1L;
int wls1H;
int wls2L;
int wls2H;
int wls3L;
int wls3H;
int wls4L;
int wls4H;
int z=90; // If circuit is not displaying correct digit then adjust this value from 100 to 1023 .
//----------------------------------------------
//FANS
// blows on sculpture 1
int fan1 = 5;
// blows on sculpture 2
int fan2 = 6;
// blows on sculpture 3
int fan3 = 7;
//----------------------------------------------
//PUMPS
// fills vaporicer container at sculpture 1
int pump1 = 30;
// fills vaporicer container at sculpture 2
int pump2 = 31;
// fills vaporicer container at sculpture 3
int pump3 = 32;
void setup() {
// put your setup code here, to run once:
pinMode(levelSensor1Low,INPUT);
pinMode(levelSensor1HIGH,INPUT);
pinMode(levelSensor2Low,INPUT);
pinMode(levelSensor2HIGH,INPUT);
pinMode(levelSensor3Low,INPUT);
pinMode(levelSensor3HIGH,INPUT);
pinMode(levelSensor4Low,INPUT);
pinMode(levelSensor4HIGH,INPUT); // defining input pins
pinMode( pump1, OUTPUT);
pinMode( pump2, OUTPUT);
pinMode( pump3, OUTPUT);
pinMode( fan1, OUTPUT);
pinMode( fan2, OUTPUT);
pinMode( fan3, OUTPUT); // defining output pins
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
// Read the state of all the water level sensors
wls1L=analogRead(levelSensor1Low);
wls1H=analogRead(levelSensor1HIGH);
wls2L=analogRead(levelSensor2Low);
wls2H=analogRead(levelSensor2HIGH);
wls3L=analogRead(levelSensor3Low);
wls3H=analogRead(levelSensor3HIGH);
wls4L=analogRead(levelSensor4Low);
wls4H=analogRead(levelSensor4HIGH);
//if source container is empty
if(wls4L<z && wls4H<z)
{
// pumps wont run
// indicator turns on
Serial.println("source container is empty");
delay (1000);
// serial info
}
else
{
//----------------------------------------------
if(wls1L<z && wls1H<z) // if container 1 is empty fill it
{
// run pump 1
digitalWrite(pump1, HIGH);
}
if(wls1L>z && wls1H>z) // if container 1 is full stop pumping
{
// stop pump 1
digitalWrite(pump1, LOW);
}
//----------------------------------------------
if(wls2L<z && wls2H<z) // if container 2 is empty fill it
{
// run pump 2
digitalWrite(pump2, HIGH);
}
if(wls2L>z && wls2H>z) // if container 2 is full stop pumping
{
// stop pump 2
digitalWrite(pump2, LOW);
}
//----------------------------------------------
if(wls3L<z && wls3H<z) // if container 3 is empty fill it
{
// run pump 3
digitalWrite(pump3, HIGH);
}
if(wls3L>z && wls3H>z) // if container 3 is full stop pumping
{
// stop pump 3
digitalWrite(pump3, LOW);
}
//----------------------------------------------
// serial info
Serial.println("WL-sensor1");
Serial.println(wls1L);
Serial.println(wls1H);
Serial.println("WL-sensor2");
Serial.println(wls2L);
Serial.println(wls2H);
Serial.println("WL-sensor3");
Serial.println(wls3L);
Serial.println(wls3H);
Serial.println("WL-sensor4");
Serial.println(wls4L);
Serial.println(wls4H);
delay(1000);
}
}
关于如何解决这个问题的任何想法? 提前致谢。
解决它。
//three pumps controlled by relays
//three fans controlled by pwm tip120
//four water level sensors
//----------------------------------------------
//WATER LEVEL SENSORS
//EATCH SENSOR HAS THREE WIRES, TWO LEVELS AND A 5V INPUT.
// water level sensor 1, has two A-inputs
// controlles pump 1
int levelSensor1Low = A0;
int levelSensor1HIGH = A1;
// water level sensor 2, has two A-inputs
// controlles pump 2
int levelSensor2Low = A2;
int levelSensor2HIGH = A3;
// water level sensor 3, has two A-inputs
// controlles pump 3
int levelSensor3Low = A4;
int levelSensor3HIGH = A5;
// water level sensor 4, has two A-inputs
// indicates if source water container is empty
int levelSensor4Low = A6;
int levelSensor4HIGH = A7;
int wls1L;
int wls1H;
int wls2L;
int wls2H;
int wls3L;
int wls3H;
int wls4L;
int wls4H;
int z=90; // If circuit is not displaying correct digit then adjust this value from 100 to 1023.
int k=0;
//----------------------------------------------
//FANS
// blows on sculpture 1
int fan1 = 5;
// blows on sculpture 2
int fan2 = 6;
// blows on sculpture 3
int fan3 = 7;
//----------------------------------------------
//PUMPS
// fills vaporicer container at sculpture 1
int pump1 = 30;
// fills vaporicer container at sculpture 2
int pump2 = 31;
// fills vaporicer container at sculpture 3
int pump3 = 32;
void setup() {
// put your setup code here, to run once:
pinMode(levelSensor1Low,INPUT);
pinMode(levelSensor1HIGH,INPUT);
pinMode(levelSensor2Low,INPUT);
pinMode(levelSensor2HIGH,INPUT);
pinMode(levelSensor3Low,INPUT);
pinMode(levelSensor3HIGH,INPUT);
pinMode(levelSensor4Low,INPUT);
pinMode(levelSensor4HIGH,INPUT); // defining input pins
pinMode( pump1, OUTPUT);
pinMode( pump2, OUTPUT);
pinMode( pump3, OUTPUT);
pinMode( fan1, OUTPUT);
pinMode( fan2, OUTPUT);
pinMode( fan3, OUTPUT); // defining output pins
Serial.begin(9600);
}
void loop() {
k=0;
// put your main code here, to run repeatedly:
// Read the state of all the water level sensors
wls1L=analogRead(levelSensor1Low);
wls1H=analogRead(levelSensor1HIGH);
wls2L=analogRead(levelSensor2Low);
wls2H=analogRead(levelSensor2HIGH);
wls3L=analogRead(levelSensor3Low);
wls3H=analogRead(levelSensor3HIGH);
wls4L=analogRead(levelSensor4Low);
wls4H=analogRead(levelSensor4HIGH);
//if source container is empty
if(wls4L<z && wls4H<z)
{
// pumps wont run
// indicator turns on
Serial.println("source container is empty");
k=1;
delay (1000);
// serial info
}
//----------------------------------------------
if(wls1L<z && wls1H<z && k<1) // if container 1 is empty fill it
{
// run pump 1
digitalWrite(pump1, HIGH);
}
if(wls1L>z && wls1H>z || k==1) // if container 1 is full stop pumping
{
// stop pump 1
digitalWrite(pump1, LOW);
}
//----------------------------------------------
if(wls2L<z && wls2H<z && k<1) // if container 2 is empty fill it
{
// run pump 2
digitalWrite(pump2, HIGH);
}
if(wls2L>z && wls2H>z || k==1) // if container 2 is full stop pumping
{
// stop pump 2
digitalWrite(pump2, LOW);
}
//----------------------------------------------
if(wls3L<z && wls3H<z && k<1) // if container 3 is empty fill it
{
// run pump 3
digitalWrite(pump3, HIGH);
}
if(wls3L>z && wls3H>z || k==1) // if container 3 is full stop pumping
{
// stop pump 3
digitalWrite(pump3, LOW);
}
//----------------------------------------------
// serial info
Serial.println("WL-sensor1");
Serial.println(wls1L);
Serial.println(wls1H);
Serial.println("WL-sensor2");
Serial.println(wls2L);
Serial.println(wls2H);
Serial.println("WL-sensor3");
Serial.println(wls3L);
Serial.println(wls3H);
Serial.println("WL-sensor4");
Serial.println(wls4L);
Serial.println(wls4H);
Serial.println("k");
Serial.println(k);
delay(1000);
}
添加了另一个 int 如果源为空则更改。 希望这对任何人都有帮助...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.