/* Hello Wokwi! */
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 20, 4);
int val1;// reads the value of the potentiometer (value between 0 and 1023)
int val2;
int val3;
void setup() {
lcd.init();
lcd.backlight();
//setup potentiometers
val1 = analogRead(A0);
val1 = map(val1, 0, 1023, 0, 60);
val2 = analogRead(A1);
val2 = map(val2, 0, 1023, 0, 60);
val3 = analogRead(A2);
val3 = map(val3, 0, 1023, 0, 60);
// setup buttons
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
// setup labels
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
Serial.begin(9600);
}
void setTimers() {
// get pontetiometers values
int analog1 = analogRead(A0);
analog1 = map(analog1, 0, 1023, 0, 60);
int analog2 = analogRead(A1);
analog2 = map(analog2, 0, 1023, 0, 60);
int analog3 = analogRead(A2);
analog3 = map(analog3, 0, 1023, 0, 60);
String message = "";
// if first potentiomenter value change prelare message
if (val1 != analog1) {
message = String("1st timer: " + String(val1) + "s");
val1 = analog1;
}
if (val2 != analog2) {
val2 = analog2;
message = String("2nd timer: " + String(val2) + "s");
}
if (val3 != analog3) {
val3 = analog3;
message = String("3rd timer: " + String(val3) + "s");
}
if (message.length() != 0) {
lcd.print(message);
}
}
void startProcess() {
startPhase1();
startPhase2();
startPhase3();
}
void startPhase1() {
digitalWrite(8, HIGH);
delay(val1*1000);
digitalWrite(8, LOW);
}
void startPhase2() {
digitalWrite(9, HIGH);
delay(val2*1000);
digitalWrite(9, LOW);
}
void startPhase3() {
digitalWrite(10, HIGH);
delay(val3*1000);
digitalWrite(10, LOW);
}
void stop() {
digitalWrite(10, LOW);
digitalWrite(9, LOW);
digitalWrite(8, LOW);
}
void loop() {
setTimers();
if (digitalRead(5) == LOW) {
stop();
lcd.print("Stop Process");
}
if (digitalRead(2) == LOW) {
startProcess();
lcd.print("Start Process");
}
if (digitalRead(3) == LOW) {
startPhase2();
lcd.print("Button Phase 2 Press");
}
if (digitalRead(4) == LOW) {
startPhase3();
lcd.print("Button Phase 3 Press");
}
delay(100);
lcd.clear();
}