Hello everyone. I'm new to the world of arduino. and I want to ask someone for help.
I wrote the code it works well. I just encountered difficulties in applying the LCD Keypad Shield menu to my project. I need the following menu:
so that I can see the values, change the size of the limit and turn on and off the required pins no matter what stage is the loop. would this be feasible?
Thank you.
here is the code what i wrote
#include <Servo.h>
#include <Fsm.h>
#define vent_pin 11 //fan
#define pad_pin 23 //load reley
#define doz_pin 24 //dosage reley
#define siur1_pin 25 //rad pump
#define siur2_pin 26 //weter heater pump
#define pam_pin 27 //mixing valve
#define uzd_pin 28 //igniter
float temp1;
#define temp1_pin A1 //temp of boiler
float temp2;
#define temp2_pin A2 //temp of rad intake
float temp3;
#define temp3_pin A3 //temp of water heater return
#define led_pin 13
#define flame_sensor_pin 29
int flame_pin = HIGH ;
int servo_pin = 22;
void on_doz_on_enter() {
Serial.println("dozavimas ijugtas");
digitalWrite(doz_pin, HIGH);
}
void on_doz_off_enter() {
Serial.println("dozavimas isjungtas");
digitalWrite(doz_pin, LOW);
}
void on_uzd_on_enter() {
Serial.println("uzdegimas ijungtas");
digitalWrite(uzd_pin, HIGH);
}
void on_uzd_off_enter() {
Serial.println("uzdegimas isjungtas");
digitalWrite(uzd_pin, LOW);
}
State state_doz_on(&on_doz_on_enter, NULL);
State state_doz_off(&on_doz_off_enter, NULL);
State state_uzd_on(&on_uzd_on_enter, NULL);
State state_uzd_off(&on_uzd_off_enter, NULL);
Fsm fsm_doz(&state_doz_off);
Fsm fsm_uzd(&state_uzd_off);
Fsm fsm1_doz(&state_doz_off);
Fsm fsm1_uzd(&state_uzd_off);
Fsm fsm2_doz(&state_doz_off);
void setup() {
Serial.begin(230400);
pinMode(doz_pin, OUTPUT);
pinMode(uzd_pin, OUTPUT);
pinMode(vent_pin, OUTPUT);
pinMode(pad_pin, OUTPUT);
pinMode(pam_pin, OUTPUT);
pinMode(siur1_pin, OUTPUT);
pinMode(siur2_pin, OUTPUT);
pinMode(temp1_pin, INPUT);
pinMode(temp2_pin, INPUT);
pinMode(temp3_pin, INPUT);
pinMode(flame_pin, INPUT);
pinMode(led_pin, OUTPUT );
fsm_doz.add_timed_transition(&state_doz_off, &state_doz_on, 5000, NULL);
fsm_doz.add_timed_transition(&state_doz_on, &state_doz_off, 10000, NULL);
fsm_uzd.add_timed_transition(&state_uzd_off, &state_uzd_on, 10000, NULL);
fsm_uzd.add_timed_transition(&state_uzd_on, &state_uzd_off, 7000, NULL);
fsm1_doz.add_timed_transition(&state_doz_off, &state_doz_on, 1000, NULL);
fsm1_doz.add_timed_transition(&state_doz_on, &state_doz_off, 2000, NULL);
fsm1_uzd.add_timed_transition(&state_uzd_off, &state_uzd_on, 0, NULL);
}
void loop() {
flame_pin = digitalRead(flame_sensor_pin) ;
if (flame_pin == HIGH)
{
Serial.println("nera liepsnos");
digitalWrite(led_pin, LOW);
}
else {
digitalWrite(led_pin, HIGH);
Serial.println("LIEPSNA");
digitalWrite (uzd_pin, LOW);
}
temp1 = analogRead (temp1_pin);
temp1 = temp1 * 0.3725;
Serial.println("KATILO TEMPRATURA");//temp of system
Serial.print(temp1);
Serial.println("*C");
temp2 = analogRead(temp2_pin);
temp2 = temp2 * 0.3725;
Serial.println("RADIATORIU TEMPRATURA");//temp of rad intake
Serial.print(temp2);
Serial.println("*C");
temp3 = analogRead (temp3_pin);
temp3 = temp3 * 0.3725;
Serial.println("BOILERIO TEMPRATURA"); //temp of water heater rutern
Serial.print(temp3);
Serial.println("*C");
if (temp1 <= 22 && (flame_pin == HIGH))
{
fsm_doz.check_timer();
fsm_uzd.check_timer();
}
else if (temp1 <= 22 && (flame_pin == LOW))
{
fsm1_doz.check_timer();
fsm1_uzd.check_timer();
}
delay(100);
if (temp1 <= 22)
{
analogWrite (vent_pin, 150);
digitalWrite (pad_pin, HIGH);
Serial.println ("padavimas ijungtas");
}
else if (temp1 >= 22)
{
analogWrite (vent_pin, 0);
digitalWrite (pad_pin, LOW);
digitalWrite (doz_pin, LOW);
digitalWrite (uzd_pin, LOW);
}
delay(100);
if (temp1 > 20)
{
digitalWrite(siur1_pin, HIGH);
}
else
{
digitalWrite (siur1_pin, LOW);
}
delay(100);
if (temp3 > 20 && (temp1 > 20))
{
digitalWrite(siur2_pin, LOW);
}
else if (temp3 < 20 && (temp1 > 20))
{
digitalWrite(siur2_pin, HIGH);
}
delay (100);
if (temp2 < 20)
{
digitalWrite (pam_pin, HIGH);
}
else
{
digitalWrite (pam_pin, LOW);
}
delay(100);
}