Hello to everyone.
After few days of fighting with this got here to get some advice.
I'm working on control panel to control relays and display actual function.
All main idea of control panel is to trigger relay for specific time which is adjustable by variable resistor, then to trigger other relay for same time after delay , all may look like this :
Start button > time delay variable 5s -5min>relay1 on for 0,2-2s> time delay variable 5s -5min>relay2 on for 0,2-2s> time delay variable 5s -5min>relay3 on for 0,2-2s> etc
Code which i build dose it all but have to much delay to stop cycle or re adjust time, simply delay function blocking it all.
Thought about using mills function but don't understand that yet.
Hope someone will be able to help me with it.
Thanks
#include <Wire.h>
#include <LiquidCrystal_I2C.h> // spec crystal
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE); //LCD ADRESS
const int rel1Pin = 2;
const int rel2Pin = 3;
const int rel3Pin = 4;
const int rel4Pin = 5;
const int rel5Pin = 6;
const int rel6Pin = 7;
const int motorPin = 8;
const int cycPin = 9;
const int buzPin = 13;
unsigned long time;
void setup(){
Serial.begin(9600);
pinMode(10, INPUT);
pinMode(11, INPUT_PULLUP); // start button
pinMode(12, INPUT_PULLUP); //stop button
lcd.begin(20,4);
lcd.setCursor(2,0);
lcd.print("System Start Up");
pinMode(ledPin, OUTPUT);
pinMode(rel1Pin, OUTPUT);
pinMode(rel2Pin, OUTPUT);
pinMode(rel3Pin, OUTPUT);
pinMode(rel4Pin, OUTPUT);
pinMode(rel5Pin, OUTPUT);
pinMode(rel6Pin, OUTPUT);
pinMode(motorPin, OUTPUT);
pinMode(cycPin, OUTPUT);
pinMode(buzPin, OUTPUT);
digitalWrite(rel1Pin, HIGH);
digitalWrite(rel2Pin, HIGH);
digitalWrite(rel3Pin, HIGH);
digitalWrite(rel4Pin, HIGH); //all off
digitalWrite(rel5Pin, HIGH);
digitalWrite(rel6Pin, HIGH);
digitalWrite(motorPin, HIGH);
digitalWrite(cycPin, HIGH);
digitalWrite(buzPin, HIGH);
delay(1000);
lcd.setCursor(8,1);
lcd.print("Test");
digitalWrite(rel1Pin, LOW);
delay(10);
digitalWrite(rel1Pin, HIGH);
delay(500);
digitalWrite(rel2Pin, LOW);
delay(10);
digitalWrite(rel2Pin, HIGH);
delay(500);
digitalWrite(rel3Pin, LOW);
delay(10);
digitalWrite(rel3Pin, HIGH);
delay(500);
digitalWrite(rel4Pin, LOW);
delay(10);
digitalWrite(rel4Pin, HIGH);
delay(500);
digitalWrite(rel5Pin, LOW);
delay(10);
digitalWrite(rel5Pin, HIGH);
delay(500);
digitalWrite(rel6Pin, LOW);
delay(10);
digitalWrite(rel6Pin, HIGH);
delay(1000);
lcd.setCursor(6,2);
lcd.print("Complete");
delay(2000);
lcd.setCursor(0,0);
lcd.print(" ");
lcd.setCursor(1,0);
lcd.print(" System ON");
lcd.setCursor(1,1);
lcd.print("Pulse Time ");
lcd.setCursor(1,2);
lcd.print("Daley Time");
lcd.setCursor(1,3);
lcd.print("Motor Temp");
}
void loop() {
int sensorVal3 = digitalRead(11);
Serial.println(sensorVal3);
int sensorVal4 = digitalRead(12);
Serial.println(sensorVal4);
int sensorReading = analogRead(A0);
// map
int delayTime1 = map(sensorReading, 0, 100, 200, 1000);
int sensorReading1 = analogRead(A1);
// map
int delayTime2 = map(sensorReading1, 0, 1023, 100, 1000);
// read the input on analog pin 0:
int sensorValue1 = analogRead(A0);
// print out the value
lcd.setCursor(12,2);
lcd.print(sensorValue1);
delay(1); // delay in between reads for stability
// read the input on analog pin 1:
int sensorValue2 = analogRead(A1);
// print out the value
lcd.setCursor(12,1);
lcd.print(sensorValue2);
delay(1); // delay in between reads for stability
if(sensorVal3 == LOW){ // HOLD UP ON FUNCTION TO WORK IN LOOP
digitalWrite(buzPin, LOW);
delay(500);
digitalWrite(buzPin, HIGH);
delay(100);
digitalWrite(buzPin, LOW);
delay(20);
digitalWrite(buzPin, HIGH);
delay(100);
digitalWrite(motorPin, LOW);
digitalWrite(cycPin, LOW);
lcd.setCursor(0,0);
lcd.print(" ");
delay(50);
lcd.setCursor(1,0);
lcd.print("ON");
lcd.setCursor(1,1);
lcd.print("Pulse Time ");
lcd.setCursor(1,2);
lcd.print("Daley Time");
lcd.setCursor(1,3);
lcd.print("Motor Temp");
digitalWrite(rel1Pin, LOW);
delay(delayTime2);
digitalWrite(rel1Pin, HIGH);
delay(delayTime1);
digitalWrite(rel2Pin, LOW);
delay(delayTime2);
digitalWrite(rel2Pin, HIGH);
delay(delayTime1);
digitalWrite(rel3Pin, LOW);
delay(delayTime2);
digitalWrite(rel3Pin, HIGH);
delay(delayTime1);
digitalWrite(rel4Pin, LOW);
delay(delayTime2);
digitalWrite(rel4Pin, HIGH);
delay(delayTime1);
digitalWrite(rel5Pin, LOW);
delay(delayTime2);
digitalWrite(rel5Pin, HIGH);
delay(delayTime1);
digitalWrite(rel6Pin, LOW);
delay(delayTime2);
digitalWrite(rel6Pin, HIGH);
delay(delayTime1);
}
if(sensorVal4 == LOW){ // SWICH off
digitalWrite(buzPin, LOW);
delay(200);
digitalWrite(buzPin, HIGH);
delay(100);
digitalWrite(buzPin, LOW);
delay(20);
digitalWrite(buzPin, HIGH);
delay(100);
digitalWrite(motorPin, HIGH);
digitalWrite(cycPin, HIGH);
lcd.setCursor(0,0);
lcd.print(" ");
delay(5);
lcd.setCursor(1,0);
lcd.print(" OFF");
lcd.setCursor(1,1);
lcd.print("Pulse Time ");
lcd.setCursor(1,2);
lcd.print("Daley Time");
lcd.setCursor(1,3);
lcd.print("Motor Temp");
}
if(digitalRead(10) == LOW){ // start button
lcd.setCursor(1,0);
lcd.print("ON");
lcd.setCursor(1,1);
lcd.print("Pulse Time ");
lcd.setCursor(1,2);
lcd.print("Daley Time");
lcd.setCursor(1,3);
lcd.print("Motor Temp");
digitalWrite(rel1Pin, LOW);
delay(delayTime2);
digitalWrite(rel1Pin, HIGH);
delay(delayTime1);
digitalWrite(rel2Pin, LOW);
delay(delayTime2);
digitalWrite(rel2Pin, HIGH);
delay(delayTime1);
digitalWrite(rel3Pin, LOW);
delay(delayTime2);
digitalWrite(rel3Pin, HIGH);
delay(delayTime1);
digitalWrite(rel4Pin, LOW);
delay(delayTime2);
digitalWrite(rel4Pin, HIGH);
delay(delayTime1);
digitalWrite(rel5Pin, LOW);
delay(delayTime2);
digitalWrite(rel5Pin, HIGH);
delay(delayTime1);
digitalWrite(rel6Pin, LOW);
delay(delayTime2);
digitalWrite(rel6Pin, HIGH);
delay(delayTime1);
}
}