Que comando se usa para guardar un dato modificado

Hola tengo casi listo mi menú pero me falta el comando para guardar un valor.
La idea es ver estos valores en el lcd y modificalos y guardarlos

la linea 77 tiene los valores por defecto que se usan

 //conversion seria 60xHrs=660 la misma tabla para los demas parametros Hr_ //
// Ej    11:00 Hrs      60x11 =660
 int Hr_IniAmanLA=660, Hr_FinAmanLA=720, Hr_IniAnochLA=1260, Hr_FinAnochLA=1380, Inten_MaxLA=250;

lo cual realizando la división del valor en el ej. 660/60=11 se hace mas entendible visualmente

linea 558 esta parte del menu

void openSubLuzBlanco() 
 {
      static int value;

      value = (Hr_IniAmanLB / 60);
      modif_val_aux1("Ini Amanecer", &value, 0, 23);

hasta aquí veo el valor (lcd) y lo puedo modificar pero tengo que guardarlo en el formato original

La pregunta como le digo guarde el valor seleccionado multiplicado por 60

algo como ¿.........................? (value * 60);

El código no es una hermosura pero funciona y con mis casi nulos conocimientos esta bien a evolucionado desde que empese con este es un control de iluminacion de acuario con encoder

Nota: No soy programador solo un viejo que le gusta meter las manos así que paciencia soy mas acuarista

adjunto el sketch

PruebMenu_Enco.ino (17.8 KB)

Hola. No, no tienes casi listo tu menú. Tampoco tu lámpara de acuario. Lo que tienes es un código tomado de la página de giltesa.com y lo has destruido queriendo adaptarlo a lo que tu crees que necesitas.

El autor de ese código ha creado una estructura de datos para guardarlos en la memoria eeprom, que tu has modificado y que no son los parámetros de Hora Inicio, Hora Fin.

Yo también hice una lámpara de acuario y dividí el día de 0 a 1439 minutos pero.... si tu has pensado solo en la opción Inicio Amanecer -> value 0 a 23 quiere decir que encenderás o apagarás la lampara a hora exacta por lo cual no se entiende porque las horas las divides y multiplicas por 60 si resulta mejor almacenar 0 a 23 hs que 720 o 1260.

La verdad es que lo haces así porque intentas adaptarte el menú que tomaste en internet.
También me suena equivocado lo que llamas Hora-inicio/fin-amanececer-luz-azul o luz-blanca.
Creo entender que quieres tener mas de un periodo de iluminación diario, uno para fotosíntesis y otro de luz de luna. Entonces sería algo así: Sol_Minuto_Inicio y Sol_Minuto_Fin, Luna_Minuto_Inicio y Luna_Minuto_Fin. Luego dentro de ese rango de horas enciendes los canales que tu quieras y depende del diseño de hardware. Yo hice 4 canales. Rojo, Azul, Frío y Neutro.

SI quieres te doy un mano para hacer tu lámpara pero la tienes que hacer de código cero para que la entiendas y puedas ir modificando con el tiempo. Saludos

Dejo un video por si la quieres ver. También controla por hora la válvula del CO2 y el calefactor donde se puede (si se quiere) poner una temperatura para el día y una un poco inferior para la noche.

gracias por tu respuesta

Si el código es giltesa.com con la modificacion echa por el del reloj para modificar el horario, que el amablemente realizó, la parte del dimeo funciona actual mente en mi acuario sin encoder ni menús el de la imagen

el modo de dimeo es mas omenos asi, 2 canales uno blanco (mezcla de led calidos frios y otros) y otro azul ( azules)

donde Antonio Castro explico en el mensaje 47 Para manejar el dimeo necesitas un dato entero que represente el momento del día en que te encuentras en cada momento.

Podemos usar el segundo del día cuyo valor máximo sería=246060=86400

de lo cual en el esquema uso el minuto.

la parte Inicio Amanecer -> value 0 a 23 , es solo para verla en el lcd (mas entendible a la vista)en el momento que desee modificar el horario y no tener que calcular en que hora esta, por eso transformo este valor no se si se entiende algo

ej: Quiero que el Amanecer comience a las 10 hrs , en el programa sin modificar aparecería 600 en el lcd
si no enmascaro el valor, que es lo que hago al dividirlo por 60.

Al enmascararlo en el lcd se ve 10 que es mas legible, pero no quiero que guarde el 10 sino el valor que le corresponde o sea 600.

A todo esto mi acuario es un marino.

Ahora si tienes tiempo y paciencia me gustaría tener esa ayuda
Atento a cualquier cosa

No entiendo porque la luz azul debe iniciar antes y terminar después de la luz blanca. ¿Cual es el sentido de esto?

¿Y que pasa con ese foro de acuarios, no tienen resuelto ya el tema con un código y hardware que funcione?

En el marino se usa mas tonos azulados resalta colores de los corales. Inicia con el azul de 0 a 250 el pwm simula el amanecer entre las 11 y 12 luego se mantiene hasta las 21 y comienza a disminuir de 250 a 0 hasta las 23 donde podria decirse que estaria luz luna (falsa)

Lo del foro iba bien encaminado la persona que estaba guiando se maneja muy bien pero tenia sus proyectos (CAO, ACUARIO CONTROLADO POR ORDENADOR) presento 3 versiones y ademas todos querían algo diferente o estaban adelantados y preguntando por sus proyectos, y el respondía y explicaba, los que no entendíamos (los nuevos en arduino) nos quedamos algo colgados con la mezcla de información. Los códigos que presento no se acomodaban a lo que quería.

Al principio no me interesaba que tuviera botones, encoder, etc. solo pantalla simple y sencillo pero en abril hubo cambio de hora y me hizo pensar que si necesitaba algo ya que para cambiar hora tendria que desmontar la pantalla para acceder al arduino, botones no muchas perforaciones o si una no me quedaba alineada, entonces encoder una perforación

ahora estoy probando esto en mi circuito de prueba puce que apague a las 24hrs por defecto era a las 11hrs son las 23:10 y no se a apagado esperando

value = (Hr_FinAnochLA / 60);
modif_val_aux1("Fin Anochecer", &value, 1, 24);
Hr_FinAnochLA = (value * 60);

Hagamos el siguiente trato. Yo te paso un comienzo para que estudies, lo pruebes, y luego le vas agregando lo nuevo que iré pasando. Tendrás que documentar el proyecto, fotos, plano del circuito, materiales, librerías etc. Yo solo me encargaré el código y haremos el modelo que ya tengo. Con tres canales pwm y quien quiera podrá fácilmente agregar un cuarto.
Con un control de temperatura DS18B20 para manejar el calefactor. Un módulo de relay doble. Uno para el calefactor y otro para quienes tienen la válvula de Co2. Lo que no se usa se desactiva del menú.

He cambiado pines y librerías por lo tanto debes observar el incio del skech para ver los pines.

El RTC deberá ser si o si un DS3231 y el display un 20x4 con módulo I2C. Por supuesto e encoder rotatorio con pulsador.

Cunado mi hermana me pidió una lámpara para su acuario vine aquí y otros sitios y no había nada hecho decentemente. Por lo tanto dejemos algo que los próximos usuarios puedan entender o al menos copiar todo el proyecto.

¿Tenemos el trato? Si la respuesta es si, lo ideal sería iniciar un nuevo hilo correctamente titulado .

PruebMenu_Enco.ino (9.79 KB)

OK, acepto el trato, te mando un mp para la planificación