Hola a todos, soy nuevo en programación de arduino y en estos días con algo mas de tiempo me he animado a empezar con este proyecto. Tras leer bastante y aclarar algunas cosas, me aparece un "problema", que aunque funciona como quiero, me gustaría solucionar.
Para comenzar con este proyecto dispongo de un arduino uno, pantalla 1602A, 2 potenciometros y un modulo de relé.
Este proyecto es para unos aspersores nebulizadores de terraza, los cuales con una electro válvula conectada al relé, y mediante 2 potenciómetros se regula el tiempo en el que esa válvula esta encendida o apagada y los valores de que está encendido o apagado los muestro en el lcd.
El problema que tengo es que la pantalla no me actualiza los datos hasta que se ha cumplido el ciclo completo ya que uso delay para ello, he estado mirando la función millis pero no sé como aplicarla en este caso.
Os adjunto mi programa a ver si veis como puedo solucionarlo.
Un saludo y muchas gracias de antemano.
const int analogPin = A0; //Entrada potenciometro 1
const int analogPin1 = A1; //Entrada potenciometro2
int value;//variable que almacena la lectura analógica potenciometro 1
int value1;// variable que almacena lectura analogica potenciometro 2
int position; //posicion del potenciometro1 en dada en segundo activo
int position1; //posicion del potenciometro2 en dada en segundo activo
int rele = 8 ;
#include <LiquidCrystal.h>
//Declarar LCD y pines
LiquidCrystal lcd(7,6,5,4,3,2);
void setup() {
Serial.begin (9600);
pinMode (rele, OUTPUT);
}
void loop() {
value = analogRead(analogPin); // realizar la lectura analógica raw
position = map(value, 0, 1023, 0, 30); // convertir a segundos el temporizador va de 0 a 30 seg tanto apagado como encendido
value1 = analogRead(analogPin1);
position1 = map(value1, 0, 1023, 0, 30);
delay(100);
//Definir las dimensiones del LCD (16x2)
lcd.begin(16,2);
lcd.setCursor(0,0);
lcd.print("Encendido:");
lcd.setCursor(13,0);
lcd.print(position);
lcd.setCursor(0,1);
lcd.print("Apagado:");
lcd.setCursor(13,1);
lcd.print(position1);
lcd.setCursor(15,0);
lcd.print("s");
lcd.setCursor(15,1);
lcd.print("s");
value = analogRead (analogPin);
value1 = analogRead (analogPin1);
digitalWrite (rele, HIGH);
delay (value*30);
digitalWrite (rele, LOW);
delay (value1*30);
}