opinión sobre el planteo de un proyecto

Hola a todos!,

Hace no mas de un mes y medio que me hice de un Arduino UNO, eso de llevar algo de lo virtual hacia lo real esta bastante bueno, personalmente, con un par de ciclos y leds, cambió en este poco tiempo mi percepción sobre el funcionamiento de los aparatos electronicos.

En fin, cuando te encuentras en esta situación en la que vienes aprendiendo sobre algo que es nuevo, y donde hay una colaboración extendida, desinteresada y accesible, uno podría saturar el foro con preguntas inabordables y de caracter muy particular, es decir, que no puedan ser usadas en provecho de la mayoría.

Es por eso que queria disponer de esta instancia, para ver que opinan de la utilidad de plantear un proyecto que cubra estos conceptos, que se trataron en el foro, pero que por su desarrollo en este contexto podría abrir otras puertas:

  • interrupciones
  • manejo de botones
  • lcd
  • salir un poco del ide de arduino

Para eso pensé en algo como cambiar la hora y los minutos de un reloj Ds3231 en este orden:

  • Realizando una interrupción: Utilizando el pin 2 con un botón que active la interrupción al ser pulsado (creo que le llaman pull-down).
  • Asignando un valor a una variable dentro de la interrupción, que se mantenga después de la interrupción.
  • Que esa variable lleve a una función donde se pueda cambiar la hora, ¿por que no dentro de la misma interrupción?, para usar la despreciada función delay().
  • Que dentro de la función para cambiar la hora se encuentren desactivadas la interrupción asignada al pin 2.
  • Que el pin 2 sea redefinido como entrada (para utilizar, de forma caprichosa, el mismo boton).
  • Que la posibilidad de interrupción se vuelva a activar despues de cambiar la hora.
  • Mostrar en un lcd 16x2.

Les pregunto porque todavía no me queda clara la delimitación de las posibilidades de arduino, por ahí podrían detectar con su experiencia, si un proyecto de estas características tiene futuro.

Saludos!

Lo que planteas para mi es un absurdo (cito):

Para eso pensé en algo como cambiar la hora y los minutos de un reloj Ds3231 en este orden:

Realizando una interrupción: Utilizando el pin 2 con un botón que active la interrupción al ser pulsado (creo que le llaman pull-down).
Asignando un valor a una variable dentro de la interrupción, que se mantenga después de la interrupción.
Que esa variable lleve a una función donde se pueda cambiar la hora, ¿por que no dentro de la misma interrupción?, para usar la despreciada función delay().
Que dentro de la función para cambiar la hora se encuentren desactivadas la interrupción asignada al pin 2.
Que el pin 2 sea redefinido como entrada (para utilizar, de forma caprichosa, el mismo boton).
Que la posibilidad de interrupción se vuelva a activar despues de cambiar la hora.
Mostrar en un lcd 16x2.

Usar una interrupción para modificar un reloj RTC, para qué?
No hace falta usar una ISR para eso.
Usas un botón y todo lo demás lo realizas sin problemas.
Casi como que no estoy de acuerdo con los 6 primeros puntos que planteas. EL lcd si.

Ademas es un tema ampliamente hecho, en muchos tutoriales de internet. No plantea problemas.
Pones Arduino DS3331 y seguramente encuentras como usar el RTC, como ponerlo en hora, como modificarlo, como ver la hora en un LCD paralelo, un LCD i2c, un LCD tipo TFT, etc. Con UNO, con MEGA, con DUE.

Solo que la mayoría no sabe buscar, por no haber leido lo básico de las normas del FORO donde dice que antes de preguntar busques en internet o en este foro.

Si no estas de acuerdo te desafío (con buen humor) a que busques lo que digo y dime si no encuentras un tutorial completo con lo que planteas pero claro sin Interrupción.

Sin ofender pero si alguien estudia electrónica, jamas plantearía usar una interrupción para accionar un botón que termine actualizando un modulo autónomo.

Ejemplo de esto que digo es este tutorial para el DS1307 pero lo modificas facilmente para el DS3231

Acá un ejemplo como te había adelantado con TFT y el DS3231 modificable via Serial

Hola surbyte!,

Gracias por los enlaces (el último esta roto, aunque me llevo a leer sobre TFT, que no conocía) , habia tenido la oportunidad de ver unos bastante similares hace no mucho y tal como dices, hay varios dando vueltas.

Sin ofender pero si alguien estudia electrónica, jamas plantearía usar una interrupción para accionar un botón que termine actualizando un modulo autónomo.

Y una vez que se monto un sistema cualquiera, que dependa de los parámetros guardados en el modulo autónomo, que esos parametros varíen ocasionalmente (por el mismo módulo como en DS1307, o por el exterior) y que montados en un sistema tengas que ajustar esos parametros porque el sistema depende del buen ajuste, ¿como se podría plantear esa modificación?.

Usar una interrupción para modificar un reloj RTC, para qué?

Se me ocurrio que dentro de un sistema, podrias estar manejando un "while" o un "for" o un "sleep" en alguna parte del mismo, si no es con una interrupcion, entonces tendría que esperar a que el ciclo o retardo termine, y no se, puedo marcar con un led cuando me habilite para apretar un boton, para cambiar las cosas en el modulo autonómo, pero no me termina de cerrar esa opción ¿existirá alguna otra?

...tambien puedo "escuchar" al pin del boton en cada iteración de todos los ciclos (algo que sería "muuuuuy" entretenido... y también "muy" reciclable, en el sentido que todas las funciones tendrían que mirar en algún momento al boton: saco a la función del sistema -> me viene con un boton de regalo...).

A mi se me ocurrio usar interrupciones, porque lei que podria ser util para alarmas, pulsadores o encoders.

Por eso planteo el proyecto, de forma vaga, en esta zona de Humor y Debate, para ver si puede ser afinado de manera tal de poder aprender lo mas posible de ese proceso, con el espíritu de hacer un código reutilizable para el control de mas de un sistema.

Re:
Gracias por los enlaces (el último esta roto, aunque me llevo a leer sobre TFT, que no conocía)

Reparado.

Y una vez que se monto un sistema cualquiera, que dependa de los parámetros guardados en el modulo autónomo, que esos parametros varíen ocasionalmente (por el mismo módulo como en DS1307, o por el exterior) y que montados en un sistema tengas que ajustar esos parametros porque el sistema depende del buen ajuste, ¿como se podría plantear esa modificación?.

Te respondo a la inversa. Presionas el boton para ajustar una hora, cuanto demoras en hacerlo? Mucho. Asi que da igual que uses un pulsador que tarde 50 mseg.
O acaso ya tienes el ajuste listo?

Se me ocurrio que dentro de un sistema, podrias estar manejando un "while" o un "for" o un "sleep" en alguna parte del mismo, si no es con una interrupcion, entonces tendría que esperar a que el ciclo o retardo termine, y no se, puedo marcar con un led cuando me habilite para apretar un boton, para cambiar las cosas en el modulo autonómo, pero no me termina de cerrar esa opción ¿existirá alguna otra?

No entiendo que planteas. El rtc es un reloj como el reloj digital que llevamos todos. Esta todo el día registrando el tiempo al compas de un Cristal que en el caso del DS3231 es bastante exacto.
Al momento que decidas cambiar digamos 1 segundo, pues haces como todos, preparas la hora min seg pero te sincronizas cuando tu ajuste coincide con la hora que usas como elemento a comparar.

A mi se me ocurrio usar interrupciones, porque lei que podria ser util para alarmas, pulsadores o encoders.
Por eso planteo el proyecto, de forma vaga, en esta zona de Humor y Debate, para ver si puede ser afinado de manera tal de poder aprender lo mas posible de ese proceso, con el espíritu de hacer un código reutilizable para el control de mas de un sistema.

Las interrupciones si son para encoders, si son para situaciones no previstas y que cuando ocurren debo medir algo o leer un sensor para medir RPM por ejemplo.
Espero que te sirva esta explicación.

Si, ahora lo termino de entender!,

lo que pasó fue que tenía un error conceptual con el tema del tiempo, uno puede pasarse mucho tiempo implementando un código, y se olvida que el microcontrolador funciona a alta velocidad (para las operaciones que se suelen escribir en este sistema), y ese era mi problema, pensaba que se podría pasar mucho tiempo procesando parte del código y que necesitaría una interrupción para sacarlo de ahi,

y claro, armé la propuesta bajo ese concepto, ahora que la leo, veo que no tiene mucho sentido,

Gracias por la ayuda.

Ni te imaginas las cosas que puede hacer el mas simple de los Arduinos y ni hablar de un DUE.

Bien que otro aspecto quieres debatir?